Jak wyświetlić plik AndroidManifest.xml z pliku APK?

309

Czy można wyświetlić Androidmanifest.xmlplik?

Właśnie zmieniłem rozszerzenie apkpliku na zip. Ten zipplik zawiera Androidmanifest.xmlplik. Ale nie mogę wyświetlić zawartości Androidmanifest.xml. Jest w pełni zaszyfrowany.

Jak mogę wyświetlić Androidmanifest.xmlplik?

bharath
źródło
Mam jeden plik APK. Muszę wyświetlić plik Androidmanifest.xml. ponieważ użyłem jednego frameworka. Ten plik APK również używał tej samej struktury. Muszę więc zobaczyć, jak skonfigurować plik Androidmanifest z tego pliku APK.
bharath
@Jason Rogers: AFAIK możesz wyświetlić te informacje. Zobacz to
Vikas Patidar

Odpowiedzi:

220

Tak, możesz przeglądać XMLpliki Android APKpliku. Istnieje na to narzędzie:android-apktool

Jest to narzędzie do inżynierii wstecznej zewnętrznych, zamkniętych, binarnych aplikacji na Androida

Jak to zrobić w systemie Windows:

  1. Pobierz plik apktool-install-windows- *
  2. Pobierz plik apktool- *
  3. Rozpakuj oba do katalogu Windows

Teraz skopiuj APKplik również do tego katalogu i uruchom następujące polecenie w wierszu polecenia:

apktool d HelloWorld.apk ./HelloWorld

Spowoduje to utworzenie katalogu „ HelloWorld” w bieżącym katalogu. Wewnątrz można znaleźć AndroidManifest.xmlplik w formacie odszyfrowanym, a także inne XMLpliki w "HelloWorld/res/layout"katalogu.

Oto HelloWorld.apktwój plik APK Androida.

Aby uzyskać więcej informacji, zobacz poniższy zrzut ekranu: alternatywny tekst

Vikas Patidar
źródło
15
To miłe, ale chciałbym wiedzieć, jak po prostu spojrzeć na AndroidManifest.xml bez konieczności pobierania tego wszystkiego. Czy jest zaszyfrowany lub skompresowany?
JohnnyLambada
1
@JohnnyLambada : Tak, możesz je otworzyć i wyświetlić w narzędziu do archiwizacji, takim jak: WinRar / WinZip / 7Zip, ale nie ma to sensu, ponieważ jest w postaci zaszyfrowanej.
Vikas Patidar
9
Narzędzie jest przestarzałe. Lepiej zapoznaj się ze stroną główną projektu, aby uzyskać najnowszą wersję.
Deqing
1
Otrzymuję: wyjątek w wątku „main” brut.androlib.AndrolibException: wiele zasobów: w brut.androlib.res.data.ResConfig.addResource (nieznane źródło)
WindRider
3
Teraz polecenie zostało zmienione dla najnowszej wersjiapktool d your_destination youraApk.apk
Pranoy Sarkar
109

Android Studio może to teraz pokazać. Przejdź do Build> Analyze APK...i wybierz apk. Następnie możesz zobaczyć zawartość pliku AndroidManifset.

Jonas Jongejan
źródło
3
Ta funkcja została niedawno dodana i chciałbym to zasugerować, chyba że wolisz korzystać z wiersza poleceń i masz skonfigurowane narzędzia platformy na swojej ścieżce.
anthonymonori,
8
należy to ocenić, aby stać się najlepszą odpowiedzią, inne metody są teraz niepotrzebnie skomplikowane.
Sébastien
3
Istnieje również wersja wbudowana tego wiersza poleceń: stackoverflow.com/a/54874783/89818
caw
46

aapt d xmltree com.package.apk AndroidManifest.xml

zrzuci AndroidManifest.xmlz określonego APK. Nie jest w formie XML, ale nadal możesz go przeczytać.

aapt (Android Asset Packaging Tool) to wbudowane narzędzie dostarczane z zestawem Android SDK.

Geobio Boo
źródło
45

W tym wątku Dianne Hackborn mówi nam, że możemy uzyskać informacje z AndroidManifest za pomocą aapt.

Podkręciłem to szybkie polecenie unix, aby pobrać informacje o wersji:

aapt dump badging my.apk | sed -n "s/.*versionName='\([^']*\).*/\1/p"
JohnnyLambada
źródło
czy można to zrobić nawet w aplikacji na Androida? czy można uzyskać cały plik manifestu, a nie tylko nazwę wersji?
programista Androida
36

Google właśnie wydało wieloplatformowe narzędzie open source do sprawdzania pakietów APK (wśród wielu innych binarnych formatów Androida):

ClassyShark to samodzielne narzędzie do kontroli binarnej dla programistów Androida. Może niezawodnie przeglądać dowolny plik wykonywalny Androida i wyświetlać ważne informacje, takie jak interfejsy klas i elementy, liczby i zależności dex. ClassyShark obsługuje wiele formatów, w tym biblioteki (.dex, .aar, .so), pliki wykonywalne (.apk, .jar, .class) i wszystkie binarne pliki XML systemu Android: AndroidManifest, zasoby, układy itp.

Zrzut ekranu ClassyShark

Dan Dascalescu
źródło
3
To 10000 razy łatwiej niż Apktool!
Guilherme Campos Hazan
18

Można użyć apkanalyzerwersji wiersza polecenia analizatora APK dołączonego do zestawu SDK systemu Android. Wystarczy wykonać następujące polecenie w interfejsie CLI:

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

Musisz tylko zastąpić /path/to/android-sdkpoprawną ścieżką do swojej wersji zestawu SDK systemu Android i /path/to/app.apkścieżką do pliku APK.

krakanie
źródło
8
To powinna być zaakceptowana odpowiedź, ponieważ nie wymaga instalowania niczego z niezweryfikowanych źródeł.
c4k
zauważ, że to nie działa w systemie Windows :( stackoverflow.com/a/54593118/997940
Yoav Feuerstein
Pojawia się błąd: wyjątek w wątku „main” java.lang.IllegalStateException: Właściwość katalogu narzędzi nie jest ustawiona, upewnij się, że wykonujesz apkanalyzer, nie wiedziałem, jak to rozwiązać
jk2K
Jest to najprawdopodobniej ścieżka, której potrzebujesz, jeśli korzystasz z systemu macOS:~/Library/Android/sdk/tools/bin/apkanalyzer manifest print <apk>
Frederik
15

Możesz użyć tego polecenia: zapisz do pliku AndroidManifest.txt

aapt dump xmltree gmail.apk AndroidManifest.xml > AndroidManifest.txt
Ahmad Aghazadeh
źródło
2
djest skrótem od dump, co czyni tę odpowiedź identyczną z , która została opublikowana ponad rok wcześniej.
Dan Dascalescu,
4
Tak, ale ten kod jest zapisywany w pliku > AndroidManifest.txt.
Ahmad Aghazadeh,
lol, to ta sama odpowiedź, zrzut pliku nie robi różnicy
Leonardo Sapuy
8

AXMLParser i APKParser.jar można również wykonać zadanie, można zobaczyć link. AXMLParser

twlkyao
źródło
1
To narzędzie nie było aktualizowane od lat. Google właśnie wydało narzędzie do kontroli binarnej Androida w listopadzie 2016 r.
Dan Dascalescu,
7

Istnieje narzędzie online, które pozwala przesłać pakiet APK. Dekompiluje je, a na koniec pozwala na pobranie pliku zip ze wszystkimi źródłami, manifestu pliku XML itd., Po dekompilacji, bez konieczności instalowania żadnego programu na komputerze: http: / /www.javadecompilers.com/apk

Również, jeśli chcesz tylko sprawdzić niektóre parametry, możesz, korzystając z ich interfejsu użytkownika

użytkownik3289695
źródło
Pracowałem nad APK w sierpniu, nie pracowałem nad innym w listopadzie
Dan Dascalescu,
apktools nie tworzył dla mnie katalogu z danymi wyjściowymi, a aapt nie pokazał wyniku w formacie XML. Ta strona działała jak urok.
kregus
6

Aby zdekodować AndroidManifest.xmlplik za pomocą axmldec :

axmldec -o output.xml AndroidManifest.xml

lub

axmldec -o output.xml AndroidApp.apk
Amir Rezazadeh
źródło
Działa i można go łatwo zainstalować za pomocą Homebrew:brew tap ytsutano/toolbox brew install axmldec
gmoz22
5

Aapt2, zawarte w narzędziach do kompilacji zestawu SDK systemu Android, może to zrobić - nie są potrzebne narzędzia innych firm.

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

Zaczynając od build-tools v29, musisz dodać polecenie xmltree:

$(ANDROID_SDK)/build-tools/29.0.3/aapt2 d xmltree --file AndroidManifest.xml app-foo-release.apk
BitByteDog
źródło
Nie wyprowadza to oryginalnego pliku XML, ale jest fajne, jeśli muszę tylko spojrzeć na jakąś tam wartość bez konieczności wyodrębniania pliku APK lub zapisu w pliku tymczasowym.
Raziel
2

Możesz także użyć mojej aplikacji App Detective, aby wyświetlić plik manifestu dowolnej aplikacji zainstalowanej na urządzeniu.

zmarties
źródło
0

To jest stary wątek, ale pomyślałem, że wspomnę, że Twój telefon ma root, możesz go wyświetlić bezpośrednio na telefonie za pomocą aplikacji root explorer. Nie musisz nawet go rozpakowywać, aby zobaczyć.

richbai90
źródło
-1

Plik musi zostać zdekompilowany (lub deodex nie byłby pewien, który). Ale jest inny sposób, aby to zrobić:

-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]\
Kevin
źródło