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:
| 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:
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:
Contoh output (jenis/status/metode yang ditentukan/metode yang direferensikan /ukuran/nama byte): 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 |
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 |
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. |