Analisa os arquivos (AAB, APK, JAR, AAR) nos locais informados e informa todos os detalhes disponíveis.
Uso
android analyze [-h] [--analysis=PARAM] [--format=PARAM] <path>
Opções
--analysis=PARAM: categoria de análise para filtrar a saída (básica, otimização). Aceita valores separados por vírgulas (padrão: todos).-f,--format=PARAM: formato de saída: json, textproto. Se omitida, a saída será formatada para leitura humana.-h,--help: mostra a mensagem de ajuda do comando especificado.
Opções de android:
--sdk=PARAM: caminho para o SDK do Android.-v,--verbose: ativa a saída detalhada para solução de problemas.-V,--version: mostra informações sobre a versão e sai.
Argumentos posicionais
<path>: caminho para os arquivos de destino a serem analisados (AAB, APK, JAR, AAR).
Descrição
O android analyze inspeciona um ou mais artefatos do Android, como pacotes de aplicativos (.aab, .apk) ou arquivos de biblioteca (.aar, .jar), e informa
metadados detalhados de build, estrutura e desempenho.
Tipos de arquivos compatíveis
O android analyze é compatível com pacotes de aplicativos e arquivos de biblioteca:
- Android App Bundles (
.aab) e APKs (.apk): avalia metadados no nível do aplicativo, configurações de compilação, características de DEX e saídas de otimização. - Arquivos do Android (
.aar) e arquivos Java (.jar): avalia metadados no nível da biblioteca, métricas de compilação DEX, impacto da regra de manutenção e componentes nativos incluídos.
Categorias de análise (--analysis)
Por padrão, todas as categorias de análise disponíveis são realizadas. Use
--analysis=<category> para filtrar a saída para categorias específicas
(separadas por vírgulas).
basic: metadados básicos, como nome do pacote e versão dos aplicativos: informa detalhes de identificação do aplicativo (por exemplo, nome do pacote, nome da versão e código da versão dos aplicativos).optimization: otimizações do compilador, tamanhos de DEX e metadados de redução de código:- Para aplicativos (
.aab,.apk): informa a versão do Plug-in do Android para Gradle (AGP), o tamanho do DEX descompactado, as configurações e porcentagens de redução e otimização do R8, o status de otimização de recursos do R8 e os metadados do marcador DEX. - Para bibliotecas (
.aar,.jar): informa os tamanhos de DEX do D8 e do R8, a proporção de retenção, os resumos de coleta de itens (classes, métodos e campos mantidos x totais), as regras de retenção usadas e não usadas em todo o pacote com raio de impacto, as regras de retenção de consumidor bloqueadas, as bibliotecas nativas empacotadas (arquivos.so) e os avisos para antipadrões de otimização detectados.
- Para aplicativos (
Formatação de saída (-f, --format)
- Por padrão, a saída é impressa em um formato de resumo legível por humanos.
-f json, --format=json: emite JSON legível por máquina, adequado para análise programática por scripts e pipelines de CI.-f textproto, --format=textproto: emite o formato de texto do Protobuf (textproto).
Exemplos
Analise um APK com todas as categorias padrão:
android analyze app-release.apk
Analisar vários artefatos juntos:
android analyze app-release.apk library.aar
Analise um AAB e mostre os resultados como JSON:
android analyze --format=json app-release.aab
Exemplo de saída JSON:
{
"results": [
{
"optimization": {
"bundleAnalysisResult": {
"agpVersion": "9.3.2",
"r8Json": {
"version": "9.3.16",
"options": {
"isRepackageClassesEnabled": true,
"isProguardCompatibilityModeEnabled": false
},
"stats": {
"shrinkingRatio": 0.9606,
"optimizationRatio": 0.9551,
"obfuscationRatio": 0.9622
},
"resourceOptimizationStatus": "R8_RESOURCE_OPTIMIZATION_STATUS_DISABLED",
"r8DexChecksumStatus": "EXACT_MATCH"
},
"r8DexMarkerMetadata": {
"r8Enabled": true,
"d8Enabled": false,
"fullModeEnabled": true
},
"mappingObfuscationRatio": 0.97108626,
"dexHeuristicObfuscationRatio": 0.97108626,
"uncompressedDexSizeBytes": "6198152"
}
},
"artifactPath": "app-release.aab",
"basic": {
"appInfo": {
"packageName": "com.google.samples.apps.nowinandroid",
"versionName": "1.0",
"versionCode": "1"
}
}
}
]
}
Analise uma biblioteca de arquivos Java (JAR) com todas as categorias padrão:
android analyze library.jar
Analise uma biblioteca de arquivo do Android (AAR) filtrando pela categoria optimization
e gerando como JSON:
android analyze --analysis=optimization -f json library.aar
Exemplo de saída JSON:
{
"results": [
{
"optimization": {
"libraryAnalysisResult": {
"dex": {
"d8CompileResult": {
"dexSizeBytes": 2117400
},
"r8CompileResult": {
"dexSizeBytes": 1100,
"configuration": {
"keepRules": [
{
"source": "-keep class com.example.ExampleClass_* {\n static *** builder();\n}",
"keptItemCount": 2
},
{
"source": "-keep class com.example.SomeClass {\n public static *** SDK_ROOT_CLASS_NAME;\n}",
"keptItemCount": 2
}
]
},
"classes": {
"itemCount": 3437,
"keptItemCount": 2,
"noObfuscationCount": 2,
"noOptimizationCount": 2,
"noShrinkingCount": 2
},
"fields": {
"itemCount": 9835,
"keptItemCount": 1,
"noObfuscationCount": 1,
"noOptimizationCount": 1,
"noShrinkingCount": 1
},
"methods": {
"itemCount": 16333,
"keptItemCount": 1,
"noObfuscationCount": 1,
"noOptimizationCount": 1,
"noShrinkingCount": 1
}
},
"validateConsumerKeepRulesResult": {}
},
"r8Version": "9.5.17-dev",
"version": "kg=1_r8=9.5.17-dev"
}
},
"artifactPath": "library.aar"
}
]
}