0Pricing
Android Academy · Lesson

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 layouts
  • res/drawable/ — images and icons
  • res/values/strings.xml — text strings
  • res/values/colors.xml — color definitions
  • res/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 against
  • minSdk — oldest Android version you support
  • targetSdk — the Android version you've tested against
  • versionCode — integer that increments with each release
  • versionName — 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 layout
  • R.id.tvTitle — a view inside a layout
  • R.string.app_name — a string resource
  • R.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
  • R class — 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.

All lessons in this course

  1. Project Structure & Manifest
  2. Activities & Lifecycle
  3. Layouts & Views
  4. Handling User Input
  5. Intents & Navigation
  6. Fragments
  7. Permissions & Runtime Requests
← Back to Android Academy