apkanalyzer

APK Analiz Aracı'nın komut satırı sürümü, oluşturma işlemi tamamlandıktan sonra APK'nızın bileşimini oluşturur ve İki APK arasındaki farkları karşılaştırır. APK Analiz Aracı'nı kullanmak uygulamanızda DEX dosyaları ve kaynaklarıyla ilgili hata ayıklama sorunları için harcadığınız süreyi ve APK'nızın boyutunu küçültür.

apkanalyzer, şuna dahildir: Android SDK Komut Satırı Araçları paketi android_sdk/cmdline-tools/version/bin/apkanalyzer. Alternatif olarak, APK Analiz Aracı'na şuradan da erişebilirsiniz: Android Studio: Derlemenizi APK Analiz Aracı ile analiz edin.

Sözdizimi

apkanalyzer için söz dizimi şöyledir:

apkanalyzer [global-options] subject verb [options] apk-file [apk-file2]

subject, sorgulamak istediğiniz öğedir ve APK'nın tamamı olabilir. veya APK'nın bir parçası olabilir. Konu, aşağıdakilerden herhangi biri olabilir:

  • apk: Uygulama kimliği, sürüm kodu, ve sürüm adı.
  • files: APK dosyasındaki dosyaları analiz edin.
  • manifest: APK dosyasındaki manifestin içeriğini analiz edin.
  • dex: APK dosyasındaki DEX dosyalarını analiz edin.
  • resources: Metin, resim ve dize kaynaklarını görüntüleyin.

verb, konu hakkında bilmek istediğiniz şeydir. Özneler, fiiller ve bunların seçenekleri, komutlar hakkındaki aşağıdaki bölümde açıklanmıştır.

Her komut bir APK dosyası belirtmenizi gerektirir. Yalnızca apk compare komutu ikinci bir APK belirtmenizi gerektirir.

Seçenek açık olduğu sürece her seçeneği kısaltabilirsiniz. Örneğin, --human-readable genel seçeneği şu şekilde kısaltılabilir: -h.

Aşağıdaki örnekte apk (konu) analiz edilmiştir file-size (fiil) almak için kullanılır, sonra da dosya boyutunu insan tarafından okunabilir biçim (-h seçeneği):

apkanalyzer -h apk file-size myapk.apk

Komutlar

Aşağıdaki komut açıklamaları konuya göre düzenlenir ve her bir komut için uygun fiil ve seçenek kombinasyonlarını aşağıda bulabilirsiniz:

APK dosyası özelliklerini görüntüleme Açıklama
apk summary apk-file Uygulama kimliğini, sürüm kodunu ve sürüm adını yazdırır.

Örnek çıkış:

com.myapp 5 1.1-beta

apk file-size apk-file APK'nın toplam dosya boyutunu yazdırır.
apk download-size apk-file APK'nın indirme boyutuna ilişkin bir tahmin yazdırır.
apk features [--not-required] apk-file Tetikleyici APK'nın kullandığı yazdırma özellikleri Play Store filtrelemesi ziyaret edin. --not-required seçeneğini ekleyin çıktıda gerekli değil olarak işaretlenen özellikleri dahil edin.

Örnek çıkış:

android.hardware.type.watch
android.hardware.microphone implied:
    requested android.permission.RECORD_AUDIO permission
.

apk compare [options] apk-file apk-file2 apk-file ve boyutlarını karşılaştırır apk-file2. Aşağıdaki seçenekleri ekleyebilirsiniz:
  • --different-only: Dizinleri ve dosyaları şununla yazdırır: farklar olabilir.
  • --files-only: Dizin girişlerini yazdırmaz.
  • --patch-size: Dosya bazında yama için bir tahmin gösterir ortaya çıkarır.

Örnek çıktı (eski boyut / yeni boyut / boyut farkı / yol):

39086736 48855615 9768879 /
10678448 11039232 360784 /classes.dex
18968956 18968956 0 /lib/
110576 110100 -476 /AndroidManifest.xml
...
.

APK dosya sistemini görüntüleme Açıklama
files list apk-file APK'daki tüm dosyaları listeler.

Örnek çıkış:

/
/classes2.dex
/classes.dex
/assets/
/assets/asset.data
/AndroidManifest.xml
/resources.arsc
/res/
...

files cat --file path apk-file Dosya içeriklerini yazdırır. APK içinde bir yol belirtmek için --file path seçeneği (ör. --file /AndroidManifest.xml)
Manifest dosyasındaki bilgileri görüntüle Açıklama
manifest print apk-file APK manifestini XML biçiminde yazdırır.
manifest application-id apk-file Uygulama kimliği değerini yazdırır.
manifest version-name apk-file Sürüm adı değerini yazdırır.
manifest version-code apk-file Sürüm kodu değerini yazdırır.
manifest min-sdk apk-file Minimum SDK sürümünü yazdırır.
manifest target-sdk apk-file Hedef SDK sürümünü yazdırır.
manifest permissions apk-file İzin listesini yazdırır.
manifest debuggable apk-file Uygulamanın hata ayıklaması mümkün olup olmadığını yazdırır.
DEX dosyası bilgilerine erişim Açıklama
dex list apk-file APK'daki DEX dosyalarının listesini yazdırır.
dex references [--files path] [--files path2] apk-file Belirtilen DEX dosyalarındaki yöntem referansı sayısını yazdırır. Tüm DEX dosyaları varsayılan olarak kullanılır. --files seçeneğini şunun için ekleyin: dahil etmek istediğiniz belirli dosyaları belirtin.

Örnek çıkış:

classes.dex 59598
classes2.dex 8042

dex packages [option1 option2 ...] apk-file DEX'ten sınıf ağacını yazdırır. Çıkışta, P C, M ve F paketleri gösterir, sınıfları, yöntemleri ve alanları gösterir. x, k, r ve d kaldırıldı, saklandı, ve tanımlı düğümler arasında geçiş yapın.

Sonucu hassaslaştırmak için aşağıdaki seçenekleri ekleyin:

  • --defined-only: Yalnızca çıkıştaki APK'da tanımlanan sınıfları içerir.
  • --files: Dahil edilecek DEX dosya adlarını belirtir. Varsayılan: tüm DEX dosyaları.
  • --proguard-folder file: Eşlemeleri aramak için ProGuard çıkış klasörünü belirtir.
  • --proguard-mappings file: ProGuard eşlemeleri dosyasını belirtir.
  • --proguard-seeds file: ProGuard başlangıç noktası dosyasını belirtir.
  • --proguard-usages file: ProGuard kullanımları dosyasını belirtir.
  • --show-removed: ProGuard tarafından kaldırılan sınıfları ve üyeleri gösterir.

Örnek çıkış (tür/durum/tanımlanmış yöntemler/başvurulan yöntemler) /bayt boyutu/ad):

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] Bir sınıfın veya yöntemin bayt kodunu smali biçiminde yazdırır. Sınıf adı gerekir ve derlemesi için tam nitelikli sınıf adını yazdırır. URL'yi --method seçeneği.

Biçim name(params)returnType, örneğin, someMethod(Ljava/lang/String;I)V.

res/ ve resources.arsc içinde depolanan kaynakları görüntüleme Açıklama
resources packages Kaynaklar tablosunda tanımlanan paketlerin listesini yazdırır.
resources configs --type type [--package package] apk-file Belirtilen type için yapılandırmaların listesini yazdırır. type, string gibi bir kaynak türüdür. --package ekleyin kaynak tablosu paket adını belirtmek istiyorsanız tanımlanan ilk paket kullanılacak.
resources value --config config --name name --type type [--package package] apk-file config tarafından belirtilen kaynağın değerini yazdırır. name ve type. İlgili içeriği oluşturmak için kullanılan type seçeneği kaynağın türünü ifade eder. Örneğin: string.

--package ekleyin kaynak tablosu paket adını belirtmek istiyorsanız tanımlanan ilk paket kullanılacak.

resources names --config config --type type [--package package] apk-file Yapılandırma ve tür için kaynak adlarının listesini yazdırır. İlgili içeriği oluşturmak için kullanılan type seçeneği kaynağın türünü ifade eder. Örneğin: string. --package ekleyin kaynak tablosu paket adını belirtmek istiyorsanız tanımlanan ilk paket kullanılacak.
resources xml --file path apk-file İkili XML dosyasının kullanıcılar tarafından okunabilen biçimini yazdırır. Şunu dahil et: file seçeneğini kullanabilirsiniz.