Comment afficher AndroidManifest.xml à partir d'un fichier APK?

309

Est-il possible de visualiser le Androidmanifest.xmlfichier?

Je viens de changer l'extension du apkfichier en zip. Ce zipfichier contient le Androidmanifest.xmlfichier. Mais je ne peux pas voir le contenu de Androidmanifest.xml. Il est entièrement crypté.

Comment visualiser le Androidmanifest.xmlfichier?

bharath
la source
J'ai un fichier APK. J'ai besoin d'afficher le fichier Androidmanifest.xml. parce que j'ai utilisé un framework. Ce fichier APK a également utilisé le même cadre. J'ai donc besoin de voir comment configurer le fichier Androidmanifest à partir de ce fichier APK.
bharath
@Jason Rogers: AFAIK, vous pouvez afficher ces informations. Voir ceci
Vikas Patidar

Réponses:

220

Oui, vous pouvez afficher les XMLfichiers d'un Android APKfichier. Il existe un outil pour cela:android-apktool

C'est un outil pour l'ingénierie inverse des applications Android tierces, fermées et binaires

Comment faire cela sur votre système Windows:

  1. Télécharger le fichier apktool-install-windows- *
  2. Télécharger le fichier apktool- *
  3. Décompressez les deux dans votre répertoire Windows

Maintenant, copiez APKégalement le fichier dans ce répertoire et exécutez la commande suivante dans votre invite de commande:

apktool d HelloWorld.apk ./HelloWorld

Cela créera un répertoire " HelloWorld" dans votre répertoire actuel. À l'intérieur, vous pouvez trouver le AndroidManifest.xmlfichier au format déchiffré, et vous pouvez également trouver d'autres XMLfichiers dans le "HelloWorld/res/layout"répertoire.

Voici HelloWorld.apkvotre fichier APK Android.

Voir la capture d'écran ci-dessous pour plus d'informations: texte alternatif

Vikas Patidar
la source
15
C'est bien, mais j'aimerais savoir comment regarder le fichier AndroidManifest.xml sans avoir à télécharger tout cela. Est-il chiffré ou compressé?
JohnnyLambada
1
@JohnnyLambada : Oui, vous pouvez l'ouvrir et l'afficher dans un outil d'archivage comme: WinRar / WinZip / 7Zip mais cela n'a aucun sens car il est sous forme cryptée.
Vikas Patidar
9
L'apktool est obsolète. Mieux vaut se référer à la page d' accueil de leur projet pour la dernière version.
Deqing
1
J'obtiens: Exception dans le thread "main" brut.androlib.AndrolibException: Plusieurs ressources: à brut.androlib.res.data.ResConfig.addResource (Source inconnue)
WindRider
3
Maintenant, la commande a changé pour la dernière versionapktool d your_destination youraApk.apk
Pranoy Sarkar
109

Android Studio peut maintenant le montrer. Allez dans Build> Analyze APK...et sélectionnez votre apk. Ensuite, vous pouvez voir le contenu du fichier AndroidManifset.

Jonas Jongejan
la source
3
Cette fonctionnalité a été ajoutée récemment et je voudrais également suggérer cela à moins que vous ne souhaitiez utiliser la ligne de commande et que vous ayez configuré les outils de la plate-forme dans votre chemin.
anthonymonori
8
cela devrait être voté pour devenir la meilleure réponse, d'autres méthodes sont maintenant inutilement compliquées.
Sébastien
3
Il existe également une version en ligne de commande de cette fonction intégrée: stackoverflow.com/a/54874783/89818
caw
46

aapt d xmltree com.package.apk AndroidManifest.xml

videra le AndroidManifest.xmlfichier APK spécifié. Ce n'est pas sous forme XML, mais vous pouvez toujours le lire.

aapt (Android Asset Packaging Tool) est un outil intégré fourni avec le SDK Android.

Geobio Boo
la source
45

Dans ce fil , Dianne Hackborn nous dit que nous pouvons obtenir des informations sur le AndroidManifest en utilisant aapt.

J'ai fouetté cette commande unix rapide pour récupérer les informations de version:

aapt dump badging my.apk | sed -n "s/.*versionName='\([^']*\).*/\1/p"
JohnnyLambada
la source
est-il possible de le faire même dans une application Android? est-il également possible d'obtenir tout le fichier manifeste et pas seulement le nom de la version?
développeur Android
36

Google vient de publier un outil open source multiplateforme pour inspecter les APK (parmi de nombreux autres formats Android binaires):

ClassyShark est un outil d'inspection binaire autonome pour les développeurs Android. Il peut parcourir de manière fiable tout exécutable Android et afficher des informations importantes telles que les interfaces et les membres de classe, le nombre dex et les dépendances. ClassyShark prend en charge plusieurs formats, y compris les bibliothèques (.dex, .aar, .so), les exécutables (.apk, .jar, .class) et tous les XML binaires Android: AndroidManifest, ressources, dispositions, etc.

Capture d'écran de ClassyShark

Dan Dascalescu
la source
3
C'est 10000 fois plus facile que Apktool!
Guilherme Campos Hazan
18

Vous pouvez utiliser apkanalyzerla version en ligne de commande de l' analyseur APK fournie avec le SDK Android. Exécutez simplement la commande suivante sur la CLI:

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

Il vous suffit de remplacer /path/to/android-sdkpar le chemin d'accès correct à votre version du SDK Android et /path/to/app.apkpar le chemin d'accès à votre fichier APK.

croasser
la source
8
Cela devrait être la réponse acceptée car elle ne nécessite rien d'installer à partir de sources non vérifiées.
c4k
notez que cela ne semble pas fonctionner sous Windows :( stackoverflow.com/a/54593118/997940
Yoav Feuerstein
Je reçois une erreur: exception dans le thread "principal" java.lang.IllegalStateException: la propriété du répertoire tools n'est pas définie, assurez-vous que vous exécutez apkanalyzer, je ne savais pas comment le résoudre
jk2K
C'est probablement le chemin dont vous avez besoin si vous êtes sur macOS:~/Library/Android/sdk/tools/bin/apkanalyzer manifest print <apk>
Frederik
15

Vous pouvez utiliser cette commande: enregistrer dans un fichier AndroidManifest.txt

aapt dump xmltree gmail.apk AndroidManifest.xml > AndroidManifest.txt
Ahmad Aghazadeh
la source
2
dest une abréviation de dump, ce qui rend cette réponse identique à celle qui a été publiée plus d'un an plus tôt.
Dan Dascalescu
4
Oui, mais ce code enregistre dans un fichier > AndroidManifest.txt.
Ahmad Aghazadeh
lol, c'est la même réponse, vider le fichier ne fait pas la différence
Leonardo Sapuy
8

Le AXMLParser et APKParser.jar peuvent également faire le travail, vous pouvez voir le lien. AXMLParser

twlkyao
la source
1
Cet outil n'a pas été mis à jour depuis des années. Google vient de publier un outil d'inspection binaire Android en novembre 2016.
Dan Dascalescu
7

Il existe un outil en ligne qui vous permet de télécharger un APK Il le décompile et enfin vous permet de télécharger un zip avec toutes les sources, un fichier XML manifeste et ainsi de suite décompilé, tout cela sans avoir à installer de programme sur votre ordinateur: http: / /www.javadecompilers.com/apk

Aussi, si vous souhaitez simplement vérifier certains paramètres, vous pouvez, par leur interface utilisateur

user3289695
la source
A travaillé sur un APK en août, n'a pas fonctionné sur un autre en novembre
Dan Dascalescu
apktools ne semble pas avoir créé de répertoire pour moi avec la sortie, et aapt n'a pas montré le résultat au format XML. Ce site Web a fonctionné comme un charme.
kregus
6

Pour décoder le AndroidManifest.xmlfichier à l'aide de axmldec :

axmldec -o output.xml AndroidManifest.xml

ou

axmldec -o output.xml AndroidApp.apk
Amir Rezazadeh
la source
Cela fonctionne et peut être facilement installé via Homebrew: brew tap ytsutano/toolbox brew install axmldec
gmoz22
5

Aapt2, inclus dans les outils de construction du SDK Android peut le faire - aucun outil tiers n'est nécessaire.

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

À partir de build-tools v29, vous devez ajouter la commande xmltree:

$(ANDROID_SDK)/build-tools/29.0.3/aapt2 d xmltree --file AndroidManifest.xml app-foo-release.apk
BitByteDog
la source
Cela ne produit pas le XML d'origine, mais c'est bien si j'ai juste besoin de regarder une valeur là-dedans sans avoir à extraire l'APK ou à écrire dans un fichier temporaire.
Raziel
2

Vous pouvez également utiliser mon application, App Detective pour afficher le fichier manifeste de toute application que vous avez installée sur votre appareil.

zmarties
la source
0

Ceci est un vieux fil, mais je pensais que je mentionnerais que votre téléphone a la racine, vous pouvez le voir directement sur votre téléphone en utilisant l'application root explorer. Vous n'avez même pas besoin de l'extraire pour voir.

richbai90
la source
-1

Le fichier doit être décompilé (ou deodex ne sait pas lequel). Mais voici une autre façon de procéder:

-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
la source