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

Можно ли просмотреть Androidmanifest.xml файл?

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

Как мне просмотреть Androidmanifest.xml файл?


person bharath    schedule 16.11.2010    source источник
comment
У меня один APK-файл. Мне нужно просмотреть файл Androidmanifest.xml. потому что я использовал один фреймворк. В этом APK-файле также использовалась та же структура. Итак, мне нужно посмотреть, как настроить файл Androidmanifest из этого файла APK.   -  person bharath    schedule 16.11.2010
comment
@ Джейсон Роджерс: AFAIK, вы можете просмотреть эту информацию. См. это   -  person Vikas Patidar    schedule 22.02.2011


Ответы (15)


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

Это инструмент для реверс-инжиниринга сторонних, закрытых, бинарных приложений Android.

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

  1. Загрузите файл apktool-install-windows- *
  2. Загрузить файл apktool- *
  3. Распакуйте оба в каталог Windows

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

apktool d HelloWorld.apk ./HelloWorld

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

Здесь HelloWorld.apk - ваш файл APK для Android.

Дополнительную информацию см. На снимке экрана ниже: alt text

person Vikas Patidar    schedule 16.11.2010
comment
Это хорошо, но я хотел бы знать, как просто посмотреть файл AndroidManifest.xml, не скачивая все это. Он зашифрован или сжат? - person JohnnyLambada; 15.01.2011
comment
@JohnnyLambada: Да, вы можете открыть и просмотреть его с помощью инструмента архивирования, такого как: WinRar / WinZip / 7Zip, но это не имеет смысла, потому что он находится в зашифрованном виде. - person Vikas Patidar; 19.02.2011
comment
можно ли его расшифровать, немного изменить (например minSdkVersion), а затем вернуть обратно в apk? - person android developer; 13.07.2012
comment
Apktool устарел. Для получения последней версии лучше обратиться к их домашней странице проекта. - person Deqing; 25.07.2012
comment
Я получаю: исключение в основном потоке brut.androlib.AndrolibException: несколько ресурсов: в brut.androlib.res.data.ResConfig.addResource (неизвестный источник) - person WindRider; 02.10.2012
comment
@VikasPatidar Это здорово .. но подскажите, пожалуйста, как это сделать на устройстве. Я имею в виду SDK (с использованием XMLPullParse / Sax / DocumentBuilder). - person Kishore; 03.06.2013
comment
@Kishore: Вы не можете напрямую читать AndroidManifest.xml из своего приложения. Однако вы можете получить доступ к различной информации, такой как название версии, код версии, имя пакета и т. Д., Используя официальные API. - person Vikas Patidar; 17.06.2013
comment
можно ли использовать apkTool даже в приложении для Android? - person android developer; 23.02.2014
comment
Можно ли посмотреть, чтобы увидеть Decrepted, означают нормальные слова, которые я хочу увидеть, файл манифеста или .xml. Проектирование файлов - это любой способ сделать .... ?? у меня есть все вещи с помощью APK для преобразования в zip и код Decampile с помощью инструмента Decompiler. Я могу получить детали xml или .manifesto, так как я могу посмотреть этот файл .code в формате Decreption ..... ???? - person Amitsharma; 04.05.2015
comment
Ответ ниже лучше. - person Randy; 11.11.2015
comment
спасибо чувак, это было круто, это действительно помогло: D - person virusivv; 01.12.2015
comment
В последней версии команда выглядит по-другому, необходимо использовать -o перед папкой назначения. В любом случае у меня не сработало. - person albf.unicamp; 30.12.2015
comment
@JohnnyLambada Вы можете попробовать этот javadecompilers.com или этот decompileandroid.com. - person Alexandr; 26.02.2016
comment
@VikasPatidar, насколько я знаю, манифест Android не зашифрован, он только в двоичной форме. - person turkishweb; 23.03.2016
comment
@turkishweb спасибо за исправление, буду обновлять. Я так давно не ответил. - person Vikas Patidar; 23.03.2016
comment
Теперь, когда Google выпустил инструмент проверки двоичного кода ClassyShark Android, этот ответ устарел. - person Dan Dascalescu; 19.11.2016
comment
Теперь команда изменена для последней версии apktool d your_destination youraApk.apk - person Pranoy Sarkar; 31.07.2017
comment
голосование против, потому что это старый ответ. Самый простой подход - использовать Android Studio, как указано @jonas - person bkurzius; 28.09.2018
comment
Возможно, вы можете потратить немного времени на чтение приведенных ниже ответов с помощью команды aapt. Мне это удобно. - person Chris Li; 02.08.2019

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

person Jonas Jongejan    schedule 28.10.2016
comment
Эта функция была добавлена ​​недавно, и я также хотел бы предложить это, если вы не любите использовать командную строку и у вас настроены инструменты платформы в вашем пути. - person anthonymonori; 19.11.2016
comment
за этот ответ следует проголосовать, чтобы он стал лучшим ответом, другие методы теперь излишне сложны. - person Sébastien; 24.05.2018
comment
Также существует версия этой встроенной программы для командной строки: stackoverflow.com/a/54874783/89818 - person caw; 26.02.2019

aapt d xmltree com.package.apk AndroidManifest.xml

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

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

person Geobio Boo    schedule 11.02.2015

В этой ветке Дайанн Хакборн сообщает нам, что мы можем получить информацию AndroidManifest с использованием aapt.

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

aapt dump badging my.apk | sed -n "s/.*versionName='\([^']*\).*/\1/p"
person JohnnyLambada    schedule 15.01.2011
comment
можно ли это сделать даже в приложении для Android? кроме того, можно ли получить весь файл манифеста, а не только название версии? - person android developer; 23.02.2014

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

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

Снимок экрана ClassyShark

Установите версию 8.2:

wget https://github.com/google/android-classyshark/releases/download/8.2/ClassyShark.jar

Запустить:

java -jar ClassyShark.jar -open <file.apk>
person Dan Dascalescu    schedule 18.11.2016
comment
Это в 10000 раз проще, чем Apktool! - person Guilherme Campos Hazan; 02.12.2018

Вы можете использовать apkanalyzer, версию APK Analyzer в комплекте с Android SDK. Просто выполните следующую команду в интерфейсе командной строки:

/path/to/android-sdk/tools/bin/apkanalyzer manifest print /path/to/app.apk

Вам нужно только заменить /path/to/android-sdk на правильный путь к вашей версии Android SDK и /path/to/app.apk на путь к вашему APK-файлу.

person caw    schedule 25.02.2019
comment
Это должен быть принятый ответ, поскольку он не требует установки чего-либо из непроверенных источников. - person c4k; 23.04.2019
comment
обратите внимание, что это не работает в Windows :( stackoverflow.com/a/54593118/997940 - person Yoav Feuerstein; 30.12.2019
comment
Я получаю сообщение об ошибке: исключение в основном потоке java.lang.IllegalStateException: свойство каталога инструментов не установлено, убедитесь, что вы выполняете apkanalyzer, я не знал, как его решить - person jk2K; 01.06.2020
comment
Скорее всего, это тот путь, который вам нужен, если вы используете macOS: ~/Library/Android/sdk/tools/bin/apkanalyzer manifest print <apk> - person Frederik; 09.06.2020

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

aapt dump xmltree gmail.apk AndroidManifest.xml > AndroidManifest.txt
person Ahmad Aghazadeh    schedule 03.07.2016
comment
d - это сокращение от dump, что делает этот ответ идентичным этот, опубликованный более года назад. - person Dan Dascalescu; 10.08.2016
comment
Да, но этот код сохраните в файле > AndroidManifest.txt. - person Ahmad Aghazadeh; 10.08.2016
comment
лол, это тот же ответ, сброс файла не имеет значения - person Leonardo Sapuy; 13.10.2017

Чтобы декодировать AndroidManifest.xml файл с помощью axmldec:

axmldec -o output.xml AndroidManifest.xml

or

axmldec -o output.xml AndroidApp.apk
person amirz98    schedule 05.02.2019
comment
Это работает и может быть легко установлено через Homebrew: brew tap ytsutano/toolbox brew install axmldec - person gmoz22; 12.08.2019

AXMLParser и APKParser.jar также могут выполнять эту работу, вы можете увидеть ссылку. AXMLParser

person twlkyao    schedule 06.01.2014
comment
Этот инструмент не обновлялся годами. Google только что выпустил инструмент для проверки двоичных файлов Android в ноябре 2016 г. - person Dan Dascalescu; 19.11.2016

Aapt2, включенный в инструменты сборки Android SDK, может это сделать - никаких сторонних инструментов не требуется.

$(ANDROID_SDK)/build-tools/28.0.3/aapt2 d --file AndroidManifest.xml app-foo-release.apk

Начиная с build-tools v29, вам нужно добавить команду xmltree:

$(ANDROID_SDK)/build-tools/29.0.3/aapt2 d xmltree --file AndroidManifest.xml app-foo-release.apk
person BitByteDog    schedule 31.01.2019
comment
Это не выводит исходный XML, но это удобно, если мне просто нужно посмотреть на значение там, без необходимости извлекать APK или записывать во временный файл. - person Thomas Glaser; 13.11.2019

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

Также, если вы хотите просто проверить некоторые параметры, вы можете с помощью их пользовательского интерфейса

person user3289695    schedule 19.05.2016
comment
В августе работал над APK, в ноябре не работал. - person Dan Dascalescu; 19.11.2016
comment
apktools, похоже, не создавал для меня каталог с выводом, а aapt не показывал результат в формате XML. Этот сайт работал как шарм. - person kregus; 15.05.2018

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

person zmarties    schedule 30.10.2017

Еще один полезный инструмент (на основе Python) для этого - Androguard, использующий свою axml подкоманду:

androguard axml my.apk -o my.xml

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

person johan    schedule 19.02.2021

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

person richbai90    schedule 30.04.2014

Файл нужно декомпилировать (или деодексировать, не знаю, какой именно). Но вот еще один способ сделать это:

-Download free Tickle My Android tool on XDA: https://forum.xda-developers.com/showthread.php?t=1633333https://forum.xda-developers.com/showthread.php?t=1633333
-Unzip
-Copy APK into \_WorkArea1\_in\ folder
-Open "Tickle My Android.exe"
-Theming Menu
-Decompile Files->Any key to continue (ignore warning)
-Decompile Files->1->[Enter]->y[Enter]
-Wait for it to decompile in new window... Done when new window closes
-Decompiled/viewable files will be here: \_WorkArea3\_working\[App]\
person Kevin    schedule 05.10.2018