apkanalyzer

Versi command line APK Analyzer memberikan insight langsung tentang komposisi APK Anda setelah proses build selesai, dan memungkinkan Anda untuk membandingkan perbedaan antara dua APK. Penggunaan APK Analyzer akan mengurangi waktu yang diperlukan untuk men-debug masalah terkait file DEX dan resource dalam aplikasi Anda, serta mengurangi ukuran APK Anda.

apkanalyzer disertakan dalam paket Alat Command Line Android SDK di android_sdk/cmdline-tools/version/bin/apkanalyzer. Atau, Anda dapat mengakses alat APK Analyzer dalam Android Studio seperti dijelaskan dalam Menganalisis build Anda dengan APK Analyzer.

Sintaksis

Sintaksis untuk apkanalyzer adalah:

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

subject adalah hal yang ingin Anda kueri dan dapat berupa seluruh APK atau bagian dari APK. Subjek dapat berupa salah satu dari berikut:

  • apk: Menganalisis atribut file APK seperti ID aplikasi, kode versi, dan nama versi.
  • files: Menganalisis file yang ada di dalam file APK.
  • manifest: Menganalisis isi manifes yang ada di dalam file APK.
  • dex: Menganalisis file DEX yang ada di dalam file APK.
  • resources: Melihat teks, gambar, dan resource string.

verb adalah hal yang ingin Anda ketahui tentang subjek. Subjek, kata kerja, dan opsinya dijelaskan di bagian berikut tentang perintah.

Setiap perintah mengharuskan Anda menentukan file APK. Hanya perintah apk compare yang mengharuskan Anda menentukan APK kedua.

Anda dapat mempersingkat setiap opsi selama opsi tersebut tidak ambigu. Misalnya, opsi global --human-readable dapat disingkat menjadi -h.

Contoh berikut menganalisis apk (subject) untuk mendapatkan file-size (verb), lalu mencetak ukuran file dalam format yang dapat dibaca manusia (opsi -h):

apkanalyzer -h apk file-size myapk.apk

Perintah

Deskripsi perintah berikut disusun berdasarkan subject dan mencantumkan kombinasi verb dan opsi yang tersedia untuk setiap subject:

Melihat atribut file APK Deskripsi
apk summary apk-file Mencetak ID aplikasi, kode versi, dan nama versi.

Contoh output:

com.myapp 5 1.1-beta

apk file-size apk-file Mencetak ukuran total file APK.
apk download-size apk-file Mencetak perkiraan ukuran file download APK.
apk features [--not-required] apk-file Mencetak fitur yang digunakan oleh APK yang memicu pemfilteran Play Store . Menambahkan opsi --not-required untuk menyertakan fitur yang ditandai sebagai tidak diperlukan dalam output.

Contoh output:

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

apk compare [options] apk-file apk-file2 Membandingkan ukuran apk-file dan apk-file2. Anda dapat menyertakan opsi berikut:
  • --different-only: Mencetak direktori dan file dengan perbedaan.
  • --files-only: Tidak mencetak entri direktori.
  • --patch-size: Menampilkan perkiraan patch untuk setiap file, bukan perbedaan mentah.

Contoh output (ukuran lama / ukuran baru / perbedaan ukuran / jalur):

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

Melihat sistem file APK Deskripsi
files list apk-file Mencantumkan semua file di APK.

Contoh output:

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

files cat --file path apk-file Mencetak isi file. Anda harus menentukan jalur di dalam APK menggunakan opsi --file path, seperti --file /AndroidManifest.xml
Melihat informasi dalam manifes Deskripsi
manifest print apk-file Mencetak manifes APK dalam format XML.
manifest application-id apk-file Mencetak nilai ID aplikasi.
manifest version-name apk-file Mencetak nilai nama versi.
manifest version-code apk-file Mencetak nilai kode versi.
manifest min-sdk apk-file Mencetak versi SDK minimum.
manifest target-sdk apk-file Mencetak versi SDK target.
manifest permissions apk-file Mencetak daftar izin.
manifest debuggable apk-file Mencetak apakah aplikasi dapat di-debug.
Mengakses informasi file DEX Deskripsi
dex list apk-file Mencetak daftar file DEX dalam APK.
dex references [--files path] [--files path2] apk-file Mencetak jumlah referensi metode dalam file DEX yang ditentukan. Defaultnya adalah semua file DEX. Tambahkan opsi --files untuk menunjukkan file tertentu yang ingin Anda sertakan.

Contoh output:

classes.dex 59598
classes2.dex 8042

dex packages [option1 option2 ...] apk-file Mencetak hierarki class dari DEX. Dalam output, P, C, M, dan F secara berurutan menunjukkan paket, class, metode, dan kolom. Serta x, k, r, dan d menunjukkan node yang dihapus, disimpan, direferensikan, serta ditentukan.

Tambahkan opsi berikut untuk mempersempit output:

  • --defined-only: Menyertakan hanya class yang ditentukan dalam APK pada output.
  • --files: Menetapkan nama file DEX yang akan disertakan. Default: semua file DEX.
  • --proguard-folder file: Menetapkan folder output Proguard untuk menelusuri pemetaan.
  • --proguard-mappings file: Menentukan file pemetaan Proguard.
  • --proguard-seeds file: Menentukan file seed Proguard.
  • --proguard-usages file: Menentukan file penggunaan Proguard.
  • --show-removed: Menampilkan class dan anggota yang telah dihapus oleh Proguard.

Contoh output (jenis/status/metode yang ditentukan/metode yang direferensikan /ukuran byte/nama):

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] Mencetak bytecode untuk class atau metode dalam format smali. Nama class harus ada. Mencetak nama class yang sepenuhnya memenuhi syarat untuk mendekompilasi. Tambahkan opsi --method untuk menetapkan metode yang akan didekompilasi.

Format untuk dekompilasi metode adalah name(params)returnType, misalnya, someMethod(Ljava/lang/String;I)V.

Melihat resource yang tersimpan di res/dan resources.arsc Deskripsi
resources packages Mencetak daftar paket yang ditentukan dalam tabel resource.
resources configs --type type [--package package] apk-file Mencetak daftar konfigurasi untuk type yang ditetapkan. type merupakan jenis resource seperti string. Sertakan opsi --package jika Anda ingin menetapkan nama paket tabel resource; jika tidak, paket pertama yang ditetapkan akan digunakan.
resources value --config config --name name --type type [--package package] apk-file Mencetak nilai resource yang ditetapkan oleh config, name, dan type. Opsi type menunjukkan jenis resource, seperti string.

Sertakan opsi --package jika Anda ingin menetapkan nama paket tabel resource; jika tidak, paket pertama yang ditetapkan akan digunakan.

resources names --config config --type type [--package package] apk-file Mencetak daftar nama resource untuk sebuah konfigurasi dan jenis. Opsi type menunjukkan jenis resource, seperti string. Sertakan opsi --package jika Anda ingin menetapkan nama paket tabel resource; jika tidak, paket pertama yang ditetapkan akan digunakan.
resources xml --file path apk-file Mencetak format file XML biner yang dapat dibaca manusia. Sertakan opsi file untuk menetapkan jalur ke file tersebut.