Die Befehlszeilenversion von APK Analyzer bietet nach Abschluss des Build-Prozesses sofortigen Einblick in die Zusammensetzung Ihres APKs und ermöglicht es Ihnen, Unterschiede zwischen zwei APKs zu vergleichen. Mit APK Analyzer wird der Zeitaufwand für das Beheben von Problemen mit DEX-Dateien und -Ressourcen in Ihrer App verringert und die Größe Ihres APK verringert.
apkanalyzer
ist im Paket Android SDK-Befehlszeilentools unter android_sdk/cmdline-tools/version/bin/apkanalyzer
enthalten.
Alternativ können Sie das APK Analyzer-Tool in Android Studio aufrufen, wie unter Build mit APK Analyzer analysieren beschrieben.
Syntax
Die Syntax für apkanalyzer
lautet:
apkanalyzer [global-options] subject verb [options] apk-file [apk-file2]
Die subject
ist das, was Sie abfragen möchten, und kann das gesamte APK oder ein Teil des APKs sein. Folgende Themen sind möglich:
apk
: Analysieren Sie APK-Dateiattribute wie App-ID, Versionscode und Versionsname.files
: Analysiere die Dateien in der APK-Datei.manifest
: Analysiere den Inhalt des Manifests in der APK-Datei.dex
: Analysieren Sie die DEX-Dateien in der APK-Datei.resources
: Text-, Bild- und Stringressourcen ansehen.
Das verb
ist das, was Sie über das Thema wissen möchten. Die Themen, Verben und ihre Optionen werden im folgenden Abschnitt über Befehle beschrieben.
Für jeden Befehl müssen Sie eine APK-Datei angeben. Nur für den Befehl apk compare
müssen Sie ein zweites APK angeben.
Sie können jede Option kürzen, solange die Option eindeutig ist. Die globale Option --human-readable
kann beispielsweise zu -h
gekürzt werden.
Im folgenden Beispiel wird das apk
(Subjekt) analysiert, um das file-size
(Verb) zu erhalten, und die Dateigröße dann in einem für Menschen lesbaren Format (-h
-Option) gedruckt:
apkanalyzer -h apk file-size myapk.apk
Befehle
Die folgenden Befehlsbeschreibungen sind nach Thema geordnet und enthalten die verfügbaren Kombinationen von Verb und Optionen für jedes Subjekt:
|
Beschreibung |
---|---|
apk summary apk-file
|
Gibt die Anwendungs-ID, den Versionscode und den Versionsnamen aus.
Beispielausgabe: com.myapp 5 1.1-beta |
apk file-size apk-file
|
Gibt die Gesamtgröße der APK-Datei aus. |
apk download-size apk-file
|
Gibt eine Schätzung der Downloadgröße des APK aus. |
apk features [--not-required] apk-file
|
Druckt vom APK verwendete Funktionen, die die Play Store-Filterung
auslösen. Fügen Sie die Option --not-required hinzu, um Features, die als nicht erforderlich gekennzeichnet sind, in die Ausgabe aufzunehmen.
Beispielausgabe: android.hardware.type.watch android.hardware.microphone implied: requested android.permission.RECORD_AUDIO permission |
apk compare [options] apk-file
apk-file2
|
Vergleicht die Größen von apk-file und apk-file2 .
Folgende Optionen sind verfügbar:
Beispielausgabe (alte Größe / neue Größe / Größenunterschied / Pfad): 39086736 48855615 9768879 / 10678448 11039232 360784 /classes.dex 18968956 18968956 0 /lib/ 110576 110100 -476 /AndroidManifest.xml ... |
APK-Dateisystem ansehen | Beschreibung |
files list apk-file
|
Listet alle Dateien im APK auf.
Beispielausgabe: / /classes2.dex /classes.dex /assets/ /assets/asset.data /AndroidManifest.xml /resources.arsc /res/ ... |
files cat --file path apk-file
|
Gibt den Dateiinhalt aus. Du musst einen Pfad innerhalb des APK mit der Option --file path angeben, z. B. --file
/AndroidManifest.xml
|
Informationen im Manifest ansehen | Beschreibung |
manifest print apk-file
|
Gibt das APK-Manifest im XML-Format aus. |
manifest application-id apk-file
|
Gibt den Anwendungs-ID-Wert aus. |
manifest version-name apk-file
|
Gibt den Wert des Versionsnamens aus. |
manifest version-code apk-file
|
Gibt den Versionscodewert aus. |
manifest min-sdk apk-file
| Gibt die SDK-Mindestversion aus. |
manifest target-sdk apk-file
|
Gibt die SDK-Zielversion aus. |
manifest permissions apk-file
|
Gibt die Liste der Berechtigungen aus. |
manifest debuggable apk-file
|
Gibt an, ob die App debug-fähig ist. |
Auf DEX-Dateiinformationen zugreifen | Beschreibung |
dex list apk-file
|
Gibt eine Liste der DEX-Dateien im APK aus. |
dex references [--files path] [--files path2]
apk-file
|
Gibt die Anzahl der Methodenverweise in den angegebenen DEX-Dateien aus.
Der Standardwert sind alle DEX-Dateien. Fügen Sie die Option --files hinzu, um bestimmte Dateien anzugeben, die Sie aufnehmen möchten.
Beispielausgabe: classes.dex 59598 classes2.dex 8042 |
dex packages [option1 option2 ...] apk-file
|
Gibt die Klassenstruktur aus DEX aus. In der Ausgabe geben P , C , M und F Pakete, Klassen, Methoden bzw. Felder an. x , k , r und d geben jeweils entfernte, beibehaltene, referenzierte bzw. definierte Knoten an.
Fügen Sie die folgenden Optionen hinzu, um die Ausgabe zu optimieren:
Beispielausgabe (Typ/Status/definierte Methoden/Verweis-Methoden/Bytegröße/Name): 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]
|
Gibt den Bytecode einer Klasse oder Methode im Smali-Format aus. Der Klassenname ist erforderlich und gibt den voll qualifizierten Klassennamen für die Dekompilierung aus. Fügen Sie die Option --method hinzu, um die Dekompilierungsmethode anzugeben.
Das Format für die Dekompilierungsmethode ist |
In res/ und Resources.arsc gespeicherte Ressourcen ansehen | Beschreibung |
resources packages
|
Gibt eine Liste der Pakete aus, die in der Ressourcentabelle definiert sind. |
resources configs --type type [--package package] apk-file
|
Gibt eine Liste von Konfigurationen für die angegebene type aus.
type ist ein Ressourcentyp wie string .
Verwenden Sie die Option --package , wenn Sie den Paketnamen der Ressourcentabelle angeben möchten. Andernfalls wird das erste definierte Paket verwendet.
|
resources value --config config --name name
--type type [--package package] apk-file
|
Gibt den Wert der durch config , name und type angegebenen Ressource aus. Die Option type ist der Typ der Ressource, z. B. string .
Verwenden Sie die Option |
resources names --config config --type type
[--package package] apk-file
|
Gibt eine Liste von Ressourcennamen für eine Konfiguration und einen Typ aus. Die Option type ist der Typ der Ressource, z. B. string .
Verwenden Sie die Option --package , wenn Sie den Paketnamen der Ressourcentabelle angeben möchten. Andernfalls wird das erste definierte Paket verwendet.
|
resources xml --file path apk-file
|
Gibt die visuell lesbare Form einer binären XML-Datei aus.
Verwenden Sie die Option file , um den Pfad zur Datei anzugeben.
|