Anda dapat menjalankan semua tugas build yang tersedia untuk project Android menggunakan
alat command line Gradle wrapper. Gradle tersedia sebagai file batch untuk
Windows (gradlew.bat) dan skrip shell untuk Linux dan Mac (gradlew.sh), serta
dapat diakses dari root setiap project yang Anda buat dengan Android Studio.
Untuk menjalankan tugas dengan wrapper, gunakan salah satu perintah berikut dari jendela Terminal (dari Android Studio, pilih View > Tool Windows > Terminal):
Di Windows Command Shell:
gradlew task-nameDi Mac, Linux, atau Windows PowerShell:
./gradlew task-name
Untuk melihat daftar semua tugas build yang tersedia untuk
project Anda, eksekusi tasks:
gradlew tasks
Bagian selanjutnya dari halaman ini menjelaskan dasar-dasar untuk mem-build dan menjalankan aplikasi Anda dengan wrapper Gradle. Untuk mengetahui informasi selengkapnya tentang cara menyiapkan build Android, lihat Mengonfigurasi build.
Jika Anda lebih suka menggunakan alat Android Studio daripada alat command line, lihat Mem-build dan menjalankan aplikasi.
Tentang jenis build
Secara default, ada dua jenis build yang tersedia untuk setiap aplikasi Android: satu untuk men-debug aplikasi—build debug—dan satu untuk merilis aplikasi kepada pengguna—build rilis. Output yang dihasilkan dari setiap build harus ditandatangani dengan sertifikat sebelum Anda dapat men-deploy aplikasi ke perangkat. Build debug otomatis ditandatangani dengan kunci debug yang disediakan oleh SDK Tools (tidak aman dan Anda tidak dapat memublikasikannya ke Google Play Store), dan build rilis harus ditandatangani dengan kunci pribadi Anda sendiri.
Jika ingin mem-build aplikasi untuk rilis, Anda juga harus menandatangani aplikasi dengan kunci penandatanganan yang sesuai. Namun, jika Anda baru memulai, Anda dapat menjalankan aplikasi dengan cepat di emulator atau perangkat terhubung dengan mem-build APK debug.
Anda juga dapat menentukan jenis build kustom dalam file build.gradle.kts dan
mengonfigurasinya agar ditandatangani sebagai build debug dengan menyertakan debuggable true. Untuk
informasi selengkapnya, lihat Mengonfigurasi Varian Build.
Mem-build dan men-deploy APK
Meskipun mem-build app bundle adalah cara terbaik untuk memaketkan aplikasi dan menguploadnya ke Konsol Play, mem-build APK lebih cocok jika Anda ingin menguji build debug dengan cepat atau membagikan aplikasi sebagai artefak yang dapat di-deploy kepada orang lain.
Mem-build APK debug
Untuk pengujian dan proses debug aplikasi langsung, Anda dapat mem-build APK debug.
APK debug ditandatangani dengan kunci debug yang disediakan oleh SDK Tools dan
memungkinkan proses debug melalui
adb.
Untuk mem-build APK debug, buka command line dan arahkan ke root direktori project Anda. Untuk memulai build debug, panggil
tugas assembleDebug:
gradlew assembleDebug
Tindakan ini akan membuat APK yang disebut module_name-debug.apk di
project_name/module_name/build/outputs/apk/.
File ini telah ditandatangani dengan kunci debug dan disesuaikan dengan
zipalign, sehingga Anda dapat
langsung menginstalnya di perangkat.
Atau, untuk mem-build APK dan langsung menginstalnya di emulator yang sedang berjalan atau perangkat terhubung, panggil installDebug:
gradlew installDebug
Bagian "Debug" dalam nama tugas hanyalah
versi camel-case dari nama
varian build,
sehingga dapat diganti dengan jenis atau
varian build mana pun yang ingin Anda rakit atau instal. Misalnya, jika Anda memiliki ragam
produk "demo", Anda dapat mem-build versi debug dengan
tugas assembleDemoDebug.
Untuk melihat semua tugas build dan instal yang tersedia bagi masing-masing varian (termasuk
tugas uninstal), jalankan tugas tasks.
Lihat juga bagian tentang cara menjalankan aplikasi di emulator dan menjalankan aplikasi di perangkat.
Mem-build APK atau paket rilis
Jika sudah siap merilis dan mendistribusikan aplikasi, Anda harus mem-build APK atau paket rilis yang ditandatangani dengan kunci pribadi. Untuk mengetahui informasi selengkapnya, buka bagian tentang cara menandatangani aplikasi dari command line.
Men-deploy aplikasi Anda ke emulator
Untuk menggunakan Android Emulator, Anda harus membuat Perangkat Virtual Android (AVD) menggunakan Android Studio.
Setelah memiliki AVD, jalankan Android Emulator dan instal aplikasi Anda seperti berikut:
Di command line, buka
android_sdk/tools/dan mulai emulator dengan menentukan AVD Anda:emulator -avd <var>avd_name</var>Jika Anda tidak yakin dengan nama AVD, jalankan
emulator -list-avds.Sekarang Anda dapat menginstal aplikasi menggunakan salah satu tugas penginstalan Gradle yang disebutkan di bagian cara mem-build APK debug atau alat
adb.Jika APK dibuat menggunakan SDK pratinjau developer (jika
targetSdkVersionadalah huruf, bukan angka), Anda harus menyertakan opsi-tdengan perintahinstalluntuk menginstal APK pengujian.adb install <var>path/to/your_app</var>.apkSemua APK yang Anda build disimpan di
project_name/module_name/build/outputs/apk/.
Untuk informasi selengkapnya, lihat Menjalankan Aplikasi pada Android Emulator.
Men-deploy aplikasi ke perangkat fisik
Sebelum dapat menjalankan aplikasi pada perangkat, Anda harus mengaktifkan proses debug USB di perangkat. Anda dapat menemukan opsi ini pada bagian Setelan > Opsi developer.
Setelah perangkat disiapkan dan terhubung menggunakan USB, Anda dapat menginstal aplikasi
menggunakan tugas penginstalan Gradle yang disebutkan
di bagian tentang cara mem-build APK debug atau
alat adb:
adb -d install path/to/your_app.apk
Semua APK yang Anda build akan disimpan dalam
project_name/module_name/build/outputs/apk/.
Untuk informasi selengkapnya, lihat Menjalankan Aplikasi di Perangkat Hardware.
Mem-build app bundle
Android App Bundle menyertakan semua kode dan resource yang dikompilasi aplikasi Anda, tetapi menangguhkan pembuatan dan penandatanganan APK ke Google Play. Tidak seperti APK, Anda tidak dapat men-deploy app bundle langsung ke perangkat. Jadi, jika Anda ingin menguji atau membagikan APK kepada orang lain dengan cepat, sebaiknya build APK.
Cara termudah untuk mem-build app bundle adalah dengan
menggunakan Android Studio. Namun, jika perlu mem-build
app bundle dari command line, Anda dapat melakukannya menggunakan Gradle atau
bundletool, seperti yang dijelaskan di bagian berikut.
Mem-build app bundle dengan Gradle
Jika Anda lebih suka membuat app bundle dari command line, jalankan
tugas Gradle bundleVariant pada modul dasar aplikasi Anda.
Contohnya, perintah berikut akan mem-build app bundle untuk versi debug
modul dasar:
./gradlew :base:bundleDebug
Jika ingin mem-build app bundle yang ditandatangani untuk diupload ke Konsol Play, Anda harus
mengonfigurasi file build.gradle.kts modul dasar terlebih dahulu dengan informasi
penandatanganan aplikasi Anda. Untuk mengetahui selengkapnya, buka bagian tentang cara
Mengonfigurasi Gradle untuk menandatangani aplikasi.
Setelah itu, Anda dapat, misalnya, mem-build versi rilis aplikasi, dan Gradle
akan secara otomatis membuat app bundle dan menandatanganinya dengan informasi
penandatanganan yang Anda berikan dalam file build.gradle.kts.
Jika ingin menandatangani app bundle secara terpisah, Anda dapat menggunakan
jarsigner
untuk menandatangani app bundle dari command line. Perintah untuk mem-build app
bundle adalah:
jarsigner -keystore pathToKeystore app-release.aab keyAliasMem-build app bundle menggunakan bundletool
bundletool adalah alat command line yang digunakan oleh Android Studio, plugin Android Gradle, dan Google Play untuk mengonversi kode dan resource yang dikompilasi aplikasi Anda menjadi app bundle, dan membuat APK yang dapat di-deploy dari paket tersebut.
Jadi, meskipun disarankan untuk
menguji app bundle dengan bundletool dan membuat ulang secara lokal
cara Google Play membuat APK, biasanya Anda tidak perlu
memanggil bundletool untuk mem-build app bundle. Sebaiknya Anda
menggunakan tugas Gradle atau Android Studio, seperti yang dijelaskan di bagian sebelumnya.
Namun, jika tidak ingin menggunakan tugas Gradle atau Android Studio untuk mem-build paket, misalnya jika menggunakan toolchain build kustom, Anda dapat menggunakan bundletool dari command line untuk mem-build app bundle dari kode dan resource yang telah dikompilasi sebelumnya. Jika Anda belum melakukannya,
download bundletool dari repositori GitHub.
Bagian ini menjelaskan cara memaketkan kode dan resource yang dikompilasi aplikasi Anda,
serta cara menggunakan bundletool dari command line untuk mengonversinya menjadi
Android App Bundle.
Membuat manifes dan resource dalam format proto
bundletool memerlukan informasi tertentu tentang project Anda, seperti
manifes dan resource aplikasi, untuk mematuhi
format Buffering Protokol Google yang
disebut juga sebagai "protobuf" dan menggunakan ekstensi file *.pb. Protobuf
menyediakan mekanisme bahasa netral, platform netral, dan dapat diperluas
untuk serialisasi data terstruktur, mirip dengan XML, tetapi lebih kecil, lebih cepat, dan
lebih sederhana.
Mendownload AAPT2
Anda dapat membuat file manifes dan tabel resource aplikasi dalam format protobuf menggunakan AAPT2 versi terbaru dari repositori Maven Google.
Untuk mendownload AAPT2 dari repositori Maven Google, ikuti langkah-langkah berikut:
- Buka com.android.tools.build > aapt2 dalam indeks repositori.
- Salin nama versi terbaru AAPT2.
Masukkan nama versi yang Anda salin ke URL berikut dan tentukan sistem operasi target Anda: https://dl.google.com/dl/android/maven2/com/android/tools/build/aapt2/ aapt2-version/aapt2-aapt2-version- [windows | linux | osx].jar
Misalnya, untuk mendownload versi 3.2.0-alpha18-4804415 untuk Windows, Anda dapat menggunakan: https://dl.google.com/dl/android/maven2/com/android/tools/build/aapt2/3.2.0-alpha18-4804415/aapt2-3.2.0-alpha18-4804415-windows.jar
Buka URL di browser. AAPT2 akan segera didownload.
Buka paket file JAR yang baru saja didownload.
Mengompilasi dan menautkan resource aplikasi Anda
Gunakan AAPT2 untuk mengompilasi resource aplikasi Anda dengan perintah berikut:
aapt2 compile \ project_root/module_root/src/main/res/drawable/Image1.png \ project_root/module_root/src/main/res/drawable/Image2.png \ -o compiled_resources/
Selama fase penautan, saat AAPT2 menautkan berbagai resource yang dikompilasi ke dalam
satu APK, instruksikan AAPT2 untuk mengonversi manifes dan resource yang dikompilasi aplikasi Anda
ke dalam format protobuf dengan menyertakan flag --proto-format, seperti yang ditunjukkan
dalam contoh berikut:
aapt2 link --proto-format -o output.apk \ -I android_sdk/platforms/android_version/android.jar \ --manifest project_root/module_root/src/main/AndroidManifest.xml \ -R compiled_resources/*.flat \ --auto-add-overlay
Setelah itu, Anda dapat mengekstrak konten APK output, seperti
AndroidManifest.xml, resources.pb, dan file resource aplikasi Anda lainnya, yang sekarang
memiliki format protobuf. File ini diperlukan saat menyiapkan input
bundletool yang diperlukan untuk mem-build app bundle, seperti yang dijelaskan di bagian
berikut.
Memaketkan resource dan kode yang telah dikompilasi sebelumnya
Sebelum menggunakan bundletool untuk membuat app bundle bagi aplikasi, Anda harus
menyediakan file ZIP terlebih dahulu, yang masing-masing berisi resource dan kode terkompilasi untuk
modul aplikasi tertentu. Konten dan penyusunan setiap file ZIP modul sangat
mirip dengan format Android App Bundle.
Misalnya, Anda harus membuat file base.zip untuk modul dasar aplikasi dan
menyusun kontennya seperti berikut:
| File atau direktori | Deskripsi |
|---|---|
manifest/AndroidManifest.xml
|
Manifes modul dalam format protobuf. |
dex/...
|
Direktori dengan satu atau beberapa file DEX yang telah dikompilasi aplikasi Anda. File ini
harus diberi nama sebagai berikut: classes.dex,
classes2.dex, classes3.dex, etc.
|
res/...
|
Berisi resource modul dalam format protobuf untuk semua konfigurasi perangkat. Subdirektori dan file harus disusun mirip dengan APK biasa. |
root/..., assets/..., dan lib/...
|
Direktori ini identik dengan direktori yang dijelaskan di bagian format Android app bundle. |
resources.pb
|
Tabel resource aplikasi Anda dalam format protobuf. |
Setelah menyiapkan file ZIP untuk setiap modul aplikasi, Anda dapat meneruskannya
ke bundletool untuk mem-build app bundle, seperti yang dijelaskan di bagian berikut.
Mem-build app bundle menggunakan bundletool
Untuk mem-build app bundle, gunakan perintah bundletool build-bundle, seperti yang
ditunjukkan dalam contoh berikut:
bundletool build-bundle --modules=base.zip --output=mybundle.aab
Tabel berikut menjelaskan flag untuk perintah build-bundle secara lebih
mendetail:
| Flag | Deskripsi |
|---|---|
--modules=path-to-base.zip, path-to-module2.zip,path-to-module3.zip
|
Menentukan daftar file ZIP modul yang harus digunakan bundletool
untuk mem-build app bundle Anda.
|
--output=path-to-output.aab
|
Menentukan jalur dan nama file untuk file *.aab output.
|
--config=path-to-BundleConfig.json
|
Menentukan jalur ke file konfigurasi opsional yang dapat Anda gunakan untuk menyesuaikan proses build. Untuk mempelajari lebih lanjut, lihat bagian menyesuaikan pembuatan APK downstream. |
--metadata-file=target-bundle-path:local-file-path
|
Menginstruksikan bundletool untuk memaketkan file metadata opsional di dalam app bundle Anda. Anda dapat menggunakan file ini untuk memasukkan data, seperti
pemetaan ProGuard atau daftar lengkap file DEX aplikasi, yang mungkin
berguna untuk langkah-langkah lain di toolchain atau app store Anda.
target-bundle-path menentukan jalur relatif ke root dari app bundle yang ingin Anda gunakan untuk mengemas file metadata, dan local-file-path menentukan jalur ke file metadata lokal itu sendiri. |
Menyesuaikan pembuatan APK downstream
App bundle berisi file BundleConfig.pb yang menyediakan metadata yang dibutuhkan oleh app store, seperti Google Play, saat membuat APK dari paket tersebut.
Meskipun bundletool membuat file ini secara otomatis, Anda dapat mengonfigurasi beberapa aspek
metadata dalam file BundleConfig.json dan meneruskannya ke
perintah bundletool build-bundle—bundletool kemudian akan mengonversi dan menggabungkan
file ini dengan versi protobuf yang disertakan dalam setiap app bundle.
Misalnya, Anda dapat mengontrol kategori APK konfigurasi mana yang akan diaktifkan atau
dinonaktifkan. Contoh file BundleConfig.json berikut akan menonaktifkan
APK konfigurasi yang masing-masing menargetkan bahasa yang berbeda (yaitu,
resource untuk semua bahasa yang disertakan dalam setiap APK
dasar atau fiturnya masing-masing):
{
"optimizations": {
"splitsConfig": {
"splitDimension": [{
"value": "LANGUAGE",
"negate": true
}]
}
}
}
Dalam file BundleConfig.json, Anda juga dapat menentukan jenis file yang akan dibiarkan
tidak dikompresi saat memaketkan APK menggunakan
pola glob, seperti berikut:
{
"compression": {
"uncompressedGlob": ["res/raw/**", "assets/**.uncompressed"]
}
}
Perlu diingat, secara default, bundletool tidak mengompresi library native aplikasi Anda (di Android 6.0 atau yang lebih tinggi) dan tabel resource (resources.arsc). Untuk deskripsi lengkap tentang hal yang dapat Anda konfigurasi di BundleConfig.json, periksa file config.proto bundletool, yang ditulis menggunakan sintaksis Proto3.
Men-deploy aplikasi Anda dari app bundle
Jika Anda telah mem-build dan menandatangani app bundle,
gunakan bundletool untuk membuat dan men-deploy APK ke
perangkat.
Menandatangani aplikasi Anda dari command line
Anda tidak memerlukan Android Studio untuk menandatangani aplikasi. Anda dapat menandatangani aplikasi dari
command line, menggunakan apksigner untuk APK atau jarsigner untuk app bundle,
atau mengonfigurasi Gradle untuk menandatanganinya selama build. Apa pun caranya, Anda harus
membuat kunci pribadi terlebih dahulu menggunakan
keytool,
seperti yang ditunjukkan dalam contoh berikut:
keytool -genkey -v -keystore my-release-key.jks -keyalg RSA -keysize 2048 -validity 10000 -alias my-alias
Contoh ini akan meminta sandi untuk keystore dan kunci, serta untuk
kolom "Nama Khusus" untuk kunci Anda. Kemudian, keystore akan dibuat
sebagai file yang bernama my-release-key.jks, dan disimpan di
direktori saat ini (Anda dapat memindahkannya ke mana saja). Keystore
berisi satu kunci yang berlaku selama 10.000 hari.
Sekarang Anda dapat menandatangani APK atau app bundle secara manual, atau mengonfigurasi Gradle untuk menandatangani aplikasi selama proses build, seperti yang dijelaskan di bagian berikut.
Menandatangani aplikasi Anda secara manual dari command line
Jika ingin menandatangani app bundle dari command line, Anda dapat menggunakan
jarsigner.
Jika ingin menandatangani APK, Anda harus menggunakan zipalign dan apksigner:
Buka command line—dari Android Studio, pilih View > Tool Windows > Terminal—lalu buka direktori tempat APK yang tidak ditandatangani berada.
Sejajarkan APK yang tidak ditandatangani menggunakan
zipalign:zipalign -v -p 4 my-app-unsigned.apk my-app-unsigned-aligned.apk
zipalignmemastikan bahwa semua data yang tidak dikompresi dimulai dengan penyelarasan byte tertentu yang relatif terhadap awal file, yang dapat mengurangi jumlah RAM yang digunakan oleh aplikasi.Tanda tangani APK Anda dengan kunci pribadi menggunakan
apksigner:apksigner sign --ks my-release-key.jks --out my-app-release.apk my-app-unsigned-aligned.apk
Contoh ini menghasilkan APK yang ditandatangani di
my-app-release.apksetelah menandatanganinya dengan kunci pribadi dan sertifikat yang disimpan dalam satu file KeyStore:my-release-key.jks.Alat
apksignermendukung opsi penandatanganan lainnya, termasuk menandatangani file APK menggunakan file kunci pribadi dan sertifikat terpisah, serta menandatangani APK menggunakan beberapa penanda tangan. Untuk mengetahui detail selengkapnya, lihat referensiapksigner.Pastikan APK Anda telah ditandatangani:
apksigner verify my-app-release.apk
Mengonfigurasi Gradle untuk menandatangani aplikasi Anda
Buka file build.gradle.kts level modul dan tambahkan
blok signingConfigs {} dengan entri untuk storeFile,
storePassword, keyAlias dan
keyPassword, lalu teruskan objek tersebut ke
properti signingConfig dalam jenis build Anda. Contoh:
Kotlin
android { ... defaultConfig { ... } signingConfigs { create("release") { // You need to specify either an absolute path or include the // keystore file in the same directory as the build.gradle file. storeFile = file("my-release-key.jks") storePassword = "password" keyAlias = "my-alias" keyPassword = "password" } } buildTypes { getByName("release") { signingConfig = signingConfigs.getByName("release") ... } } }
Groovy
android { ... defaultConfig { ... } signingConfigs { release { // You need to specify either an absolute path or include the // keystore file in the same directory as the build.gradle file. storeFile file("my-release-key.jks") storePassword "password" keyAlias "my-alias" keyPassword "password" } } buildTypes { release { signingConfig signingConfigs.release ... } } }
Sekarang, saat Anda mem-build aplikasi dengan memanggil tugas Gradle. Gradle akan menandatangani aplikasi Anda (dan menjalankan zipalign).
Selain itu, karena Anda telah mengonfigurasi build rilis dengan kunci penandatanganan,
tugas "instal" akan tersedia untuk jenis build tersebut. Jadi, Anda dapat mem-build, menyesuaikan,
menandatangani, dan menginstal APK rilis pada emulator atau perangkat menggunakan
tugas installRelease.
Aplikasi yang ditandatangani dengan kunci pribadi Anda siap didistribusikan, tetapi Anda harus membaca lebih lanjut cara memublikasikan aplikasi dan meninjau checklist peluncuran Google Play terlebih dahulu.