Android Manifest Flashcards
What is the actual use of Android Manifest
The manifest file describes essential information about your app to the Android build tools, the Android operating system, and Google Play.
android manifest file has package name
this is same as namespace
The Android build tools use this to determine the location of code entities when building your project. When packaging the app, the build tools replace this value with the application ID from the Gradle build files, which is used as the unique app identifier on the system and on Google Play
components
The components of the app, which include all activities, services, broadcast receivers, and content providers. Each component must define basic properties such as the name of its Kotlin or Java class. It can also declare capabilities such as which device configurations it can handle, and intent filters that describe how the component can be started.
permissions
The permissions that the app needs in order to access protected parts of the system or other apps. It also declares any permissions that other apps must have if they want to access content from this app.
h/w and s/w requirements
The hardware and software features the app requires, which affects which devices can install the app from Google Play.
package name
For example, the following snippet shows the root element with the package name “com.example.myapp”:
...
While building your app into the final application package (APK), the Android build tools use the package attribute for two things:
It applies this name as the namespace for your app's generated R.java class (used to access your app resources). Example: With the above manifest, the R class is created at com.example.myapp.R.
2nd
It uses this name to resolve any relative class names that are declared in the manifest file. Example: With the above manifest, an activity declared as is resolved to be com.example.myapp.MainActivity.
APk
However, beware that, once the APK is compiled, the package attribute also represents your app’s universally unique application ID. After the build tools perform the above tasks based on the package name, they replace the package value with the value given to the applicationId property in your project’s build.gradle file (used in Android Studio projects). This final value for the package attribute must be universally unique because it is the only guaranteed way to identify your app on the system and in Google Play.
App components
for each subclass of Activity. for each subclass of Service. for each subclass of BroadcastReceiver. for each subclass of ContentProvider.
If you subclass any of these components without declaring it in the manifest file, the system cannot start it.
Intent Filters
App activities, services, and broadcast receivers are activated by intents. An intent is a message defined by an Intent object that describes an action to perform, including the data to be acted upon, the category of component that should perform the action, and other instructions.
When an app issues an intent to the system, the system locates an app component that can handle the intent based on intent filter declarations in each app’s manifest file. The system launches an instance of the matching component and passes the Intent object to that component. If more than one app can handle the intent, then the user can select which app to use.
An app component can have any number of intent filters (defined with the element), each one describing a different capability of that component.
Icons and Labels
A number of manifest elements have icon and label attributes for displaying a small icon and a text label, respectively, to users for the corresponding app component.
In every case, the icon and label that are set in a parent element become the default icon and label value for all child elements. For example, the icon and label that are set in the element are the default icon and label for each of the app’s components (such as all activities).
The icon and label that are set in a component’s are shown to the user whenever that component is presented as an option to fulfill an intent. By default, this icon is inherited from whichever icon is declared for the parent component (either the or element), but you might want to change the icon for an intent filter if it provides a unique action that you’d like to better indicate in the chooser dialog
User Permissions
Beginning with Android 6.0 (API level 23), the user can approve or reject some app permisions at runtime. But no matter which Android version your app supports, you must declare all permission requests with a element in the manifest. If the permission is granted, the app is able to use the protected features. If not, its attempts to access those features fail.
The element allows you to declare hardware and software features your app needs. For example, if your app cannot achieve basic functionality on a device without a compass sensor, you can declare the compass sensor as required with the following manifest tag:
...
Each successive platform version often adds new APIs not available in the previous version. To indicate the minimum version with which your app is compatible, your manifest must include the tag and its minSdkVersion attribute.
However, beware that attributes in the element are overridden by corresponding properties in the build.gradle file. So if you’re using Android Studio, you must specify the minSdkVersion and targetSdkVersion values there instead:
android {
defaultConfig {
applicationId ‘com.example.myapp’
// Defines the minimum API level required to run the app. minSdkVersion 15
// Specifies the API level used to test the app. targetSdkVersion 28
... } }