Setelah membuat Android App Bundle, sebaiknya Anda menguji bagaimana Google Play
menggunakannya untuk membuat APK dan bagaimana APK tersebut berperilaku saat diterapkan ke sebuah perangkat.
Ada dua cara yang perlu dipertimbangkan untuk menguji app bundle: secara lokal menggunakan
alat command line bundletool
, serta melalui Google Play dengan
mengupload bundle ke Konsol Play
dan menggunakan track pengujian. Halaman ini menjelaskan cara menggunakan bundletool
untuk menguji
app bundle secara lokal.
bundletool
adalah alat dasar yang digunakan oleh Gradle, Android Studio, dan Google
Play untuk mem-build Android App Bundle atau mengonversi app bundle menjadi
berbagai APK yang di-deploy ke perangkat. bundletool
juga tersedia sebagai
alat command line, sehingga Anda dapat membuat ulang, memeriksa, dan memverifikasi build
sisi server Google Play untuk APK Anda.
Anda harus menggunakan Android Studio dan plugin Android untuk Gradle guna
mem-build dan menandatangani Android App Bundle.
Namun, jika tidak dapat menggunakan IDE (misalnya karena Anda menggunakan server
build berkelanjutan), Anda juga dapat
mem-build app bundle dari command line
dan menandatanganinya menggunakan
jarsigner
.
Secara default, IDE tidak menggunakan app bundle untuk menerapkan aplikasi Anda ke perangkat lokal untuk pengujian. Namun, Anda dapat mengubah konfigurasi run/debug dan memilih opsi untuk men-deploy APK dari app bundle untuk melihat pengaruhnya terhadap eksekusi aplikasi Anda.
Mendownload bundletool
Jika Anda belum melakukannya, download bundletool
dari
repositori GitHub.
Membuat satu rangkaian APK dari app bundle Anda
Saat bundletool
membuat APK dari app bundle Anda, alat tersebut akan menyertakannya dalam
container yang disebut arsip rangkaian APK, yang menggunakan ekstensi file
.apks
. Untuk membuat APK yang ditetapkan bagi semua konfigurasi yang
didukung oleh aplikasi Anda dari app bundle, gunakan perintah bundletool build-apks
, seperti yang
ditunjukkan di bawah ini.
bundletool build-apks --bundle=/MyApp/my_app.aab --output=/MyApp/my_app.apks
Jika ingin men-deploy APK ke perangkat, Anda juga harus menyertakan informasi
penandatanganan aplikasi seperti yang ditunjukkan dalam perintah di bawah ini. Jika informasi penandatanganan
tidak ditentukan, bundletool
akan mencoba menandatangani sendiri APK Anda dengan
kunci debug.
bundletool build-apks --bundle=/MyApp/my_app.aab --output=/MyApp/my_app.apks --ks=/MyApp/keystore.jks --ks-pass=file:/MyApp/keystore.pwd --ks-key-alias=MyKeyAlias --key-pass=file:/MyApp/key.pwd
Tabel di bawah ini menjelaskan berbagai tanda dan opsi yang dapat ditetapkan saat menggunakan
perintah bundletool build-apks
secara lebih mendetail. Hanya
--bundle
dan --output
yang diperlukan—semua tanda lainnya bersifat opsional.
Flag | Deskripsi |
---|---|
--bundle=path |
(Wajib) Menentukan jalur app bundle yang di-build menggunakan Android Studio. Untuk mempelajari lebih lanjut, baca Mem-build project Anda. |
--output=path |
(Wajib) Menentukan nama file `.apks` output, yang berisi semua artefak APK untuk aplikasi Anda. Untuk menguji artefak dalam file ini di perangkat, buka bagian tentang cara men-deploy APK ke perangkat yang terhubung. |
--overwrite |
Sertakan tanda ini jika Anda ingin menimpa file output yang ada dengan
jalur yang sama yang ditetapkan menggunakan opsi --output . Jika tanda
ini tidak disertakan dan file output sudah ada, Anda akan mendapatkan
error build.
|
--aapt2=path |
Menentukan jalur kustom ke AAPT2.
Secara default, bundletool menyertakan versinya sendiri untuk AAPT2.
|
--ks=path |
Menentukan jalur ke keystore deployment yang digunakan untuk
menandatangani APK. Tanda ini bersifat opsional. Jika tidak disertakan,
bundletool akan mencoba menandatangani APK Anda dengan kunci penandatanganan
debug.
|
--ks-pass=pass:password atau --ks-pass=file:/path/to/file |
Menentukan sandi keystore Anda. Jika sandi
ditentukan menggunakan teks biasa, kualifikasikan sandi dengan pass: .
Jika Anda meneruskan jalur file yang berisi sandi, kualifikasikan
dengan file: . Jika Anda menentukan keystore menggunakan
tanda --ks tanpa menentukan --ks-pass ,
bundletool akan meminta sandi dari command line.
|
--ks-key-alias=alias |
Menentukan alias dari kunci penandatanganan yang ingin Anda gunakan. |
--key-pass=pass:password atau --key-pass=file:/path/to/file |
Menentukan sandi untuk kunci penandatanganan. Jika sandi
ditentukan menggunakan teks biasa, kualifikasikan sandi dengan pass: .
Jika Anda meneruskan jalur file yang berisi sandi, kualifikasikan
dengan file: . Jika sandi ini sama dengan sandi untuk keystore, Anda dapat menghilangkan tanda ini. |
--connected-device |
Menginstruksikan bundletool untuk mem-build APK yang menargetkan
konfigurasi perangkat yang terhubung. Jika tanda ini tidak disertakan,
bundletool akan membuat APK untuk semua konfigurasi aplikasi yang didukung
oleh aplikasi Anda.
|
--device-id=serial-number |
Jika ada lebih dari satu perangkat yang terhubung, gunakan tanda ini untuk menentukan ID serial perangkat tempat Anda ingin men-deploy aplikasi. |
--device-spec=spec_json |
Gunakan tanda ini untuk memberikan jalur ke
file .json yang menentukan konfigurasi perangkat yang ingin
Anda targetkan. Untuk mempelajari lebih lanjut, buka bagian tentang cara
Membuat dan menggunakan file JSON spesifikasi perangkat.
|
--mode=universal |
Setel mode ke universal jika Anda ingin
bundletool hanya membuat satu APK yang menyertakan semua
kode dan resource aplikasi Anda sehingga APK tersebut kompatibel dengan semua
konfigurasi perangkat yang didukung oleh aplikasi Anda.
Catatan: Ingat bahwa APK ini berukuran lebih besar dari APK yang dioptimalkan untuk konfigurasi ponsel tertentu. Namun, APK ini lebih mudah dibagikan dengan penguji internal yang, misalnya, ingin menguji aplikasi Anda pada beberapa konfigurasi perangkat. |
--local-testing
|
Gunakan tanda ini guna mengaktifkan app bundle Anda untuk pengujian lokal.
Pengujian lokal memungkinkan siklus pengujian berulang yang cepat tanpa perlu
mengupload ke server Google Play.
Untuk contoh cara menguji penginstalan modul menggunakan
tanda |
Men-deploy APK ke perangkat yang terhubung
Setelah Anda membuat satu rangkaian APK, bundletool
dapat men-deploy kombinasi
APK yang tepat dari rangkaian tersebut ke perangkat yang terhubung.
Misalnya, jika Anda memiliki perangkat terhubung yang menjalankan Android 5.0 (API level 21)
atau yang lebih tinggi, bundletool
akan mengirim APK dasar, APK modul fitur, dan
APK konfigurasi yang diperlukan untuk menjalankan aplikasi Anda di perangkat tersebut. Atau, jika
perangkat yang terhubung menjalankan Android 4.4 (API level 20) atau lebih rendah,
bundletool
akan mencari multi-APK yang kompatibel dan men-deploy APK tersebut ke perangkat.
Untuk men-deploy aplikasi dari rangkaian APK, gunakan perintah install-apks
dan tentukan
jalur rangkaian APK menggunakan
tanda --apks=/path/to/apks
, seperti yang
ditunjukkan di bawah ini. (Jika ada beberapa perangkat yang terhubung, tentukan perangkat target
dengan menambahkan tanda --device-id=serial-id
.)
bundletool install-apks --apks=/MyApp/my_app.apks
Membuat rangkaian APK khusus perangkat
Jika tidak ingin mem-build rangkaian APK untuk semua konfigurasi perangkat yang
didukung oleh aplikasi Anda, Anda dapat mem-build APK yang hanya menargetkan konfigurasi perangkat
terhubung menggunakan opsi --connected-device
, seperti yang ditunjukkan di bawah ini. (Jika ada
beberapa perangkat yang terhubung, tentukan perangkat target dengan menambahkan
tanda --device-id=serial-id
.)
bundletool build-apks --connected-device --bundle=/MyApp/my_app.aab --output=/MyApp/my_app.apks
Membuat dan menggunakan file JSON spesifikasi perangkat
bundletool
mampu membuat rangkaian APK yang menargetkan konfigurasi
perangkat yang ditentukan oleh file JSON. Untuk membuat file JSON terlebih dahulu bagi
perangkat yang terhubung, jalankan perintah berikut:
bundletool get-device-spec --output=/tmp/device-spec.json
bundletool
akan membuat file JSON untuk perangkat Anda dalam direktori tempat alat tersebut
berada. Kemudian, Anda dapat meneruskannya ke bundletool
untuk membuat rangkaian APK yang
hanya menargetkan konfigurasi yang dijelaskan dalam file JSON tersebut seperti berikut:
bundletool build-apks --device-spec=/MyApp/pixel2.json --bundle=/MyApp/my_app.aab --output=/MyApp/my_app.apks
Membuat JSON spesifikasi perangkat secara manual
Jika tidak memiliki akses ke perangkat yang ingin digunakan untuk mem-build rangkaian APK yang ditargetkan (misalnya, seorang teman ingin mencoba aplikasi Anda dengan perangkat yang tidak Anda miliki), Anda dapat membuat file JSON secara manual menggunakan format berikut:
{
"supportedAbis": ["arm64-v8a", "armeabi-v7a"],
"supportedLocales": ["en", "fr"],
"screenDensity": 640,
"sdkVersion": 27
}
Kemudian, Anda dapat meneruskan file JSON ini ke perintah bundle extract-apks
, seperti yang dijelaskan
di bagian sebelumnya.
Mengekstrak APK khusus perangkat dari APK yang sudah ada
Jika Anda sudah memiliki rangkaian APK dan ingin mengekstraknya untuk subset APK
yang menargetkan konfigurasi perangkat tertentu, Anda dapat menggunakan perintah extract-apks
dan menentukan JSON spesifikasi perangkat, seperti berikut:
bundletool extract-apks --apks=/MyApp/my_existing_APK_set.apks --output-dir=/MyApp/my_pixel2_APK_set.apks --device-spec=/MyApp/bundletool/pixel2.json
Memperkirakan ukuran download APK dalam rangkaian APK
Untuk memperkirakan ukuran download APK dalam rangkaian APK karena
akan disalurkan secara terkompresi melalui jaringan, gunakan perintah get-size total
:
bundletool get-size total --apks=/MyApp/my_app.apks
Anda dapat mengubah perilaku perintah get-size total
menggunakan
tanda berikut:
Flag | Deskripsi |
---|---|
--apks=path |
(Diperlukan) Menentukan jalur file rangkaian APK yang sudah ada yang ukuran downloadnya diukur. |
--device-spec=path |
Menentukan jalur file spesifikasi perangkat (dari
get-device-spec atau dibuat secara manual) yang akan digunakan untuk pencocokan.
Anda dapat menentukan jalur parsial untuk mengevaluasi rangkaian konfigurasi.
|
--dimensions=dimensions |
Menentukan dimensi yang digunakan saat menghitung estimasi ukuran. Menerima
daftar yang dipisahkan koma untuk: SDK , ABI ,
SCREEN_DENSITY , dan LANGUAGE . Untuk mengukur
semua dimensi, tentukan ALL .
|
--instant |
Menghitung ukuran download APK yang diaktifkan secara instan dan
bukan APK yang dapat diinstal. Secara default, bundletool menghitung
ukuran download APK yang dapat diinstal.
|
--modules=modules |
Menentukan daftar yang dipisahkan koma bagi modul dalam rangkaian APK untuk dipertimbangkan
dalam pengukuran. Perintah bundletool otomatis menyertakan
setiap modul dependen untuk rangkaian yang ditentukan. Secara default, perintah
ini menghitung ukuran download semua modul yang diinstal selama
download pertama.
|
Referensi lainnya
Untuk mempelajari penggunaan bundletool
lebih lanjut, coba referensi berikut:
Codelab
- Android App Bundle Pertama Anda, codelab yang membahas prinsip-prinsip dasar Android App Bundle dan menunjukkan cara cepat untuk mulai mem-build aplikasi Anda sendiri menggunakan Android Studio.
Codelab ini juga menjelaskan cara menguji app bundle Anda menggunakan
bundletool
.