Анализирует файлы (AAB, APK, JAR, AAR) в указанных местоположениях и возвращает все доступные сведения.
Использование
android analyze [-h] [--analysis=PARAM] [--format=PARAM] <path>
Параметры
--analysis=PARAM– категория анализа для фильтрации выходных данных (базовый, оптимизация). Поддерживает значения, разделенные запятыми (по умолчанию: все).-f,--format=PARAM– формат вывода: json, textproto. Если этот параметр не указан, выходные данные форматируются для удобства чтения.-h,--help– показывает справочное сообщение для указанной команды.
android вариант:
--sdk=PARAM– путь к Android SDK.-v,--verbose– включить подробный вывод для устранения неполадок.-V,--version– показать информацию о версии и выйти.
Позиционные аргументы
<path>- Путь к целевым файлам для анализа (AAB, APK, JAR, AAR).
Описание
android analyze проверяет один или несколько объектов Android, например пакеты приложений (.aab, .apk) или архивы библиотек (.aar, .jar), и сообщает подробные метаданные о сборке, структуре и производительности.
Поддерживаемые типы файлов
android analyze поддерживает как пакеты приложений, так и архивы библиотек:
- Наборы Android App Bundle (
.aab) и APK-файлы (.apk). Оцениваются метаданные на уровне приложения, конфигурации компиляции, характеристики DEX и результаты оптимизации. - Android Archives (
.aar) и Java Archives (.jar). Оцениваются метаданные на уровне библиотеки, показатели компиляции DEX, влияние правил сохранения и встроенные нативные компоненты.
Категории анализа (--analysis)
По умолчанию выполняется анализ по всем доступным категориям. Используйте --analysis=<category>, чтобы отфильтровать вывод по определенным категориям (разделенным запятыми).
basic– основные метаданные, такие как название пакета и версия приложений. Содержит идентификационные данные приложений (например, название пакета, название версии и код версии приложений).optimization– оптимизация компилятора, размеры DEX-файлов и метаданные сокращения кода.- Для приложений (
.aab,.apk). Отчеты о версии плагина Android Gradle (AGP), размере несжатого файла DEX, настройках и процентах сжатия и оптимизации R8, статусе оптимизации ресурсов R8 и метаданных маркера DEX. - Для библиотек (
.aar,.jar). Отчеты о размерах DEX-файлов D8 и R8, коэффициенте сохранения, сводках по коллекциям элементов (сохраненные и общие классы, методы и поля), используемых и неиспользуемых правилах сохранения на уровне пакета с радиусом воздействия, заблокированных правилах сохранения потребителей, упакованных нативных библиотеках (файлы.so) и предупреждениях об обнаруженных антипаттернах оптимизации.
- Для приложений (
Форматирование выходных данных (-f, --format)
- По умолчанию выходные данные выводятся в человекочитаемом формате сводки.
-f json, --format=json– выдает машиночитаемый JSON, подходящий для программного синтаксического анализа скриптами и конвейерами непрерывной интеграции.-f textproto, --format=textproto– вывод в текстовом формате Protobuf (textproto).
Примеры
Проанализировать APK-файл со всеми категориями по умолчанию:
android analyze app-release.apk
Анализ нескольких объектов вместе:
android analyze app-release.apk library.aar
Проанализировать AAB-файл и вывести результаты в формате JSON:
android analyze --format=json app-release.aab
Пример выходных данных в формате 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"
}
}
}
]
}
Проанализируйте библиотеку Java Archive (JAR) со всеми категориями по умолчанию:
android analyze library.jar
Проанализируйте библиотеку Android ARchive (AAR), отфильтровав ее по категории optimization и выведя результат в формате JSON:
android analyze --analysis=optimization -f json library.aar
Пример выходных данных в формате 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"
}
]
}