La version en ligne de commande de l'analyseur d'APK fournit un aperçu immédiat de la composition de votre APK une fois le processus de compilation terminé et vous permet de comparer les différences entre deux APK. L'analyseur d'APK peut vous aider à réduire le temps passé à déboguer les problèmes liés aux fichiers et aux ressources DEX dans votre application, et à diminuer la taille de votre APK.
apkanalyzer
est inclus dans le package d'outils de ligne de commande du SDK Android sur android_sdk/cmdline-tools/version/bin/apkanalyzer
.
Vous pouvez également accéder à l'analyseur d'APK dans Android Studio, comme décrit dans Analyser votre build avec l'analyseur d'APK.
Syntaxe
La syntaxe de apkanalyzer
est la suivante :
apkanalyzer [global-options] subject verb [options] apk-file [apk-file2]
subject
est l'élément que vous souhaitez interroger. Il peut s'agir de l'APK complet ou d'une partie de celui-ci. Un objet peut correspondre à l'un des éléments suivants :
apk
: analysez les attributs du fichier APK tels que l'ID application, le code de version et le nom de version.files
: analysez les fichiers dans le fichier APK.manifest
: analysez le contenu du fichier manifeste dans le fichier APK.dex
: analysez les fichiers DEX dans le fichier APK.resources
: affichez les ressources de texte, d'image et de chaîne.
verb
est l'élément que vous souhaitez savoir sur l'objet. Les objets, les verbes et leurs options sont décrits dans la section suivante sur les commandes.
Chaque commande nécessite la spécification d'un fichier APK. Seule la commande apk compare
nécessite un deuxième fichier APK.
Vous pouvez raccourcir chaque option à condition qu'elle soit non équivoque. Par exemple, l'option globale --human-readable
peut être raccourcie en -h
.
L'exemple suivant analyse apk
(objet) pour obtenir son file-size
(verbe), puis affiche la taille du fichier dans un format lisible (option -h
) :
apkanalyzer -h apk file-size myapk.apk
Commandes
Les descriptions de commandes suivantes sont organisées par objet et listent les combinaisons de verbes et d'options disponibles pour chaque objet :
|
Description |
---|---|
apk summary apk-file
|
Affiche l'ID application, le code de version et le nom de version.
Exemple de sortie : com.myapp 5 1.1-beta |
apk file-size apk-file
|
Affiche la taille totale du fichier APK. |
apk download-size apk-file
|
Affiche une estimation de la taille de téléchargement de l'APK. |
apk features [--not-required] apk-file
|
Affiche les fonctionnalités utilisées par l'APK qui déclenchent le filtrage du Play Store. Ajoutez l'option --not-required pour inclure les fonctionnalités marquées comme non obligatoires dans la sortie.
Exemple de sortie : android.hardware.type.watch android.hardware.microphone implied: requested android.permission.RECORD_AUDIO permission |
apk compare [options] apk-file
apk-file2
|
Compare les tailles de apk-file et apk-file2 .
Vous pouvez inclure les options suivantes :
Exemple de sortie (ancienne taille/nouvelle taille/différence de taille/chemin d'accès) : 39086736 48855615 9768879 / 10678448 11039232 360784 /classes.dex 18968956 18968956 0 /lib/ 110576 110100 -476 /AndroidManifest.xml ... |
Afficher le système de fichiers APK | Description |
files list apk-file
|
Liste tous les fichiers de l'APK.
Exemple de sortie : / /classes2.dex /classes.dex /assets/ /assets/asset.data /AndroidManifest.xml /resources.arsc /res/ ... |
files cat --file path apk-file
|
Affiche le contenu du fichier. Vous devez spécifier un chemin d'accès dans l'APK à l'aide de l'option --file path , par exemple --file
/AndroidManifest.xml
|
Afficher les informations dans le fichier manifeste | Description |
manifest print apk-file
|
Affiche le fichier manifeste APK au format XML. |
manifest application-id apk-file
|
Affiche la valeur de l'ID application. |
manifest version-name apk-file
|
Affiche la valeur du nom de version. |
manifest version-code apk-file
|
Affiche la valeur du code de version. |
manifest min-sdk apk-file
| Affiche la version minimale du SDK. |
manifest target-sdk apk-file
|
Affiche la version du SDK cible. |
manifest permissions apk-file
|
Affiche la liste des autorisations. |
manifest debuggable apk-file
|
Indique si l'application est débogable. |
Accéder aux informations sur le fichier DEX | Description |
dex list apk-file
|
Affiche la liste des fichiers DEX de l'APK. |
dex references [--files path] [--files path2]
apk-file
|
Affiche le nombre de références de méthodes dans les fichiers DEX spécifiés.
La valeur par défaut est tous les fichiers DEX. Ajoutez l'option --files pour indiquer les fichiers spécifiques que vous souhaitez inclure.
Exemple de sortie : classes.dex 59598 classes2.dex 8042 |
dex packages [option1 option2 ...] apk-file
|
Affiche l'arborescence des classes à partir de DEX. Dans la sortie, P , C , M et F indiquent respectivement des packages, des classes, des méthodes et des champs. x , k , r et d indiquent respectivement les nœuds supprimés, conservés, référencés et définis.
Ajoutez les options suivantes pour affiner la sortie :
Exemple de sortie (type/état/méthodes définies/méthodes référencées/taille en octets/nom) : P d 1 1 85 g P d 1 1 85 g.a C d 1 1 85 g.a.a M d 1 1 45 g.a.a java.lang.Object get() C r 0 1 40 byte[] M r 0 1 40 byte[] java.lang.Object clone() |
dex code --class class [--method method]
|
Affiche le bytecode d'une classe ou d'une méthode au format smali. Le nom de classe est obligatoire et affiche le nom complet de la classe à décompiler. Ajoutez l'option --method pour spécifier la méthode à décompiler.
Le format de la méthode à décompiler est |
Afficher les ressources stockées dans res/ et resources.arsc | Description |
resources packages
|
Affiche la liste des packages définis dans le tableau des ressources. |
resources configs --type type [--package package] apk-file
|
Affiche la liste des configurations pour l'élément type spécifié.
type est un type de ressource tel que string .
Incluez l'option --package si vous souhaitez spécifier le nom du package de la table des ressources. Sinon, le premier package défini sera utilisé.
|
resources value --config config --name name
--type type [--package package] apk-file
|
Affiche la valeur de la ressource spécifiée par config , name et type . L'option type correspond au type de la ressource, par exemple string .
Incluez l'option |
resources names --config config --type type
[--package package] apk-file
|
Affiche la liste des noms de ressources pour une configuration et un type. L'option type correspond au type de la ressource, par exemple string .
Incluez l'option --package si vous souhaitez spécifier le nom du package de la table des ressources. Sinon, le premier package défini sera utilisé.
|
resources xml --file path apk-file
|
Affiche la forme lisible d'un fichier XML binaire.
Incluez l'option file pour spécifier le chemin d'accès au fichier.
|