android-kotlin
/

Android Manifest – The Application Identity

Last Sync: Today

On this page

6
0%
5 min read
Remaining
5 minleft

Click any section to jump — progress syncs automatically

android-kotlin

Android Manifest – The Application Identity

The Role of the Manifest

Every Android app must have an AndroidManifest.xml file at the root of its source set. It provides essential information to the Android build tools, the Android OS, and Google Play. As an Architect, you use the Manifest to define the 'Surface Area' of your app—what it can do, what it needs from the device, and how other apps can interact with it.

  1. Essential Manifest Elements

The Manifest is a structured XML document. The root <manifest> tag defines the package name, while the <application> tag contains all the components and global settings like the app icon and theme.

XMLRead-only
1
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.revochamp.app">

    <application
        android:label="Revochamp"
        android:icon="@mipmap/ic_launcher"
        android:theme="@style/LaunchTheme">
        
        
        
    </application>
</manifest>

  1. Declaring Permissions

Permissions are declared outside the <application> tag. In 2026, Android follows a strict 'Least Privilege' model. You must declare 'Normal' permissions (like Internet) and 'Dangerous' permissions (like Camera) here. Dangerous permissions also require a runtime request in your Kotlin or Dart code.

XMLRead-only
1

<uses-permission android:name="android.permission.INTERNET" />


<uses-permission android:name="android.permission.CAMERA" />

  1. Activities and Intent Filters

Every screen (Activity) must be declared. The most important one is the MainActivity (the Flutter Runner), which contains an Intent Filter marking it as the 'Main' entry point that appears in the app launcher.

XMLRead-only
1
<activity
    android:name=".MainActivity"
    android:exported="true">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
    
    
    <intent-filter android:autoVerify="true">
        <action android:name="android.intent.action.VIEW" />
        <category android:name="android.intent.category.DEFAULT" />
        <category android:name="android.intent.category.BROWSABLE" />
        <data android:scheme="https" android:host="revochamp.com" android:pathPrefix="/template" />
    </intent-filter>
</activity>

  1. Metadata and Queries

Modern Android (API 30+) requires the <queries> tag if your app needs to interact with other specific apps on the device (e.g., sharing a generated UI to WhatsApp). Additionally, <meta-data> tags are used to provide API keys or configuration flags for third-party libraries like Firebase or Google Maps.

Manifest Comparison: Role vs. Implementation

FeatureManifest TagPurpose
App Identitypackage="..."Unique ID for the Play Store
Permissions<uses-permission>Requests access to system features
Entry Point<intent-filter>Defines how the app is launched
Hardware<uses-feature>Filters devices that don't have specific hardware (e.g., NFC)
Stylingandroid:themeSets the global native look and feel
Securityandroid:exportedControls if other apps can launch an Activity

Test Your Knowledge

Q1
of 3

Which tag is used to request access to the device's Location or Camera?

A
<permission>
B
<uses-permission>
C
<request-feature>
D
<access-control>
Q2
of 3

Where should the intent-filter for the main launcher activity be placed?

A
Inside the <manifest> tag
B
Inside the <application> tag
C
Inside the specific <activity> tag
D
Inside the <intent> tag
Q3
of 3

What is the purpose of the 'android:label' attribute in the application tag?

A
It defines the internal package name
B
It sets the name of the app displayed to the user
C
It names the main Java/Kotlin class
D
It is used for SEO in the Play Store only

Frequently Asked Questions

What does 'android:exported' mean?

It determines whether a component (like an Activity or Service) can be started by components of other applications. For your Launch activity, it must be 'true'. For internal private screens, it should be 'false' to prevent unauthorized access.

How do I handle hardware requirements in Revochamp?

Use the '<uses-feature>' tag. For example, if your AI builder requires a camera to function, setting 'android:required="true"' will prevent the Play Store from showing the app to users whose devices don't have a camera.

Can I have multiple manifests in one project?

Yes. If you have multiple modules or 'Build Variants' (like free vs. pro), each can have its own manifest. The 'Manifest Merger' tool automatically combines them into a single final manifest during the build process.

Previous

android project structure

Next

android activity

Related Content

Need help?

Explore our comprehensive docs or start a chat with our tech experts.