Belirtilen konumlardaki dosyaları (AAB, APK, JAR, AAR) analiz eder ve mevcut tüm ayrıntıları raporlar.
Kullanım
android analyze [-h] [--analysis=PARAM] [--format=PARAM] <path>
Seçenekler
--analysis=PARAM- Çıkışı filtrelemek için analiz kategorisi (temel, optimizasyon). Virgülle ayrılmış değerleri destekler (varsayılan: tümü).-f,--format=PARAM- Çıkış biçimi: json, textproto. Atlanırsa çıkış, insanların okuyabileceği şekilde biçimlendirilir.-h,--help: Belirtilen komutla ilgili yardım mesajını gösterir.
android seçenekleri:
--sdk=PARAM: Android SDK'sının yolu.-v,--verbose- Sorun giderme için ayrıntılı çıkışı etkinleştirir.-V,--version- Sürüm bilgilerini yazdırıp çıkın.
Konumsal bağımsız değişkenler
<path>- Analiz edilecek hedef dosyaların (AAB, APK, JAR, AAR) yolu.
Açıklama
android analyze, uygulama paketleri (.aab, .apk) veya kitaplık arşivleri (.aar, .jar) gibi bir ya da daha fazla Android yapısını inceler ve ayrıntılı derleme, yapı ve performans meta verilerini raporlar.
Desteklenen Dosya Türleri
android analyze hem uygulama paketlerini hem de kitaplık arşivlerini destekler:
- Android App Bundle'lar (
.aab) ve APK'lar (.apk): Uygulama düzeyindeki meta verileri, derleme yapılandırmalarını, DEX özelliklerini ve optimizasyon çıktılarını değerlendirir. - Android Arşivleri (
.aar) ve Java Arşivleri (.jar): Kitaplık düzeyindeki meta verileri, DEX derleme metriklerini, saklama kuralı etkisini ve paketlenmiş yerel bileşenleri değerlendirir.
Analiz Kategorileri (--analysis)
Varsayılan olarak, mevcut tüm analiz kategorileri gerçekleştirilir. Çıkışı belirli kategorilere (virgülle ayrılmış) göre filtrelemek için
--analysis=<category> kullanın.
basic: Uygulamalar için paket adı ve sürüm gibi temel meta veriler: Uygulama kimlik bilgilerini (ör. uygulamalar için paket adı, sürüm adı ve sürüm kodu) bildirir.optimization: Derleyici optimizasyonları, DEX boyutları ve kod daraltma meta verileri:- Uygulamalar için (
.aab,.apk): Android Gradle Eklentisi (AGP) sürümünü, sıkıştırılmamış DEX boyutunu, R8 küçültme ve optimizasyon ayarları ile yüzdelerini, R8 kaynak optimizasyon durumunu ve DEX işaretleyici meta verilerini bildirir. - Kitaplıklar için (
.aar,.jar): D8 ve R8 DEX boyutlarını, saklama oranını, öğe koleksiyonu özetlerini (saklanan ve toplam sınıflar, yöntemler ve alanlar), etki yarıçapıyla birlikte kullanılan ve kullanılmayan paket genelindeki saklama kurallarını, engellenen tüketici saklama kurallarını, paketlenmiş yerel kitaplıkları (.sodosyaları) ve algılanan optimizasyon karşıtı kalıplarla ilgili uyarıları bildirir.
- Uygulamalar için (
Çıkış Biçimlendirme (-f, --format)
- Varsayılan olarak, çıkış okunabilir bir özet biçiminde yazdırılır.
-f json, --format=json: Komut dosyaları ve CI ardışık düzenleri tarafından programatik ayrıştırmaya uygun, makine tarafından okunabilir JSON oluşturur.-f textproto, --format=textproto: Protobuf metin biçimini (textproto) yayınlar.
Örnekler
Tüm varsayılan kategorileri içeren bir APK'yı analiz etme:
android analyze app-release.apk
Birden fazla çıktıyı birlikte analiz etme:
android analyze app-release.apk library.aar
Bir AAB'yi analiz edip sonuçları JSON olarak çıkarma:
android analyze --format=json app-release.aab
Örnek JSON çıkışı:
{
"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"
}
}
}
]
}
Tüm varsayılan kategorileri içeren bir Java Arşivi (JAR) kitaplığını analiz etme:
android analyze library.jar
optimization kategorisi için filtreleme yapan ve JSON olarak çıktı veren bir Android ARchive (AAR) kitaplığını analiz etme:
android analyze --analysis=optimization -f json library.aar
Örnek JSON çıkışı:
{
"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"
}
]
}