La versione a riga di comando dell'Analizzatore APK fornisce informazioni immediate sulla composizione dell'APK al termine del processo di creazione e consente di confrontare le differenze tra due APK. L'utilizzo dell'Analizzatore APK riduce il tempo dedicato al debug dei problemi con le risorse e i file DEX all'interno dell'app e riduce le dimensioni dell'APK.
apkanalyzer
è incluso nel pacchetto
Strumenti a riga di comando dell'SDK Android all'indirizzo
android_sdk/cmdline-tools/version/bin/apkanalyzer
.
In alternativa, puoi accedere allo strumento Analizzatore APK in Android Studio come descritto in Analizzare la build con lo Strumento di analisi APK.
Sintassi
La sintassi di apkanalyzer
è:
apkanalyzer [global-options] subject verb [options] apk-file [apk-file2]
subject
è l'elemento su cui vuoi eseguire la query e può essere l'intero APK
o una parte dell'APK. Un soggetto può essere uno dei seguenti:
apk
: analizza gli attributi dei file APK, come ID applicazione, codice di versione e nome della versione.files
: analizza i file all'interno del file APK.manifest
: analizza i contenuti del file manifest all'interno del file APK.dex
: analizza i file DEX all'interno del file APK.resources
: visualizza risorse di testo, immagini e stringhe.
verb
è ciò che vuoi sapere sull'argomento. I soggetti, i verbi e le relative opzioni sono descritti nella seguente sezione sui comandi.
Ogni comando richiede che tu specifichi un file APK. Solo il comando apk compare
richiede di specificare un secondo APK.
Puoi abbreviare ogni opzione purché non sia ambigua. Ad esempio,
l'opzione globale --human-readable
può essere ridotta a
-h
.
L'esempio seguente analizza l'elemento apk
(soggetto)
per ottenere il relativo file-size
(verbo), quindi stampa le dimensioni del file in
formato leggibile (opzione -h
):
apkanalyzer -h apk file-size myapk.apk
Comandi
Le seguenti descrizioni dei comandi sono organizzate per soggetto ed elencano le combinazioni di verbi e opzioni disponibili per ciascun soggetto:
|
Descrizione |
---|---|
apk summary apk-file
|
Stampa l'ID applicazione, il codice versione e il nome della versione.
Output di esempio: com.myapp 5 1.1-beta |
apk file-size apk-file
|
Stampa le dimensioni totali del file dell'APK. |
apk download-size apk-file
|
Consente di stampare una stima delle dimensioni di download dell'APK. |
apk features [--not-required] apk-file
|
Stampa le funzionalità usate dall'APK che attivano i
filtri del Play Store
. Aggiungi l'opzione --not-required
per includere le funzionalità contrassegnate come non obbligatorie nell'output.
Output di esempio: android.hardware.type.watch android.hardware.microphone implied: requested android.permission.RECORD_AUDIO permission |
apk compare [options] apk-file
apk-file2
|
Confronta le dimensioni di apk-file e
apk-file2 .
Puoi includere le seguenti opzioni:
Output di esempio (vecchia dimensione / nuova dimensione / differenza di dimensioni / percorso): 39086736 48855615 9768879 / 10678448 11039232 360784 /classes.dex 18968956 18968956 0 /lib/ 110576 110100 -476 /AndroidManifest.xml ... |
Visualizzare il file system APK | Descrizione |
files list apk-file
|
Elenca tutti i file presenti nell'APK.
Output di esempio: / /classes2.dex /classes.dex /assets/ /assets/asset.data /AndroidManifest.xml /resources.arsc /res/ ... |
files cat --file path apk-file
|
Consente di stampare i contenuti del file. Devi specificare un percorso all'interno dell'APK utilizzando
l'opzione --file path , come --file
/AndroidManifest.xml
|
Visualizza le informazioni nel file manifest | Descrizione |
manifest print apk-file
|
Consente di stampare il file manifest dell'APK in formato XML. |
manifest application-id apk-file
|
Stampa il valore dell'ID applicazione. |
manifest version-name apk-file
|
Stampa il valore del nome della versione. |
manifest version-code apk-file
|
Stampa il valore del codice versione. |
manifest min-sdk apk-file
| Stampa la versione minima dell'SDK. |
manifest target-sdk apk-file
|
Stampa la versione target dell'SDK. |
manifest permissions apk-file
|
Stampa l'elenco delle autorizzazioni. |
manifest debuggable apk-file
|
Indica se è possibile eseguire il debug dell'app. |
Accedere alle informazioni del file DEX | Descrizione |
dex list apk-file
|
Stampa un elenco dei file DEX nell'APK. |
dex references [--files path] [--files path2]
apk-file
|
Stampa il numero di riferimenti al metodo nei file DEX specificati.
L'impostazione predefinita è Tutti i file DEX. Aggiungi l'opzione --files per indicare i file specifici da includere.
Output di esempio: classes.dex 59598 classes2.dex 8042 |
dex packages [option1 option2 ...] apk-file
|
Stampa la struttura della classe da DEX. Nell'output, P ,
C , M e F indicano rispettivamente pacchetti,
classi, metodi e campi. E x ,
k , r e d indicano rispettivamente i nodi rimossi, mantenuti,
indicati e definiti.
Aggiungi le seguenti opzioni per perfezionare l'output:
Output di esempio (tipo/stato/metodi definiti/metodi di riferimento/dimensione/nome byte): 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]
|
Stampa il bytecode di una classe o di un metodo in formato smali. Il nome della classe è obbligatorio e stampa il nome completo della classe da decompilare. Aggiungi l'opzione --method per specificare il metodo per la decompilazione.
Il formato del metodo di decompilazione è |
Visualizza le risorse archiviate in res/ e resource.arsc | Descrizione |
resources packages
|
Stampa un elenco dei pacchetti definiti nella tabella delle risorse. |
resources configs --type type [--package package] apk-file
|
Stampa un elenco di configurazioni per l'elemento type specificato.
type è un tipo di risorsa come string .
Includi l'opzione --package
se vuoi specificare il nome del pacchetto della tabella delle risorse; in caso contrario
verrà utilizzato il primo pacchetto definito.
|
resources value --config config --name name
--type type [--package package] apk-file
|
Stampa il valore della risorsa specificata da config ,
name e type . L'opzione type è il tipo di risorsa, ad esempio string .
Includi l'opzione |
resources names --config config --type type
[--package package] apk-file
|
Stampa un elenco di nomi di risorse per una configurazione e un tipo. L'opzione type è il tipo di risorsa, ad esempio string .
Includi l'opzione --package
se vuoi specificare il nome del pacchetto della tabella delle risorse; in caso contrario
verrà utilizzato il primo pacchetto definito.
|
resources xml --file path apk-file
|
Stampa il formato leggibile di un file XML binario.
Includi l'opzione file per specificare il percorso del file.
|