Bird
Raised Fist0
Android Kotlinmobile~20 mins

Project structure (app, gradle, manifests) in Android Kotlin - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Project Structure Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
🧠 Conceptual
intermediate
2:00remaining
Identify the role of the app module in an Android project
In an Android project, what is the primary purpose of the app module folder?
AIt contains the source code, resources, and configuration files for the Android application.
BIt manages the build scripts and dependencies for the entire project including all modules.
CIt holds only the manifest files for all modules in the project.
DIt stores the global Gradle wrapper files used by all modules.
Attempts:
2 left
💡 Hint
Think about where you write your Kotlin code and place your images or layouts.
❓ ui_behavior
intermediate
2:00remaining
What happens if you change the applicationId in build.gradle?
If you change the applicationId in the app/build.gradle file, what is the effect when you run the app?
AThe app's UI layout will change automatically to match the new ID.
BThe app updates the existing app on the device regardless of the ID.
CThe app will fail to build due to a missing manifest file.
DThe app installs as a new, separate app on the device with the new ID.
Attempts:
2 left
💡 Hint
Think about how Android identifies apps uniquely on a device.
❓ lifecycle
advanced
2:30remaining
Order of manifest merging in Android projects
When building an Android app, the final AndroidManifest.xml is created by merging multiple manifests. Which is the correct order of priority from highest to lowest during this merge?
A4, 2, 1, 3
B1, 4, 2, 3
C4, 1, 2, 3
D3, 2, 1, 4
Attempts:
2 left
💡 Hint
Build variants and flavors can override app module settings.
📝 Syntax
advanced
2:00remaining
Identify the correct Gradle dependency syntax
Which of the following is the correct way to add the Kotlin standard library dependency in the app/build.gradle file?
Aimplementation "org.jetbrains.kotlin:kotlin-stdlib:1.8.0"
Bimplementation 'org.jetbrains.kotlin:kotlin-stdlib:1.8.0'
Ccompile 'org.jetbrains.kotlin:kotlin-stdlib:1.8.0'
Dcompile "org.jetbrains.kotlin:kotlin-stdlib:1.8.0"
Attempts:
2 left
💡 Hint
Modern Gradle uses 'implementation' with single quotes for dependencies.
🔧 Debug
expert
3:00remaining
Why does the app crash on startup after manifest change?
You changed the android:name attribute in the application tag of your AndroidManifest.xml to a custom Application class but the app crashes immediately on launch. What is the most likely cause?
AThe custom Application class does not extend <code>android.app.Application</code>.
BThe custom Application class is not declared in the <code>build.gradle</code> file.
CThe custom Application class is missing a default constructor.
DThe <code>android:name</code> attribute must be set in the <code>activity</code> tag, not <code>application</code>.
Attempts:
2 left
💡 Hint
The system expects a specific base class for the Application attribute.

Practice

(1/5)
1. What is the main purpose of the app folder in an Android project?
easy
A. It stores the build configuration files.
B. It contains the app's source code and resources.
C. It holds the Android system files.
D. It contains the device emulator settings.

Solution

  1. Step 1: Understand the app folder role

    The app folder is where you put your app's code and resources like images and layouts.
  2. Step 2: Differentiate from other folders

    Build files like build.gradle are outside or inside app but serve different purposes; system files are not in app.
  3. Final Answer:

    It contains the app's source code and resources. -> Option B
  4. Quick Check:

    App folder = source code and resources [OK]
Hint: App folder = your app's code and resources [OK]
Common Mistakes:
  • Confusing build files with app folder contents
  • Thinking system files are inside app folder
  • Mixing emulator settings with project structure
2. Which file in an Android project declares the app's components and permissions?
easy
A. build.gradle
B. proguard-rules.pro
C. settings.gradle
D. AndroidManifest.xml

Solution

  1. Step 1: Identify the manifest file role

    The AndroidManifest.xml file describes app components like activities and permissions.
  2. Step 2: Compare with other files

    build.gradle handles build settings, settings.gradle manages modules, and proguard-rules.pro is for code shrinking rules.
  3. Final Answer:

    AndroidManifest.xml -> Option D
  4. Quick Check:

    Manifest = app components and permissions [OK]
Hint: Manifest file = app components and permissions [OK]
Common Mistakes:
  • Confusing build.gradle with manifest
  • Thinking settings.gradle declares permissions
  • Mixing ProGuard rules with app declarations
3. Given this snippet from build.gradle inside the app folder, what will happen if you add a new dependency incorrectly?
dependencies {
    implementation 'androidx.core:core-ktx:1.9.0'
    implementation 'com.google.android.material:material:1.7.0'
}
medium
A. The app will build successfully with all dependencies.
B. The app will run but crash at runtime due to missing classes.
C. The build will fail due to a syntax error in dependencies.
D. The build will ignore the incorrect dependency and continue.

Solution

  1. Step 1: Understand dependency syntax

    Dependencies must be declared with correct syntax like implementation 'group:name:version'. Any syntax error causes build failure.
  2. Step 2: Consequence of incorrect dependency

    If a dependency line is malformed, Gradle will fail to build and show an error, not ignore it or allow runtime crashes.
  3. Final Answer:

    The build will fail due to a syntax error in dependencies. -> Option C
  4. Quick Check:

    Incorrect dependency syntax = build failure [OK]
Hint: Syntax errors in build.gradle cause build failure [OK]
Common Mistakes:
  • Assuming build ignores syntax errors
  • Thinking runtime crashes happen from build errors
  • Confusing dependency syntax with code syntax
4. You added a new permission in AndroidManifest.xml but the app crashes on launch. What is a likely cause?
medium
A. The permission tag is outside the manifest root element.
B. The build.gradle file is missing the permission.
C. The app folder is empty.
D. The emulator does not support permissions.

Solution

  1. Step 1: Check manifest XML structure

    All permission tags must be inside the root <manifest> element. Placing them outside causes XML errors and app crashes.
  2. Step 2: Understand build.gradle and emulator roles

    Permissions are declared only in manifest, not build.gradle. Emulators support permissions normally.
  3. Final Answer:

    The permission tag is outside the <manifest> root element. -> Option A
  4. Quick Check:

    Permissions must be inside manifest root [OK]
Hint: Permission tags must be inside <manifest> root [OK]
Common Mistakes:
  • Adding permissions in build.gradle
  • Ignoring XML structure errors
  • Blaming emulator for permission issues
5. You want to add a new module to your Android project. Which files/folders must you update or create to integrate it properly?
hard
A. Create a new folder for the module, add a build.gradle for it, and update settings.gradle to include it.
B. Add the module folder inside app and update AndroidManifest.xml only.
C. Create a new folder and add dependencies in app/build.gradle only.
D. Add the module folder anywhere and no other changes are needed.

Solution

  1. Step 1: Create module folder and build file

    Each module needs its own folder and build.gradle to define its build settings.
  2. Step 2: Update settings.gradle

    The settings.gradle file must include the new module so Gradle knows to build it.
  3. Final Answer:

    Create a new folder for the module, add a build.gradle for it, and update settings.gradle to include it. -> Option A
  4. Quick Check:

    New module = folder + build.gradle + settings.gradle update [OK]
Hint: New module needs folder, build.gradle, and settings.gradle update [OK]
Common Mistakes:
  • Only updating AndroidManifest.xml
  • Adding module inside app folder incorrectly
  • Forgetting to update settings.gradle
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard