Разработка для Android

просмотр манифеста · Декларации вместе с их связями

Вставьте текст XML: анализ начнётся через 350 мс. Отключите автоматический режим для запуска кнопкой или Ctrl/Cmd+Enter.

просмотр манифеста

XML манифеста

Результат анализа

Вставьте текст AndroidManifest.xml или загрузите пример.

Ввод обрабатывается в этой вкладке браузера и не отправляется на сервер.

Параметры

Проверяются только объявления в этом XML. Исходный текст, пробелы и ссылки на ресурсы сохраняются; параметры сборки и поведение при выполнении не оцениваются.

Вставьте текст AndroidManifest.xml или загрузите пример.

Неожиданное разрешение в сборке или ошибка установки часто требуют вернуться к настройкам приложения. Просмотр манифеста помогает разделить запросы разрешений, их определения и компоненты. Каждый фильтр остаётся связан со своим компонентом, а номер строки ведёт к исходному фрагменту XML.

Исходный файл и объединённый манифест отражают разные этапы сборки. Для проверки выпуска используйте итоговый или декодированный XML. Ссылки на ресурсы и подстановки остаются видимыми: отсутствие контекста сборки не превращается в придуманное значение параметра.

Чем полезен просмотр манифеста

Не терять владельца фильтра

Просмотр манифеста отделяет uses-permission от permission и группирует компоненты по типу. Два фильтра intent одной Activity сохраняют собственные действия, категории и атрибуты data. Поэтому условие запуска через значок можно сравнить с обработкой веб-ссылки без смешивания соседних деклараций.

Узлы дерева манифеста соединены с отдельными карточками разрешений, компонентов и фильтров intent.

Проверять условие каждого замечания

Отсутствие exported оценивается по числовому целевому SDK. Если он неизвестен, вместо однозначной ошибки выводится условное пояснение. Замечания сохраняют строку источника. Явное debuggable=true предлагает проверить настройки выпуска, а отсутствие замечаний не выдаётся за доказательство безопасности.

Компонент с фильтром intent связан с отметкой, указывающей на недостающую декларацию exported.

Выберите нужный этап и полный результат

01

Начните с подходящего документа

Gradle может заменить SDK, а библиотека — добавить разрешения Android. Для проверки выпуска сначала получите окончательный манифест. Ссылка @string/app_name или подстановка требует отдельного ресурса либо настройки сборки; этот инструмент не угадывает её значение.

02

Управляйте обновлением

После изменения текста или отступа автоматический режим ждёт 350 мс. Отключите его для запуска через Ctrl/Cmd+Enter. Пока результат устарел, копирование и скачивание недоступны. Переключение между сводкой, XML и JSON меняет только представление.

03

Не путайте показанное с экспортируемым

Копирование из сводки возвращает полный JSON, как и режим JSON, даже если список показывает только первые 50 записей. Из режима XML копируется форматированный XML. Пример и очистка требуют просмотра замены с числом символов; однократная отмена возвращает ввод и результат вместе.

Исходные значения и проверяемые связи

Атрибуты приложения и SDK

Сводка показывает manifest, uses-sdk и application. Отсутствующие поля не заполняются, ссылки на ресурсы остаются строками. Относительное имя .MainActivity не расширяется через package: полное имя класса зависит также от namespace в конфигурации сборки.

Типы разрешений и компонентов

Отчёт различает uses-permission, uses-permission-sdk-23 и permission, сохраняя maxSdkVersion, protectionLevel и другие атрибуты. Извлекаются activity, activity-alias, service, receiver и provider непосредственно внутри application. Повторяющиеся декларации не удаляются и не объединяются.

Ограниченные правила с номерами строк

Проверяются число application, отсутствующие имена, порядок SDK, фильтры без action и неверная привязка префикса android. Числовой targetSdkVersion от 31 включает проверку отсутствующего exported у Activity, псевдонимов, служб и приёмников с фильтрами. Для provider это правило не применяется.

XML с сохранением текста и полный JSON

Два или четыре пробела добавляют отступы контейнерам без непосредственного текста. Имеющиеся пробелы, комментарии и смешанное содержимое сохраняются. Списки раскрываются ещё на 50 записей; JSON включает все атрибуты, связи, строки и замечания независимо от показанного количества.

Чего нельзя установить по одному файлу

Только текстовый манифест XML
Нужен документ XML 1.0 с корнем manifest без пространства имён. Допустимы кодировки UTF-8, UTF8 либо отсутствие объявления. APK, двоичный AXML и AAB сначала декодируются средствами Android. Импорта файлов и загрузки по URL здесь нет.
Без объединения и разрешения ресурсов
Инструмент не выполняет Gradle, директивы tools:, таблицы ресурсов и подстановки. SDK могут измениться при сборке. Отсутствующая целевая версия не заменяется предположением, а относительное имя компонента не дополняется значением package.
Имеющийся текст важнее новых отступов
Переводы строк и пробелы между тегами тоже являются текстом XML. Поддерево с непосредственным текстом, CDATA или сохранением пробелов остаётся прежним. Выбор четырёх пробелов поэтому может не изменить вид. Создаётся отдельный результат без изменения ввода и без канонизации XML.
Замечания не заменяют аудит
Объявленное разрешение не доказывает фактическую выдачу доступа, а exported=true — наличие уязвимости. allowBackup показывается как исходный атрибут. Реальная политика резервного копирования, сетевая проверка App Links, запуск intent, полный Android Lint и испытания на устройстве не входят в анализ.
Ограничения размера и структуры
Ввод допускает 500 000 кодовых единиц UTF-16, 20 000 узлов и глубину 100. Вывод XML и JSON ограничен отдельно: по 2 000 000 единиц. Некоторые символы занимают две единицы. Превышение останавливает обработку и не позволяет выгрузить частичный результат.
Без автоматического исправления
Ошибка синтаксиса содержит строку и столбец: исправьте ввод и повторите анализ. DOCTYPE отклоняется; внешние сущности и адреса пространств имён не загружаются. Удалять разрешение или выбирать значение exported нужно с учётом назначения приложения, поэтому таких автоматических правок нет.

Вопросы про просмотр манифеста

Как прочитать AndroidManifest.xml из APK?

Внутри APK этот файл обычно представлен двоичным AXML. Получите читаемый XML через APK Analyzer в Android Studio или apkanalyzer manifest print, затем вставьте его сюда. Переименование APK в ZIP открывает доступ к файлу, но не декодирует содержимое.

Почему Google Play сообщает об отсутствии android:exported?

Для приложений с целью Android 12 и выше Activity, службы и приёмники с фильтрами должны явно задавать exported. Здесь проверяются и псевдонимы Activity. При числовой цели от 31 отсутствие отмечается как ошибка, при неизвестной цели даётся условное пояснение. Выбирать true или false нужно по назначению компонента.

Чем uses-permission отличается от permission?

uses-permission запрашивает доступ через уже существующее разрешение. permission определяет разрешение, которым можно защищать собственные компоненты или операции. Отчёт разделяет эти типы, но не показывает, какие запросы пользователь действительно разрешил на устройстве.

Откуда в объединённом манифесте появляются дополнительные разрешения?

Их может добавить библиотека или другой набор исходников при объединении. По одному итоговому документу страница не восстанавливает происхождение каждой записи. Откройте Merged Manifest в Android Studio и отчёт объединения, чтобы найти исходный файл.

Чем отличаются minSdkVersion и targetSdkVersion?

minSdkVersion задаёт минимальный уровень API для установки, а targetSdkVersion — целевое поведение платформы. Здесь значения читаются из предоставленного XML. Gradle может задать или заменить их, поэтому для выводов о выпуске нужно проверить итоговую сборку и поведение на устройстве.

Декларация или её строка определена неверно?

Разберите декларации на примере

Просмотр манифеста на примере помогает отличить запрос разрешения от его определения и вернуться по номеру строки к компоненту без exported.