Зачем нужен Android Манифест
Что проверяют
Понимаете ли вы манифест как контракт приложения с системой и магазином, а не как файл, куда дописывают разрешения. Следом часто спрашивают про android:exported, слияние манифестов и о том, почему разрешения в манифесте бывает недостаточно.
Как отвечать
Система читает манифест при установке и узнаёт из него, что есть в приложении и что ему можно.
- компоненты:
<activity>,<service>,<receiver>,<provider>. Незарегистрированную активити или сервис запустить нельзя, исключение только уBroadcastReceiver, зарегистрированного в коде черезregisterReceiver; - intent-filter: какие интенты принимает компонент.
MAINиLAUNCHERдают иконку в лаунчере,VIEWс<data>открывает диплинки. ПриtargetSdk31 и выше у компонента с фильтром обязателен явныйandroid:exported, иначе приложение не установится; - разрешения:
<uses-permission>. Опасные, как камера или геолокация, с Android 6 ещё и запрашиваются в рантайме, а уведомления с Android 13 требуютPOST_NOTIFICATIONS; - видимость пакетов: с Android 11 чужие приложения видны только через
<queries>; - требования к устройству:
<uses-feature>фильтрует выдачу в Google Play; - настройки приложения: класс
Application, тема,networkSecurityConfig, для foreground-сервисов с Android 14 обязательныйforegroundServiceType.
Что в манифесте уже не пишут: package, версии и уровни SDK. namespace, applicationId, versionCode и minSdk задаются в Gradle и подставляются при сборке.
В APK попадает не ваш файл, а результат слияния с манифестами библиотек и вариантов сборки. Его видно на вкладке Merged Manifest в Android Studio, а правят через tools:node="remove" или tools:replace.
Где спотыкаются
Думают, что строки <uses-permission> хватает для камеры. Без запроса в рантайме приложение получит SecurityException.
Не смотрят итоговый манифест. Библиотека тихо добавляет чувствительное разрешение, и в Play Console приходится заполнять декларацию или объяснять его на ревью.
Ставят android:exported="true" всем подряд. Такой компонент сможет запустить любое приложение с произвольными данными, это прямой путь к уязвимости.