AndroidManifest – уникальный информационный файл приложения, который в последующем будет использоваться операционной системой и Google play.
Где найти манифест?
AndroidManifest.xml находится в корне исходного набора проекта: src/main.
Для чего манифест?
Основные назначения манифеста:
- Задает имя пакета для приложения
- Содержит описания всех Android-компонентов приложения. Об Android-компонентах можно почитать в предыдущей статье
- Определяет, в каких процессах будут работать компоненты приложения
- Определяет, какие разрешения необходимо предоставить приложению
- Определяет минимальную версию Android, на котором сможет работать приложение
Также манифест может содержать другие менее известные вещи: Intent-фильтры, иконку приложения, список библиотек, с которыми связано приложение и т.д.
Как выглядит обычная структура манифеста?
<manifest>
<uses-permission />
<uses-sdk />
<application>
<activity>
<intent-filter>
<action />
<category />
<data />
</intent-filter>
<meta-data />
</activity>
<service>
<intent-filter></intent-filter>
<meta-data />
</service>
<receiver>
<intent-filter></intent-filter>
<meta-data />
</receiver>
<provider>
<grant-uri-permission />
<meta-data />
<path-permission />
</provider>
</application>
</manifest>
Обязательными элементами являются только лишь manifest и application. При этом, данные элементы можно указать только один раз.
Почему мы должны добавлять в манифест Android-компоненты?
Разберём на примере Activity. Если посмотреть на структуру манифеста, можно заметить тэг intent-filter. Говоря простыми словами, внутри intent-filter находится информация для операционной системы о том, является ли Activity точкой входа в приложение, сможет ли Activity запускаться из браузера и т.п. Кроме того, в манифесте можно указать тип запуска Activity, может ли Activity быть запущена другими приложениями и т.д. Исходя из этого можно сделать вывод, что добавлять Android-компоненты в манифест нужно:
- для информирования системы о том, сколько компонентов в приложении, что каждый из них делает. Представьте, насколько сложно было бы системе сканировать весь apk, чтобы найти там каждый из Android-компонентов?
- для корректного доступа к компоненту
- для настроек компонента