Die Befehlszeilenversion von APK Analyzer bietet sofortigen Einblick in die Zusammensetzung des APK nach Abschluss des Build-Prozesses und ermöglicht Ihnen, die Unterschiede zwischen zwei APKs. Die Verwendung von APK Analyzer reduziert die Zeit, die Sie für das Beheben von Problemen mit DEX-Dateien und -Ressourcen in Ihrer App aufwenden, verringert die Größe Ihres APK.
apkanalyzer
ist enthalten in
Android SDK-Befehlszeilentools unter
android_sdk/cmdline-tools/version/bin/apkanalyzer
.
Alternativ können Sie auf das APK Analyzer-Tool in
Android Studio, wie in
Analysiere deinen Build mit APK Analyzer.
Syntax
Die Syntax für apkanalyzer
lautet:
apkanalyzer [global-options] subject verb [options] apk-file [apk-file2]
Das subject
ist das, was Sie abfragen möchten. Es kann das gesamte APK sein.
oder ein Teil des APK ist. Ein Subjekt kann Folgendes sein:
apk
: Analysieren Sie APK-Dateiattribute wie die App-ID, den Versionscode und Versionsname.files
: Analysiere die Dateien in der APK-Datei.manifest
: Analysiere den Inhalt des Manifests in der APK-Datei.dex
: Analysiere die DEX-Dateien in der APK-Datei.resources
: Damit können Sie Text-, Bild- und String-Ressourcen ansehen.
verb
ist das, was Sie über das Thema wissen möchten. Die Fächer,
Verben und ihre Optionen werden im folgenden Abschnitt zu Befehlen beschrieben.
Jeder Befehl erfordert die Angabe einer APK-Datei. Nur die
Für den Befehl apk compare
musst du ein zweites APK angeben.
Sie können jede Option kürzen, wenn die Option eindeutig ist. Beispiel:
Die globale Option --human-readable
kann zu folgender Abkürzung gekürzt werden:
-h
.
Im folgenden Beispiel wird apk
(Betreff) analysiert.
um das Verb file-size
zu erhalten, und gibt dann die Dateigröße
menschenlesbares Format (Option -h
):
apkanalyzer -h apk file-size myapk.apk
Befehle
Die folgenden Befehlsbeschreibungen sind nach Betreff geordnet und enthalten die verfügbare 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 Funktionen, die vom APK verwendet werden, die auslösen
Play Store-Filter
Option --not-required hinzufügen
um Funktionen einzubeziehen, die als nicht erforderlich gekennzeichnet sind.
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 .
Sie können die folgenden Optionen angeben:
<ph type="x-smartling-placeholder">
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 der APK-Datei mithilfe von
die Option --file path , 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 Wert der Anwendungs-ID 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
|
Druckt 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
|
Druckt eine Liste der DEX-Dateien im APK. |
dex references [--files path] [--files path2]
apk-file
|
Gibt die Anzahl der Methodenverweise in den angegebenen DEX-Dateien aus.
Standardmäßig werden alle DEX-Dateien verwendet. Fügen Sie die Option --files zu
bestimmte Dateien an, die Sie einschließen möchten.
Beispielausgabe: classes.dex 59598 classes2.dex 8042 |
dex packages [option1 option2 ...] apk-file
|
Gibt die Klassenstruktur von DEX aus. In der Ausgabe P
C , M und F stehen für Pakete.
Klassen, Methoden bzw. Feldern. Und x ,
k , r und d geben an, dass sie entfernt, beibehalten
referenzierten bzw. definierten Knoten.
Fügen Sie die folgenden Optionen hinzu, um die Ausgabe zu verfeinern:
Beispielausgabe (Typ/Status/definierte Methoden/Verweismethoden) /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. Kursname
ist erforderlich und gibt den voll qualifizierten Klassennamen zur Dekompilierung aus. Fügen Sie den
--method , um die zu dekompilierende Methode anzugeben.
Das Format
für die Dekompiliermethode |
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 der Konfigurationen für die angegebene type aus.
type ist ein Ressourcentyp wie string .
--package einschließen
Option, 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 angegebenen Ressource aus,
name und type . Die
Die Option type ist der Ressourcentyp, z. B.
string .
|
resources names --config config --type type
[--package package] apk-file
|
Gibt eine Liste der Ressourcennamen für eine Konfiguration und einen Typ aus. Die
Die Option type ist der Ressourcentyp, z. B.
string .
--package einschließen
Option, wenn Sie den Paketnamen der Ressourcentabelle angeben möchten. Andernfalls
wird das erste definierte Paket verwendet.
|
resources xml --file path apk-file
|
Gibt die menschenlesbare Form einer binären XML-Datei aus.
Fügen Sie die
file , um den Pfad zur Datei anzugeben.
|