Menganalisis file (AAB, APK, JAR, AAR) di lokasi yang ditentukan dan melaporkan kembali semua detail yang tersedia.
Penggunaan
android analyze [-h] [--analysis=PARAM] [--format=PARAM] <path>
Opsi
--analysis=PARAM- Kategori analisis untuk memfilter output (dasar, pengoptimalan). Mendukung nilai yang dipisahkan koma (default: semua).-f,--format=PARAM- Format output: json, textproto. Jika dihilangkan, output akan diformat agar dapat dibaca manusia.-h,--help- Menampilkan pesan bantuan untuk perintah yang ditentukan.
Opsi android:
--sdk=PARAM- Jalur ke Android SDK.-v,--verbose- Mengaktifkan output panjang untuk pemecahan masalah.-V,--version- Mencetak informasi versi dan keluar.
Argumen posisi
<path>- Jalur ke file target yang akan dianalisis (AAB, APK, JAR, AAR).
Deskripsi
android analyze memeriksa satu atau beberapa artefak Android—seperti paket
aplikasi (.aab, .apk) atau arsip library (.aar, .jar)—dan melaporkan
metadata build, struktur, dan performa yang mendetail.
Jenis File yang Didukung
android analyze mendukung paket aplikasi dan arsip library:
- Android App Bundle (
.aab) dan APK (.apk): Mengevaluasi metadata tingkat aplikasi, konfigurasi kompilasi, karakteristik DEX, dan output pengoptimalan. - Android Archive (
.aar) dan Java Archive (.jar): Mengevaluasi metadata tingkat library, metrik kompilasi DEX, dampak aturan keep, dan komponen native yang dipaketkan.
Kategori Analisis (--analysis)
Secara default, semua kategori analisis yang tersedia akan dijalankan. Gunakan
--analysis=<category> untuk memfilter output ke kategori tertentu
(dipisahkan koma).
basic: Metadata dasar seperti nama paket dan versi untuk aplikasi: Melaporkan detail identifikasi aplikasi (misalnya, nama paket, nama versi, dan kode versi untuk aplikasi).optimization: Pengoptimalan compiler, ukuran DEX, dan metadata penyingkatan kode:- Untuk aplikasi (
.aab,.apk): Melaporkan versi Plugin Android Gradle (AGP), ukuran DEX yang tidak dikompresi, setelan dan persentase penyingkatan dan pengoptimalan R8, status pengoptimalan resource R8, dan metadata penanda DEX. - Untuk library (
.aar,.jar): Melaporkan ukuran DEX D8 dan R8, rasio keep, ringkasan koleksi item (class, metode, dan kolom yang dipertahankan vs. total), aturan keep seluruh paket yang digunakan dan tidak digunakan dengan radius dampak, aturan keep konsumen yang diblokir, library native yang dipaketkan (file.so), dan peringatan untuk antipola pengoptimalan yang terdeteksi.
- Untuk aplikasi (
Pemformatan Output (-f, --format)
- Secara default, output dicetak dalam format ringkasan yang dapat dibaca manusia.
-f json, --format=json: Memunculkan JSON yang dapat dibaca mesin, cocok untuk penguraian terprogram oleh skrip dan pipeline CI.-f textproto, --format=textproto: Memunculkan format teks Protobuf (textproto).
Contoh
Menganalisis APK dengan semua kategori default:
android analyze app-release.apk
Menganalisis beberapa artefak sekaligus:
android analyze app-release.apk library.aar
Menganalisis AAB dan menampilkan hasilnya sebagai JSON:
android analyze --format=json app-release.aab
Contoh output 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"
}
}
}
]
}
Menganalisis library Java Archive (JAR) dengan semua kategori default:
android analyze library.jar
Menganalisis pemfilteran library Android Archive (AAR) untuk kategori optimization
dan menghasilkan output sebagai JSON:
android analyze --analysis=optimization -f json library.aar
Contoh output 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"
}
]
}