A versão de linha de comando do APK Analyzer oferece insight imediato sobre a composição do seu APK após a conclusão do processo de compilação e permite comparar as diferenças entre dois APKs. O uso do APK Analyzer reduz o tempo gasto na depuração de problemas com arquivos e recursos DEX no seu app e reduz o tamanho do APK.
O apkanalyzer
está incluído no pacote ferramentas de linha de comando do SDK do Android em android_sdk/cmdline-tools/version/bin/apkanalyzer
. Também é possível acessar a ferramenta APK Analyzer no Android Studio, conforme descrito em Analisar seu build com o APK Analyzer.
Sintaxe
A sintaxe de apkanalyzer
é:
apkanalyzer [global-options] subject verb [options] apk-file [apk-file2]
O subject
é o que você quer consultar e pode ser o APK inteiro ou parte dele. Um "subject" (assunto) pode ser qualquer um dos seguintes:
apk
: analise os atributos do arquivo APK como o ID do aplicativo, código da versão e nome da versão.files
: analise os arquivos dentro do arquivo APK.manifest
: analise o conteúdo do manifest dentro do arquivo APK.dex
: analise os arquivos DEX no arquivo APK.resources
: veja recursos de texto, imagem e string.
O verb
é o que você quer saber sobre o assunto. Os assuntos, verbos e as opções deles estão descritos na seção a seguir sobre comandos.
Todo comando requer a especificação de um arquivo APK. Somente o comando apk compare
requer que você especifique um segundo APK.
É possível encurtar todas as opções, desde que a opção seja não ambígua. Por exemplo, a opção global --human-readable
pode ser reduzida para -h
.
O exemplo a seguir analisa o apk
(assunto) para conseguir o file-size
(verbo) e mostra o tamanho do arquivo em um formato legível (opção -h
):
apkanalyzer -h apk file-size myapk.apk
Comandos
As descrições de comando a seguir são organizadas por assunto e listam as combinações disponíveis de verbos e as opções para cada assunto:
| Descrição |
---|---|
apk summary apk-file | Imprime o ID do aplicativo, o código da versão e o nome da versão. Exemplo de saída: com.myapp 5 1.1-beta |
apk file-size apk-file | Imprime o tamanho total do arquivo do APK. |
apk download-size apk-file | Exibe uma estimativa do tamanho do download do APK. |
apk features [--not-required] apk-file | Exibe os recursos usados pelo APK que acionam a filtragem da Play Store . Adicione a opção --not-required para incluir recursos marcados como não necessários na saída. Exemplo de saída: android.hardware.type.watch android.hardware.microphone implied: requested android.permission.RECORD_AUDIO permission |
apk compare [options] apk-file apk-file2 | Compara o tamanho de apk-file e apk-file2 . É possível incluir as seguintes opções:
Exemplo de saída (tamanho antigo / tamanho novo / diferença de tamanho / caminho): 39086736 48855615 9768879 / 10678448 11039232 360784 /classes.dex 18968956 18968956 0 /lib/ 110576 110100 -476 /AndroidManifest.xml ... |
Ver o sistema de arquivos APK | Descrição |
files list apk-file | Lista todos os arquivos no APK. Exemplo de saída: / /classes2.dex /classes.dex /assets/ /assets/asset.data /AndroidManifest.xml /resources.arsc /res/ ... |
files cat --file path apk-file | Exibe o conteúdo do arquivo. É necessário especificar um caminho dentro do APK usando a opção --file path , como --file /AndroidManifest.xml |
Ver informações no manifest | Descrição |
manifest print apk-file | Imprime o manifest do APK no formato XML. |
manifest application-id apk-file | Imprime o valor do ID do aplicativo. |
manifest version-name apk-file | Imprime o valor do nome da versão. |
manifest version-code apk-file | Imprime o valor do código de versão. |
manifest min-sdk apk-file | Imprime a versão mínima do SDK. |
manifest target-sdk apk-file | Imprime a versão do SDK de destino. |
manifest permissions apk-file | Imprime a lista de permissões. |
manifest debuggable apk-file | Imprime se o app é depurável. |
Acessar informações do arquivo DEX | Descrição |
dex list apk-file | Imprime uma lista dos arquivos DEX no APK. |
dex references [--files path] [--files path2] apk-file | Imprime o número de referências de métodos nos arquivos DEX especificados. O padrão inclui todos os arquivos DEX. Adicione a opção --files para indicar arquivos específicos que você queira incluir. Exemplo de saída: classes.dex 59598 classes2.dex 8042 |
dex packages [option1 option2 ...] apk-file | Exibe a árvore da classe a partir de DEX. Na saída, P , C , M , e F indicam pacotes, classes, métodos e campos, respectivamente. E x , k , r e d indicam nós removidos, mantidos, referenciados e definidos, respectivamente. Adicione as seguintes opções para refinar a saída:
Exemplo de saída (tipo/estado/métodos definidos/métodos referenciados /tamanho de byte/nome): 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] | Exibe o bytecode de uma classe ou método no formato smali. O nome da classe é obrigatório e mostra o nome da classe totalmente qualificado para descompilar. Adicione a opção --method para especificar o método a ser descompilado. O formato para o método a ser descompilado é |
Ver recursos armazenados em res/ e resources.arsc | Descrição |
resources packages | Exibe uma lista dos pacotes definidos na tabela de recursos. |
resources configs --type type [--package package] apk-file | Imprime uma lista de configurações para o type especificado. O type é um tipo de recurso, como string . Inclua a opção --package caso queira especificar o nome do pacote da tabela de recursos. Caso contrário, o primeiro pacote definido será usado. |
resources value --config config --name name --type type [--package package] apk-file | Exibe o valor do recurso especificado por config , name e type . A opção type é o tipo do recurso, como string . Inclua a opção |
resources names --config config --type type [--package package] apk-file | Exibe uma lista de nomes de recursos para uma configuração e um tipo. A opção type é o tipo do recurso, como string . Inclua a opção --package caso queira especificar o nome do pacote da tabela de recursos. Caso contrário, o primeiro pacote definido será usado. |
resources xml --file path apk-file | Exibe a forma legível de um arquivo XML binário. Inclua a opção file para especificar o caminho para o arquivo. |