Google berkomitmen untuk mendorong terwujudnya keadilan rasial bagi komunitas Kulit Hitam. Lihat caranya.

Tentang Android App Bundle

Android App Bundle adalah format publikasi yang menyertakan semua kode dan resource yang dikompilasi aplikasi Anda, serta menangguhkan pembuatan dan penandatanganan APK ke Google Play.

Google Play menggunakan app bundle Anda untuk membuat dan menyediakan APK yang dioptimalkan untuk setiap konfigurasi perangkat, sehingga hanya kode dan resource yang diperlukan untuk perangkat tertentu yang akan didownload untuk menjalankan aplikasi Anda. Anda tidak perlu lagi membuat, menandatangani, dan mengelola beberapa APK guna mengoptimalkan dukungan untuk berbagai perangkat, dan pengguna mendapatkan hasil download yang lebih kecil dan lebih dioptimalkan.

Selain itu, Anda dapat menambahkan modul fitur dinamis ke project aplikasi Anda dan menyertakannya dalam app bundle. Modul ini berisi fitur dan aset yang dapat Anda pilih untuk tidak disertakan saat pengguna pertama kali mendownload dan menginstal aplikasi Anda. Menggunakan Play Core Library, aplikasi Anda nantinya dapat meminta untuk mendownload modul tersebut. Google Play hanya akan menyediakan kode dan resource untuk modul tersebut ke perangkat. Saat Anda menggabungkannya dengan dukungan untuk library native yang tidak dikompresi, aplikasi berukuran lebih besar (seperti game) dapat mengurangi persyaratan penyimpanannya dan meningkatkan retensi pengguna.

Tonton video berikut untuk mengetahui ringkasan alasan Anda harus memublikasikan aplikasi menggunakan Android App Bundle.

Dengan Android App Bundle, batasan ukuran download terkompresi kini menjadi 150 MB. Anda tidak dapat menggunakan app bundle dengan file ekspansi APK.

Jika menggunakan Android Studio 3.2 atau yang lebih tinggi, Anda dapat membuat Android App Bundle hanya dengan beberapa klik. Namun, menambahkan modul fitur dinamis akan memerlukan lebih banyak upaya karena dapat melibatkan pemfaktoran ulang bagian-bagian aplikasi Anda.

Halaman ini menjelaskan langkah-langkah untuk memulai membuat Android App Bundle dan menjelaskan beberapa konsep penting yang terkait dengan app bundle dan Pengiriman Dinamis.

Memulai

Untuk membuat app bundle dan mendukung Pengiriman Dinamis, ikuti langkah-langkah berikut:

  1. Download Android Studio 3.2 atau yang lebih tinggi—ini adalah cara termudah untuk menambahkan modul fitur dinamis dan membuat app bundle.

  2. Tambahkan dukungan untuk Pengiriman Dinamis dengan menyertakan modul dasar, mengatur kode dan resource untuk APK konfigurasi, dan, jika perlu, menambahkan modul fitur dinamis.

  3. Buat Android App Bundle menggunakan Android Studio. Anda juga dapat men-deploy aplikasi ke perangkat yang terhubung dari app bundle dengan mengubah konfigurasi run/debug dan memilih opsi untuk men-deploy APK dari app bundle. Perlu diingat, dengan menggunakan opsi ini, waktu build akan menjadi lebih lama jika dibandingkan dengan sekadar membuat dan men-deploy APK.

  4. Uji Android App Bundle dengan menggunakannya untuk membuat APK yang di-deploy ke perangkat.

  5. Daftarkan ke penandatanganan aplikasi oleh Google Play. Jika tidak, Anda tidak dapat mengupload app bundle ke Konsol Play.

  6. Publikasikan app bundle Anda ke Google Play.

Untuk membuat app bundle yang menyertakan paket aset, lihat Tentang Asset Delivery Dinamis.

Format Android App Bundle

Android App Bundle adalah file (dengan ekstensi file .aab) yang Anda upload ke Google Play.

App bundle adalah biner bertanda tangan yang mengatur kode dan resource aplikasi Anda ke dalam modul, seperti ditunjukkan dalam gambar 1. Kode dan resource untuk setiap modul diatur seperti halnya dalam APK—dan hal tersebut wajar karena setiap modul ini dapat dijadikan sebagai APK terpisah. Kemudian, Google Play menggunakan app bundle untuk membuat berbagai APK yang ditayangkan kepada pengguna, seperti APK dasar, APK fitur dinamis, APK konfigurasi, dan (untuk perangkat yang tidak mendukung APK terpisah) multi-APK. Direktori yang berwarna biru—seperti direktori drawable/, values/, dan lib/—merepresentasikan kode dan resource yang digunakan Google Play untuk membuat APK konfigurasi untuk setiap modul.

App bundle mengatur aplikasi Anda ke dalam direktori yang masing-masing merepresentasikan sebuah
            modul. Dalam setiap direktori modul, kode dan resource diatur
        seperti halnya APK biasa.

Gambar 1. Konten Android App Bundle dengan satu modul dasar, dua modul fitur dinamis, dan dua paket aset.

Daftar berikut menjelaskan beberapa file dan direktori app bundle secara lebih mendetail:

  • base/, feature1/, dan feature2/: Masing-masing direktori tingkat atas tersebut merepresentasikan modul yang berbeda dari aplikasi Anda. Modul dasar untuk aplikasi Anda selalu berada di direktori base app bundle. Namun, direktori untuk setiap modul fitur dinamis memiliki nama yang ditentukan oleh atribut split dalam manifes modul. Untuk mempelajari lebih lanjut, baca Manifes modul fitur dinamis.
  • aset_pack_1/ dan aset_pack_2/: Untuk aplikasi atau game yang besar dan membutuhkan grafis, Anda dapat memodulasi aset menjadi paket aset. Paket aset ideal untuk game karena batas ukurannya yang besar. Anda dapat menyesuaikan cara dan waktu setiap paket aset didownload ke perangkat sesuai dengan tiga mode pengiriman: waktu penginstalan, dimulai segera, dan on demand. Semua paket aset dihosting di dan ditayangkan dari Google Play. Untuk mempelajari lebih lanjut cara menambahkan paket aset ke app bundle, lihat Ringkasan Asset Delivery Dinamis.
  • BUNDLE-METADATA/: Direktori ini mencakup file metadata yang berisi informasi yang berguna untuk alat atau app store. File metadata tersebut dapat mencakup pemetaan ProGuard dan daftar lengkap file DEX aplikasi Anda. File dalam direktori ini tidak dipaketkan ke dalam APK aplikasi Anda.
  • File Module Protocol Buffer (*.pb): File-file ini menyediakan metadata yang membantu menjelaskan konten setiap modul aplikasi ke app store, seperti Google Play. Misalnya, BundleConfig.pb memberikan informasi tentang paket itu sendiri, seperti versi alat build yang digunakan untuk membuat app bundle, dan native.pb serta resources.pb menjelaskan kode dan resource di setiap modul, yang berguna saat Google Play mengoptimalkan APK untuk konfigurasi perangkat yang berbeda.
  • manifest/: Tidak seperti APK, app bundle menyimpan file AndroidManifest.xml dari setiap modul di direktori yang terpisah ini.
  • dex/: Tidak seperti APK, app bundle menyimpan file DEX untuk setiap modul di direktori yang terpisah ini.
  • res/, lib/, dan assets/: Direktori ini identik dengan direktori pada APK biasa. Saat Anda mengupload app bundle, Google Play memeriksa direktori tersebut dan hanya memaketkan file yang memenuhi konfigurasi perangkat target, sembari mempertahankan jalur file.
  • root/: Direktori ini menyimpan file yang nantinya dipindahkan ke root APK yang mencakup modul tempat direktori ini berada. Misalnya, direktori base/root/ app bundle dapat mencakup resource berbasis Java yang dimuat aplikasi Anda menggunakan Class.getResource(). Kemudian, file tersebut dipindahkan ke direktori utama APK dasar aplikasi Anda dan semua multi-APK yang dibuat Google Play. Jalur dalam direktori ini juga dipertahankan. Artinya, direktori (beserta subdirektorinya) juga dipindahkan ke root APK.

Membuat dan men-deploy Android App Bundle

App bundle berbeda dengan APK karena Anda tidak dapat men-deploynya ke perangkat. Sebaliknya, ini adalah format publikasi yang menyertakan semua kode dan resource yang dikompilasi aplikasi Anda dalam satu artefak build. Jadi, setelah Anda mengupload app bundle yang sudah ditandatangani, Google Play memiliki semua yang diperlukannya untuk membuat dan menandatangani APK aplikasi Anda, dan menayangkannya kepada pengguna melalui Pengiriman Dinamis.

Jika menggunakan Android Studio, Anda dapat membuat project sebagai app bundle yang sudah ditandatangani, hanya dengan beberapa klik. Jika tidak menggunakan IDE, Anda dapat membuat app bundle dari command line. Kemudian, upload app bundle Anda ke Konsol Play untuk menguji atau memublikasikan aplikasi Anda dengan Pengiriman Dinamis.

Menguji app bundle

Setelah membuat Android App Bundle, Anda perlu menguji bagaimana Google Play akan menggunakannya untuk membuat APK dan bagaimana APK tersebut berperilaku saat di-deploy ke perangkat.

Untuk menguji app bundle Anda, gunakan salah satu metode berikut:

Mendownload modul fitur dinamis dengan Library Play Core

Jika aplikasi Anda menyertakan fitur dinamis, aplikasi itu perlu menggunakan Library Play Core untuk meminta, memantau, dan mengelola download modul fitur dinamis. Untuk mempelajari lebih lanjut, buka Mendownload modul dengan Library Play Core.

Jika Anda ingin mengetahui cara kerja library itu, coba aplikasi contoh Library Play Core.

Catatan terkait Aplikasi Instan

Di Android Studio 3.2 atau yang lebih tinggi, Anda dapat menambahkan pengalaman instan ke app bundle, asalkan ukuran aplikasi Anda cukup kecil. Untuk detail tentang batas ukuran berbagai jenis pengalaman instan yang dapat Anda buat, lihat Ringkasan Google Play Instan.

Batasan ukuran download terkompresi

Memublikasikan dengan Android App Bundle membantu pengguna menginstal aplikasi Anda dengan hasil download sekecil mungkin dan meningkatkan batas ukuran download terkompresi menjadi 150 MB. Artinya, saat pengguna mendownload aplikasi Anda, ukuran total APK terkompresi yang diperlukan untuk menginstal aplikasi Anda (misalnya, APK dasar + APK konfigurasi) tidak boleh lebih dari 150 MB. Download berikutnya, seperti download fitur dinamis (beserta APK konfigurasinya) secara on demand, juga harus memenuhi batasan ukuran download terkompresi ini. Paket aset tidak berkontribusi terhadap batas ukuran ini, tetapi memiliki batasan ukuran lainnya.

Jika Konsol Play menemukan kemungkinan hasil download aplikasi Anda atau fitur on demand-nya lebih dari 150 MB saat Anda mengupload app bundle, Anda akan mendapatkan error.

Perhatikan bahwa Android App Bundle tidak mendukung file perluasan APK (*.obb). Jadi, jika Anda mendapati error ini saat memublikasikan app bundle, gunakan salah satu referensi berikut untuk mengurangi ukuran download APK terkompresi:

  • Pastikan Anda mengaktifkan semua APK konfigurasi dengan menetapkan enableSplit = true untuk setiap jenis APK konfigurasi. Tindakan ini memastikan bahwa pengguna hanya mendownload kode dan resource yang diperlukan untuk menjalankan aplikasi di perangkat mereka.
  • Pastikan Anda mengurangi ukuran aplikasi dengan menghapus kode dan resource yang tidak diperlukan.
  • Ikuti praktik terbaik untuk mengurangi ukuran aplikasi lebih lanjut.
  • Pertimbangkan untuk mengonversi fitur yang digunakan oleh sebagian kecil pengguna Anda ke modul fitur dinamis yang dapat didownload nanti, secara on demand. Perhatikan bahwa hal ini mungkin memerlukan beberapa pemfaktoran ulang aplikasi, jadi pastikan untuk mencoba saran lain yang dijelaskan di atas terlebih dahulu.

Masalah umum

Berikut adalah masalah umum saat membuat Android App Bundle atau menayangkan aplikasi Anda menggunakan Pengiriman Dinamis. Jika Anda mengalami masalah yang tidak dijelaskan di bawah ini, harap laporkan bug.

  • Penginstalan sebagian aplikasi yang di-sideload—yaitu aplikasi yang tidak diinstal menggunakan Google Play Store dan tidak memiliki satu atau beberapa APK terpisah yang diperlukan—gagal di semua perangkat bersertifikasi Google dan perangkat yang menjalankan Android 10 (API level 29) atau yang lebih tinggi. Saat mendownload aplikasi Anda melalui Google Play Store, Google memastikan bahwa semua komponen aplikasi yang diperlukan telah diinstal.
  • Jika Anda menggunakan alat yang secara dinamis mengubah tabel resource, APK yang dibuat dari app bundle mungkin akan menampilkan perilaku yang tidak terduga. Oleh karena itu, saat membuat app bundle, sebaiknya Anda menonaktifkan alat semacam itu.
  • Dalam manifes modul fitur dinamis, sebaiknya Anda tidak mereferensikan resource yang tidak ada di modul dasar. Hal tersebut karena, saat Google Play membuat APK dasar aplikasi Anda, manifes untuk semua modul akan digabungkan ke dalam APK dasar tersebut. Jadi, penautan resource akan terputus jika manifes APK dasar mereferensikan resource yang tidak ada di APK dasar.
  • Mulai Android Studio 3.2 Canary 14, saat Anda mengubah varian build untuk modul dasar aplikasi, varian build yang sama tidak otomatis dipilih untuk modul fitur dinamis yang bergantung pada modul dasar. Jadi, Anda mungkin mendapati error saat membuat aplikasi. Cukup pastikan bahwa Anda memilih varian build yang sama untuk modul dasar dan modul lain yang bergantung padanya.
  • Saat ini, Anda dapat mengonfigurasi properti dalam konfigurasi build modul fitur dinamis yang bertentangan dengan properti dari modul dasar (atau yang lainnya). Misalnya, Anda dapat menetapkan buildTypes.release.debuggable = true dalam modul dasar dan menetapkannya ke false dalam modul fitur dinamis. Pertentangan tersebut dapat menyebabkan masalah build dan waktu proses. Perlu diperhatikan bahwa, secara default, modul fitur dinamis mewarisi beberapa konfigurasi build dari modul dasar. Jadi, pastikan Anda memahami konfigurasi yang harus disimpan dan yang harus dihapus di Konfigurasi build modul fitur dinamis.
  • Proses download modul fitur dinamis mengharuskan perangkat telah menginstal versi terbaru aplikasi Play Store. Jadi, jika aplikasi Anda menyertakan modul fitur dinamis, download untuk sebagian kecil pengguna dapat kembali menggunakan satu multi-APK yang dioptimalkan, yang merupakan pengalaman download yang serupa dengan perangkat yang menjalankan Android 4.4 (API level 20) dan yang lebih rendah.

Resource lainnya

Untuk mempelajari Android App Bundle lebih lanjut, lihat referensi berikut.

Contoh

  • Sampel PlayCore API, yang menunjukkan penggunaan PlayCore API untuk meminta dan mendownload fitur-fitur dinamis.
  • Sampel pemuatan kode dinamis, yang menunjukkan tiga pendekatan berbeda untuk mengakses kode dengan aman dari modul fitur dinamis yang diinstal.

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.
  • Modul on demand, yang membantu Anda membuat aplikasi yang mendownload dan menginstal fitur dinamis on demand.

Entri blog

Video