Что такое AndroidManifest.xml, его структура и элементы

AndroidManifest.xml
— это один из самых важных файлов в проекте Android. Этот файл служит для описания метаданных приложения, определяя его ключевые компоненты, разрешения, необходимые для работы, и другие параметры, которые используются операционной системой Android для управления жизненным циклом приложения.
Основные элементы структуры AndroidManifest.xml
-
Корневой элемент
<manifest>
:- Атрибуты:
package
: Указывает имя пакета приложения.android:versionCode
: Уникальный номер версии приложения, который увеличивается с каждой новой версией.android:versionName
: Человекочитаемая строка, обозначающая версию приложения.
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.myapp" android:versionCode="1" android:versionName="1.0">
- Атрибуты:
-
Элемент
<application>
: Описывает приложение в целом. Включает ссылки на ресурсы, темы, иконки и компоненты приложения (активности, службы, провайдеры контента и т.д.).- Атрибуты:
android:icon
: Указывает на иконку приложения.android:label
: Указывает на строку с названием приложения.android:theme
: Определяет тему оформления.android:allowBackup
: Определяет возможность резервного копирования данных приложения.android:supportsRtl
: Указывает, поддерживает ли приложение RTL (right-to-left) макеты.
<application android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" android:allowBackup="true" android:supportsRtl="true">
- Атрибуты:
-
Элементы
<activity>
: Описывают экраны (активности) приложения. Каждая активность должна быть объявлена вAndroidManifest.xml
. Активности могут включать различные атрибуты, такие как метаданные, действия и категории.- Важные атрибуты:
android:name
: Имя класса активности.android:label
: Заголовок активности.android:exported
: Указывает, может ли активность запускаться другими приложениями.android:launchMode
: Определяет, как активности будут запускаться (например,singleTop
,singleTask
).
<activity android:name=".MainActivity" android:label="@string/app_name" android:exported="true"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity>
- Важные атрибуты:
-
Элементы
<service>
: Службы описываются в этом элементе и используются для выполнения долгих операций в фоне (например, загрузка файлов или обработка данных).- Важные атрибуты:
android:name
: Имя класса службы.android:exported
: Определяет, может ли служба быть доступна другим приложениям.
<service android:name=".MyService" android:exported="false" />
- Важные атрибуты:
-
Элементы
<receiver>
: Используются для описания компонентов, которые могут получать широковещательные сообщения (broadcasts). Обычно это сообщения системы или других приложений.- Важные атрибуты:
android:name
: Имя класса приёмника.
<receiver android:name=".MyBroadcastReceiver"> <intent-filter> <action android:name="android.intent.action.BOOT_COMPLETED" /> </intent-filter> </receiver>
- Важные атрибуты:
-
Элементы
<provider>
: Описывают поставщиков контента, которые позволяют приложениям делиться данными между собой.- Важные атрибуты:
android:name
: Имя класса провайдера.android:authorities
: Уникальные идентификаторы, по которым этот провайдер может быть доступен.
<provider android:name=".MyContentProvider" android:authorities="com.example.myapp.provider" android:exported="false" />
- Важные атрибуты:
Разрешения в AndroidManifest.xml
Приложению могут требоваться различные разрешения для выполнения задач (например, доступ к интернету, к камере, к данным пользователя). Разрешения запрашиваются с помощью элемента <uses-permission>
.
Важные примеры разрешений:
- Доступ в интернет:
<uses-permission android:name="android.permission.INTERNET" />
- Доступ к камере:
<uses-permission android:name="android.permission.CAMERA" />
- Доступ к местоположению:
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
Пример полного файла AndroidManifest.xml
:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.myapp"
android:versionCode="1"
android:versionName="1.0">
<!-- Разрешения -->
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<!-- Описание приложения -->
<application
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme"
android:allowBackup="true"
android:supportsRtl="true">
<!-- Главная активность приложения -->
<activity android:name=".MainActivity"
android:label="@string/app_name"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<!-- Служба -->
<service android:name=".MyService"
android:exported="false" />
<!-- Приёмник -->
<receiver android:name=".MyBroadcastReceiver">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
</intent-filter>
</receiver>
</application>
</manifest>
Основные компоненты:
- Активности (
<activity>
): Экраны и пользовательские интерфейсы. - Службы (
<service>
): Фоновые операции. - Приёмники (
<receiver>
): Обработка широковещательных сообщений. - Провайдеры (
<provider>
): Управление доступом к данным.
AndroidManifest.xml
— важный файл, который связывает разные компоненты приложения и определяет их взаимодействие с системой.