Android aapt androidmanifest xml

Файл манифеста AndroidManifest.xml

Файл манифеста AndroidManifest.xml предоставляет основную информацию о программе системе. Каждое приложение должно иметь свой файл AndroidManifest.xml. Редактировать файл манифеста можно вручную, изменяя XML-код или через визуальный редактор Manifest Editor (Редактор файла манифеста), который позволяет осуществлять визуальное и текстовое редактирование файла манифеста приложения.

Назначение файла

  • объявляет имя Java-пакета приложения, который служит уникальным идентификатором;
  • описывает компоненты приложения — деятельности, службы, приемники широковещательных намерений и контент-провайдеры, что позволяет вызывать классы, которые реализуют каждый из компонентов, и объявляет их намерения;
  • содержит список необходимых разрешений для обращения к защищенным частям API и взаимодействия с другими приложениями;
  • объявляет разрешения, которые сторонние приложения обязаны иметь для взаимодействия с компонентами данного приложения;
  • объявляет минимальный уровень API Android, необходимый для работы приложения;
  • перечисляет связанные библиотеки;

Общая структура манифеста

Файл манифеста инкапсулирует всю архитектуру Android-приложения, его функциональные возможности и конфигурацию. В процессе разработки приложения вам придется постоянно редактировать данный файл, изменяя его структуру и дополняя новыми элементами и атрибутами.

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

Описание

Элемент является корневым элементом манифеста. По умолчанию Eclipse создает элемент с четырьмя атрибутами:

Атрибуты

объявляет разрешение, которое используется для ограничения доступа к определенным компонентам или функциональности данного приложения. В этой секции описываются права, которые должны запросить другие приложения для получения доступа к вашему приложению. Приложение может также защитить свои собственные компоненты (деятельности, службы, приемники широковещательных намерений и контент-провайдеры) разрешениями. Оно может использовать любое из системных разрешений, определенных Android или объявленных другими приложениями, а также может определить свои собственные разрешения.

android:name название разрешения android:label имя разрешения, отображаемое пользователю android:description описание разрешения android:icon значок разрешения android:permissionGroup определяет принадлежность к группе разрешений android:protectionLevel уровень защиты

Элемент запрашивает разрешение, которые приложению должны быть предоставлены системой для его нормального функционирования. Разрешения предоставляются во время установки приложения, а не во время его работы.

android:name имеет единственный атрибут с именем разрешения android:name. Это может быть разрешение, определенное в элементе

данного приложения, разрешение, определенное в другом приложении или одно из стандартных системных разрешений, например: android:name=»android.permission.CAMERA» или android:name=»»android.permission.READ_CONTACTS»

Наиболее распространенные разрешения

  • INTERNET — доступ к интернету
  • READ_CONTACTS — чтение (но не запись) данных из адресной книги пользователя
  • WRITE_CONTACTS — запись (но не чтение) данных из адресной книги пользователя
  • RECEIVE_SMS — обработка входящих SMS
  • ACCESS_COARSE_LOCATION — использование приблизительного определения местонахождения при помощи вышек сотовой связи или точек доступа Wi-Fi
  • ACCESS_FINE_LOCATION — точное определение местонахождения при помощи GPS

объявляет базовое имя для дерева разрешений. Этот элемент объявляет не само разрешение, а только пространство имен, в которое могут быть помещены дальнейшие разрешения.

определяет имя для набора логически связанных разрешений. Это могут быть как объявленные в этом же манифесте с элементом

разрешения, так и объявленные в другом месте. Этот элемент не объявляет разрешение непосредственно, только категорию, в которую могут быть помещены разрешения. Разрешение можно поместить в группу, назначив имя группы в атрибуте permissionGroup элемента

Читайте также:  Настройка удаленного рабочего стола андроид

Источник

Работа с манифестом Android

AndroidManifest.xml — это мощный файл на платформе Android, который позволяет описать функциональные возможности и требования приложения для Android. Однако работать с ним непросто. Xamarin. Android помогает снизить эту сложность, позволяя добавлять настраиваемые атрибуты в классы, которые затем будут использоваться для автоматического создания манифеста. Наша цель заключается в том, что 99% наших пользователей никогда не нужно вручную изменять AndroidManifest.xml.

AndroidManifest.xml создается как часть процесса сборки, и XML-код, найденный в свойствах/AndroidManifest.xml , объединяется с XML, созданным из настраиваемых атрибутов. Полученный Объединенный AndroidManifest.xml находится в подкаталоге obj ; Например, он находится в файле obj/Debug/Android/AndroidManifest.xml для отладочных сборок. Процесс слияния является тривиальным: он использует настраиваемые атрибуты в коде для создания XML-элементов и вставляет эти элементы в AndroidManifest.xml.

Основы

Во время компиляции сборки сканируются для классов, не являющихся abstract классами, которые являются производными от abstract и имеют [Activity] объявленный атрибут. Затем эти классы и атрибуты используются для создания манифеста. Рассмотрим следующий пример кода:

Это приведет к невозможности создания в AndroidManifest.xml. Если требуется создать элемент, необходимо использовать [Activity] настраиваемый атрибут:

В этом примере к AndroidManifest.xmlу добавляется следующий фрагмент XML:

[Activity] Атрибут не влияет на abstract типы; abstract типы игнорируются.

Activity Name

Начиная с Xamarin. Android 5,1, имя типа действия основано на MD5SUM имени экспортируемого типа с указанием сборки. Это позволяет предоставить одно и то же полное имя из двух разных сборок и не получить ошибку упаковки. (Перед Xamarin. Android 5,1 имя типа действия по умолчанию было создано из пространства имен в нижнем регистре и имени класса.)

Если вы хотите переопределить это значение по умолчанию и явно указать имя действия, используйте Name свойство:

В этом примере создается следующий фрагмент XML:

Свойство следует использовать Name только в целях обратной совместимости, так как такое Переименование может замедлить Поиск во время выполнения. Если у вас есть устаревший код, который ожидает, что имя типа по умолчанию для действия должно основываться на пространстве имен в нижнем регистре и имени класса, см. раздел имя вызываемой оболочки Android для получения советов по обеспечению совместимости.

Строка заголовка действия

По умолчанию Android предоставляет приложению заголовок при его запуске. Для этого используется значение /manifest/application/activity/@android:label . В большинстве случаев это значение будет отличаться от имени класса. Чтобы указать метку приложения в заголовке окна, используйте Label свойство. Например:

В этом примере создается следующий фрагмент XML:

Запуск из средства выбора приложений

По умолчанию действие не отображается на экране запуска приложений Android. Это связано с тем, что в приложении может быть много действий, и вам не нужен значок для каждого из них. Чтобы указать, какие из них должны быть запущены в средстве запуска приложений, используйте MainLauncher свойство. Например:

В этом примере создается следующий фрагмент XML:

Значок действия

По умолчанию для действия будет задан значок запуска по умолчанию, предоставляемый системой. Чтобы использовать пользовательский значок, сначала добавьте .png в Resources/Draw, задайте для его действия сборки значение AndroidResource, а затем используйте свойство, чтобы указать используемый значок. Например:

В этом примере создается следующий фрагмент XML:

Разрешения

При добавлении разрешений в манифест Android (как описано в разделе Добавление разрешений в манифест Android) эти разрешения записываются в свойствах и AndroidManifest.xml. Например, при задании INTERNET разрешения в INTERNET добавляется следующий элемент:

Отладочные сборки автоматически устанавливают некоторые разрешения для упрощения отладки (например INTERNET , и READ_EXTERNAL_STORAGE ) — эти параметры задаются только в созданном INTERNET и не отображаются как включенные в параметрах READ_EXTERNAL_STORAGE .

Читайте также:  Программирование для андроид с нуля учебник

Например, если вы изучите созданный файл манифеста в файле obj/Debug/Android/AndroidManifest.xml, вы можете увидеть следующие добавленные элементы разрешений:

В версии сборки выпуска манифеста (в файле obj/Debug/Android/AndroidManifest.xml) эти разрешения не настраиваются автоматически. если вы обнаружите, что переключение на сборку выпуска приводит к тому, что ваше приложение потеряет разрешение, доступное в отладочной сборке, убедитесь, что это разрешение явно задано в параметрах, необходимых для приложения (см. раздел сборка приложения android в Visual Studio для Mac; см. свойства манифеста android в Visual Studio).

Дополнительные функции

Действия и функции намерения

Манифест Android предоставляет способ описания возможностей действия. Это делается с помощью целей и [IntentFilter] настраиваемый атрибут. Можно указать, какие действия соответствуют действию, с помощью IntentFilter и какие категории подходят дляСвойство Categories . Необходимо указать по крайней мере одно действие (это объясняется тем, что действия предоставляются в конструкторе). [IntentFilter] может предоставляться несколько раз, и каждое использование приводит к отдельному элементу в . Например:

В этом примере создается следующий фрагмент XML:

Элемент Application

Например, следующий Application атрибут добавляется в Application , чтобы указать, что приложение может быть отлажено, что его понятное имя — мое приложение, а в качестве темы по умолчанию для всех действий используется стиль.

Источник

Как разобрать AndroidManifest.xml-файл внутри an.пакет apk

этот файл представляется в двоичном формате XML. Что это за формат и как он может быть проанализирован программно (в отличие от использования инструмента дампа aapt в SDK)?

этот двоичный формат не обсуждается в документации здесь.

Примечание: Я хочу получить доступ к этой информации из-за пределов среды Android, предпочтительно из Java.

14 ответов:

используйте android-apktool

есть приложение, которое читает apk файлы и декодирует XMLs почти в оригинальной форме.

Регистрация android-apktool для получения дополнительной информации

этот метод Java, который работает на Android, документирует (что я смог интерпретировать) двоичный формат AndroidManifest.xml-файл в поле .пакет apk. Во втором поле кода показано, как вызвать метод decompressXML и как загрузить байт[] из файла пакета приложения на устройстве. (Есть поля, назначение которых я не понимаю, если вы знаете, что они означают, скажите мне, я обновлю информацию.)

этот метод считывает AndroidManifest в байт[] для обработка:

большинство приложений хранятся в /system /app, который читается без root my Evo, другие приложения находятся в/data / app, который мне нужен root, чтобы увидеть. Аргумент » путь «выше будет выглядеть примерно так:» /system/app/Weather.apk»

как насчет использования Android Asset Packaging Tool (aapt), из Android SDK, в скрипт Python (или что-то еще)?

через aapt (http://elinux.org/Android_aapt), действительно, Вы можете получить информацию о .apk пакета и о его AndroidManifest.xml. В частности, вы можете извлечь значения отдельных элементов.apk пакета через ‘dump’ суб-команды. Например, вы можете извлечь user-permissions на AndroidManifest.xml внутри .apk пакета таким образом:

здесь пакета.apk ваш .apk пакета.

кроме того, вы можете использовать команду Unix pipe для очистки выходных данных. Например:

вот скрипт на Питоне что к тому программно:

аналогичным образом вы можете извлечь другую информацию (например,пакета,название и т. д. ) из AndroidManifest.xml:

если вместо этого вы хотите разобрать все XML-дерево AndroidManifest, вы можете сделать это аналогичным образом с помощью xmltree:

использование Python как и раньше:

вы можете использовать axml2xml.pl инструмент разработан некоторое время назад в рамках android-random. Он будет генерировать текстовый файл манифеста (AndroidManifest.xml)из двоичного.

Я говорю, что «текстовое«, а не «оригинал » потому что, как и многие инструменты обратной инженерии, этот не идеален и результат не будет быть полным. Я предполагаю, что либо это никогда не было особенностью полная или просто не совместимая с прямой передачей (с более новой схемой двоичного кодирования). Какова бы ни была причина,axml2xml.pl инструмент не сможет правильно извлечь все значения атрибутов. Такими атрибутами являются minSdkVersion, targetSdkVersion и в основном все атрибуты, которые ссылаются на ресурсы (например, строки, значки и т. д.), т. е. только имена классов (видов работ, услуг и т. д.) извлекаются правильно.

Читайте также:  Baidu browser для андроид

тем не менее, вы все еще можете найти эти недостающие сведения, запустив aapt инструмент в исходном файле приложения для Android (.apk):

Источник

Как посмотреть AndroidManifest.xml из файла APK?

Я только что изменил расширение до zip . Это содержит . Но я не могу просмотреть содержимое Androidmanifest.xml . Он полностью зашифрован.

как я могу посмотреть ?

12 ответов

Да, вы можете посмотреть XML файлы . Для этого есть инструмент: android-apktool

это инструмент для обратного проектирования 3rd партии, закрытые, бинарные приложения для Android

как это сделать в вашей системе Windows:

скопировать APK файл также в этом каталоге и выполните следующую команду в командной строке:

это создаст каталог» HelloWorld » в текущем каталоге. Внутри него вы можете найти AndroidManifest.xml файл в расшифрованном формате, и вы также можете найти другие XML файлы внутри .

здесь HelloWorld.apk ваш Android APK файл.

см. ниже снимок экрана для более информация:

вы можете напрямую использовать aapt l -a name.apk команда для просмотра манифеста.XML.

(это также приведет к сбросу таблицы ресурсов.)

Android Studio теперь может показать это. Перейти к Build > Analyze APK. и выберите apk. Затем вы можете увидеть содержимое файла AndroidManifset.

в этой нить, С Dianne Hackborn говорит нам, что мы можем получить информацию из AndroidManifest с помощью aapt.

Я взбил эту быструю команду unix, чтобы захватить информацию о версии:

aapt d xmltree com.package.apk AndroidManifest.xml

свалка в AndroidManifest.xml из указанного APK. Это не в форме XML, но вы все равно можете прочитать его.

aapt (Android Asset Packaging Tool) — это встроенный инструмент, который поставляется с Android SDK.

Google только что выпустила кросс-платформенный инструмент с открытым исходным кодом для проверки APKs (среди многих других бинарных форматов Android):

ClassyShark является автономным инструментом бинарной проверки для разработчиков Android. Он может надежно просматривать любой исполняемый файл Android и показывать важную информацию, такую как интерфейсы и члены класса, количество dex и зависимости. ClassyShark поддерживает несколько форматов, включая библиотеки (.Декс .ААР .Итак), исполняемые файлы (.apk,.сосуд. ,класс) и всех двоичных файлов XML Андроид: AndroidManifest, ресурсы, макеты и т. д.

Вы можете использовать эту команду: «сохранить в файл» AndroidManifest.txt

на AXMLParser и APKParser.Джар можно также сделать работу, вы можете увидеть ссылку. AXMLParser

существует онлайн-инструмент, который позволяет загружать APK он декомпилирует его и, наконец, позволяет загружать zip со всеми источниками, манифест XML-файл и так далее декомпилированы, все это без необходимости установки какой-либо программы на вашем компьютере: http://www.javadecompilers.com/apk

также, если вы хотите просто проверить некоторые параметры, которые вы можете, их UI

Это старый поток, но я думал, что упомяну, что у вашего телефона есть root, вы можете просмотреть его прямо на своем телефоне с помощью приложения root explorer. Вам даже не нужно извлекать его, чтобы увидеть.

вы также можете использовать мое приложение, App Детектив для просмотра файла манифеста любого приложения, установленного на вашем устройстве.

файл должен быть декомпилирован (или deodex’D не уверен, какой из них). Но есть и другой способ сделать это:—2—>

Источник

Оцените статью