Sitemap
Shashi Shekhar Mishra

Shashi Shekhar Mishra

From App to APK: Understanding Your Android Project Structure.

4 min readJul 16, 2025
Press enter or click to view image in full size

“When I started learning Android App Development As a beginner, the Android Studio project structure felt like a Trek in the Dense Equatorial Rain Forest — I could see the trees (MainActivity.kt) ,Shrubs( values.xml), Mashrooms(drawable) etc.
But I had no idea what hid behind the ‘build.gradle’ or what ‘res’ even meant.But as I moved forward and forward; It felt like coding and Trekking at the same time.”

Press enter or click to view image in full size
Project structure(Left)

A typical Android Studio Project Structure looks just like above image.
We have app folder that contains manifests, kotlin+java, res folders.
Gradle Scripts is another section consisting build.gradle.kts, gradle.properties and many more important files. Let’s explore each folder and file one by one.

In this article, we are going to learn about Android Manifest files.

Manifests Folder contains Android Manifests files (AndroidManifest.xml).
Manifest (noun): A document listing the contents, intentions, or declarations of something.

Press enter or click to view image in full size
Android Manifest File

AndroidManifest is the blueprint or manifest document of your app — without it, the Android system won’t know how to launch or interact with your app.It’s a required file in every project.
Let’s understand line by line.

<?xml version=”1.0" encoding = “utf-8”?>
“<?…?>” =
These are XML parsers , a kind of syntax.
encoding=”utf-8” specifies character encoding. UTF is Unicode Transformation Format. It helps in reading special type of characters. eg: नमस्ते, 🌸 etc.

Get Shashi Shekhar Mishra’s stories in your inbox

Join Medium for free to get updates from this writer.

<manifest xmlns:android=”http://schemas.android.com/apk/res/android"
xmlns
stands for XML Namespace.
Imagine 2 students in class with same name as Rakesh. What differentiate them is their surnames.
android is the namespace prefix. It identifies attributes which belong to Android(eg: android:name, android:label).

The <application> tag in the Android manifest defines global settings and components of your app.
Everything related to the app itself — like the app icon, name, theme, activities, services, and receivers — goes inside this tag.
We are going to learn about these tags seperately accodring to usage in upcoming articles.

In the previous article, at the end, We saw the First Screen of our app.
This Screen was presented due to declaration of our Activity class in AndroidManifest.xml file.

Press enter or click to view image in full size
activity tag

The Activity class is defined like this in AndroidManifest.xml file inside application Tag.
“ . ” denotes the main package in which our activity is located. In our app, it’s in package name com.tech.warrantytrack. So it will look like either “.MainActivity” or “com.tech.warrantytrack.warrantytrack”.
exported=true or false
decides if this activity can be accessed via other apps or user action.

Let’s assume you have a photo in your phone’s gallery. Now you want to share it with someone. You will simply select that photo and share it on on that individual’s whatsApp chat screen.
*Please pay attention to the below line.*
Here the whatsApp chat screen’s exported tag in AndroidManifest.xml (which looks like android:exported=””) will be set to true.
So we are basically accessing WhatsApp via some other app(photo gallery in our case).
The above case is one case.
Another case
for android:exported=”” to be true or false is that, when you try to open your app by simply clicking on the app icon, the app will open only when .MainActivity’s android:exported=”” is set to true. Otherwise the app will not launched.
We are going to see more usecases in upcoming articles.

And now, Our final part of the AndroidManifest.xml is <intent-filter> tag.

intent-filter tag

The <intent-filter> tag contains multiple tags such as action, category, data etc.
In this particular case, .MAIN in <action android:name=” ”> tag, defines that .MainActivity is the entry-point of the App.
.LAUNCHER in <action android:category=” ”> tag, defines that this activity will be shown in your Android Phone’s Apps Menu in the form of launcher icon.(you will Just click and access it.)

So far, we have seen various components/tags of android manifest file.
we can say that the AndroidManifest.xml acts as the contract between your app and the Android system, defining components, permissions, and the boundaries of interaction for a secure and structured application lifecycle.
We are going to delve deeper in our Rain Forest and explore more flora-fauna (use-cases)😀.

Stay tuned…
LinkedIn, Medium

--

--