Project Structure & Manifest
Understand the Android project layout, the role of build.gradle, resources, and the AndroidManifest.xml file that declares your app to the OS.
Project Structure & Manifest is a free Android Academy lesson on CoddyKit — lesson 1 of 7. You can read the complete lesson below for free — then practise it hands-on in the browser with a built-in code editor and a 24/7 AI tutor. It is part of the Android Academy learning path, one of 7 lessons in the course, and your progress syncs across the web and the CoddyKit app.
Your First Android Project
When you create a new Android project in Android Studio, it generates a specific folder structure. Understanding this structure is the first step to productive Android development.
Every Android app has the same top-level layout — let's explore it.
Top-Level Structure
An Android project has two main modules:
- app/ — your app module (code, resources, manifest)
- Gradle files — build system configuration
Inside app/src/main/ you'll spend most of your time:
- java/ (or kotlin/) — your Kotlin source files
- res/ — layouts, images, strings
- AndroidManifest.xml — the app's configuration file
The res/ Directory
The res/ folder holds all non-code resources:
res/layout/— XML screen layoutsres/drawable/— images and iconsres/values/strings.xml— text stringsres/values/colors.xml— color definitionsres/mipmap/— app launcher icons
Android generates a class called R so you can reference resources in code.
AndroidManifest.xml
The AndroidManifest.xml is the most important config file. It tells Android:
- The app's package name (unique identifier)
- Which Activities exist
- Which Activity is the launch screen
- Permissions the app needs (camera, internet, etc.)
- Minimum and target Android API levels
Manifest Structure
A minimal AndroidManifest.xml looks like this:
<!-- AndroidManifest.xml -->
<manifest
xmlns:android="http://schemas.android.com/apk/res/android">
<uses-permission
android:name="android.permission.INTERNET" />
<application
android:label="@string/app_name"
android:icon="@mipmap/ic_launcher">
<activity android:name=".MainActivity"
android:exported="true">
<intent-filter>
<!-- This is the launch activity -->
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>build.gradle Files
Gradle is the build system. There are two build.gradle files:
- Project-level — global settings, repository config
- App-level (app/build.gradle) — your app's dependencies, SDK versions, plugins
You add libraries here: implementation "com.google.code.gson:gson:2.10.1"
Key app/build.gradle Fields
The most important fields in app/build.gradle:
compileSdk— which Android API to compile againstminSdk— oldest Android version you supporttargetSdk— the Android version you've tested againstversionCode— integer that increments with each releaseversionName— human-readable version (e.g. "1.2.0")
The R Class
Android auto-generates a class R that maps every resource to an integer ID:
R.layout.activity_main— your XML layoutR.id.tvTitle— a view inside a layoutR.string.app_name— a string resourceR.drawable.ic_logo— an image
This is how your Kotlin code connects to XML resources.
strings.xml for Localization
Always put user-visible text in res/values/strings.xml instead of hardcoding it. This enables localization — Android automatically picks the right language string based on the device's locale.
Example: create res/values-tr/strings.xml for Turkish translations.
Quick Check
Where do you declare which Activity is shown when the app first launches?
Recap: Project Structure
You now understand an Android project's anatomy:
- app/src/main/kotlin/ — your code
- app/src/main/res/ — layouts, images, strings
- AndroidManifest.xml — permissions, activities, launch config
- build.gradle — dependencies and SDK versions
Rclass — bridges code and resources
Next: the heart of every Android screen — Activities and their lifecycle.
Frequently asked questions
Is the “Project Structure & Manifest” lesson free?
Yes — the full text of “Project Structure & Manifest” is free to read here on the web, and the Android Academy course includes 7 lessons in total. To practise it interactively (a built-in code editor and a 24/7 AI tutor) and unlock the rest of the Android Academy course, upgrade to CoddyKit PRO.
What will I learn in “Project Structure & Manifest”?
Understand the Android project layout, the role of build.gradle, resources, and the AndroidManifest.xml file that declares your app to the OS. You practise Android Academy with hands-on code you run directly in the browser, and a 24/7 AI tutor answers your questions as you work through the lesson.
Do I need any experience to start Android Academy?
No prior experience is required. Android Academy on CoddyKit is structured for beginners through advanced learners; this is — lesson 1 of 7, so you can start here or from the beginning and move at your own pace.
How long does the “Project Structure & Manifest” lesson take?
Most CoddyKit lessons take about 5–10 minutes. Each one is bite-sized and interactive, so you make steady progress and pick up exactly where you left off across the web and the app.
Can I write and run code in this Android Academy lesson?
Yes. Every Android Academy lesson includes a built-in code editor, so you write and run real code right in your browser and get instant AI feedback — no local setup required.