Google berkomitmen untuk mendorong terwujudnya keadilan ras 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.

Sebagian besar project aplikasi tidak memerlukan banyak upaya untuk membuat app bundle yang mendukung penayangan APK yang dioptimalkan. Misalnya, jika Anda telah mengatur kode dan resource aplikasi sesuai konvensi yang telah ditetapkan, cukup buat Android App Bundle yang ditandatangani menggunakan Android Studio atau menggunakan command line, lalu upload ke Google Play. Penayangan APK yang dioptimalkan akan menjadi manfaat otomatis.

Saat menggunakan format app bundle untuk memublikasikan aplikasi, Anda juga dapat memanfaatkan Play Feature Delivery untuk menambahkan modul fitur ke project aplikasi. Modul ini berisi fitur dan resource yang dapat Anda pilih untuk tidak disertakan saat pengguna pertama kali mendownload dan menginstal aplikasi. Menggunakan Play Core Library, aplikasi Anda dapat meminta untuk mendownload modul tersebut di lain waktu. Google Play hanya akan menyediakan kode dan resource untuk modul tersebut ke perangkat.

Developer game yang memublikasikan aplikasinya dengan app bundle dapat menggunakan Play Asset Delivery: solusi Google Play untuk menayangkan aset game dalam jumlah besar yang menawarkan metode pengiriman fleksibel dan performa tinggi kepada developer.

Tonton video berikut untuk mengetahui sejumlah alasan mengapa Anda harus memublikasikan aplikasi dengan 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.

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

Mulai

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 ditandatangani, Google Play memiliki semua yang diperlukannya untuk membuat dan menandatangani APK aplikasi Anda, dan menayangkannya kepada pengguna.

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.

Untuk membuat app bundle, ikuti langkah-langkah berikut:

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

  2. Tambahkan dukungan untuk Play Feature Delivery dengan menyertakan modul dasar, mengatur kode dan resource untuk APK konfigurasi, dan, secara opsional, menambahkan modul fitur.

  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. Daftar ke Penandatanganan Aplikasi 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 Play Asset Delivery.

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 dengan Library Play Core

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

Jika Anda ingin mengetahui cara kerja library, 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 modul fitur (dan APK konfigurasinya) 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 menerima pesan 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 menjadi modul fitur yang dapat didownload oleh aplikasi Anda 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 atau menayangkan aplikasi dengan Android App Bundle. 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, Anda tidak boleh 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 dari 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 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 yang bertentangan dengan properti dari modul dasar (atau lainnya). Misalnya, Anda dapat menetapkan buildTypes.release.debuggable = true dalam modul dasar dan menetapkannya ke false dalam modul fitur. Pertentangan tersebut dapat menyebabkan masalah build dan waktu proses. Perlu diperhatikan bahwa, secara default, modul fitur mewarisi beberapa konfigurasi build dari modul dasar. Jadi, pastikan Anda memahami konfigurasi yang harus disimpan, dan konfigurasi yang harus dihapus, di konfigurasi build modul fitur.
  • Untuk mendownload modul fitur, perangkat perlu menginstal aplikasi Play Store versi terbaru. Jadi, jika aplikasi Anda menyertakan modul fitur, download untuk sebagian kecil pengguna dapat kembali menggunakan satu multi-APK yang dioptimalkan. Proses download ini serupa dengan proses di perangkat yang menjalankan Android 4.4 (API level 20) dan yang lebih rendah.

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, APK konfigurasi, dan multi APK (untuk perangkat yang tidak mendukung APK terpisah). 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, 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 memiliki nama yang ditentukan oleh atribut split dalam manifes modul. Untuk mempelajari lebih lanjut, baca tentang manifes modul fitur.
  • 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: saat penginstalan, fast-follow, 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 Play Asset Delivery.
  • 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.

Ringkasan APK terpisah

Komponen dasar penayangan aplikasi yang dioptimalkan adalah mekanisme APK terpisah yang tersedia di Android 5.0 (API level 21) dan yang lebih tinggi. APK Terpisah sangat mirip dengan APK reguler. APK tersebut mencakup bytecode DEX yang dikompilasi, resource, dan manifes Android. Namun, platform Android dapat mengelola beberapa APK terpisah yang terinstal sebagai aplikasi tunggal. Artinya, Anda dapat menginstal beberapa APK terpisah yang memiliki akses ke resource dan kode umum, dan muncul sebagai satu aplikasi yang diinstal pada perangkat.

Manfaat APK terpisah adalah kemampuannya untuk memecah APK monolitik, yaitu APK yang menyertakan kode dan resource untuk semua konfigurasi perangkat dan fitur yang didukung aplikasi Anda, ke dalam paket terpisah lebih kecil yang diinstal di perangkat pengguna jika diperlukan.

Misalnya, satu APK terpisah dapat menyertakan kode dan resource untuk fitur tambahan yang hanya dibutuhkan beberapa pengguna, sedangkan APK terpisah lainnya mencakup resource hanya untuk bahasa atau kepadatan layar tertentu. Setiap APK terpisah tersebut didownload dan diinstal jika pengguna memintanya atau jika diperlukan oleh perangkat.

Berikut ini menjelaskan berbagai jenis APK yang dapat diinstal bersama pada perangkat untuk membentuk pengalaman aplikasi secara menyeluruh. Anda akan mempelajari cara mengonfigurasi project aplikasi untuk mendukung APK ini di bagian selanjutnya pada halaman ini.

  • APK Dasar: APK ini berisi kode dan resource yang dapat diakses oleh semua APK terpisah lainnya dan menyediakan fungsi dasar untuk aplikasi Anda. Jika pengguna meminta untuk mendownload aplikasi Anda, APK ini akan didownload dan diinstal terlebih dahulu. Hal ini terjadi karena hanya manifes APK dasar yang berisi deklarasi lengkap tentang layanan aplikasi Anda, penyedia konten, izin, persyaratan versi platform, dan dependensi pada fitur sistem. Google Play menghasilkan APK dasar untuk aplikasi Anda dari modul aplikasi (atau modul dasar) project Anda. Jika Anda ingin mengurangi ukuran download awal aplikasi Anda, penting untuk diingat bahwa semua kode dan resource yang disertakan dalam modul ini disertakan dalam APK dasar aplikasi Anda.
  • APK Konfigurasi: Setiap APK ini berisi resource dan library native untuk kepadatan layar, arsitektur CPU, atau bahasa tertentu. Saat pengguna mendownload aplikasi Anda, perangkat mereka akan mendownload dan menginstal APK konfigurasi yang hanya menargetkan perangkatnya. Setiap APK konfigurasi bergantung pada APK dasar atau APK modul fitur. Artinya, APK tersebut didownload dan diinstal bersama dengan APK yang mereka beri kode dan resource. Berbeda dengan modul dasar dan modul fitur, Anda tidak membuat modul terpisah untuk APK konfigurasi. Jika Anda menggunakan praktik standar untuk mengatur resource alternatif dengan konfigurasi khusus untuk modul dasar dan fitur, Google Play secara otomatis membuat APK konfigurasi untuk Anda.
  • APK modul fitur: Setiap APK ini berisi kode dan resource untuk fitur aplikasi yang Anda memodularkan menggunakan modul fitur. Kemudian, Anda dapat menyesuaikan cara dan waktu fitur tersebut didownload ke perangkat. Misalnya, menggunakan Play Core Library, fitur dapat diinstal on demand setelah APK dasar terinstal di perangkat untuk memberikan fungsi tambahan kepada pengguna. Pertimbangkan aplikasi chat yang mendownload dan menginstal kemampuan untuk menangkap dan mengirim foto hanya ketika pengguna meminta untuk menggunakan fungsi tersebut. Karena modul fitur mungkin tidak tersedia sewaktu penginstalan, sebaiknya sertakan kode dan resource umum dalam APK dasar. Artinya, modul fitur Anda hanya akan memuat kode dan resource untuk APK dasar yang tersedia sewaktu penginstalan. Google Play membuat APK modul fitur untuk aplikasi Anda dari modul fitur project.

Pertimbangkan aplikasi dengan tiga modul fitur dan dukungan untuk beberapa konfigurasi perangkat. Gambar 1 di bawah ini menggambarkan seperti apa hierarki dependensi untuk berbagai APK aplikasi. Perhatikan bahwa APK dasar membentuk puncak hierarki, dan semua APK lainnya bergantung pada APK dasar. (Jika Anda ingin mengetahui bagaimana modul APK ini direpresentasikan dalam Android App Bundle, baca Format Android App Bundle.)

APK dasar berada di bagian atas hierarki dengan APK modul fitur yang memiliki dependensi padanya. APK Konfigurasi, yang menyertakan kode khusus konfigurasi perangkat dan resource untuk setiap APK modul fitur dan dasar, membentuk simpul daun dari hierarki dependensi.

Gambar 1. Hierarki dependensi untuk aplikasi yang disajikan menggunakan APK terpisah

Perlu diingat, Anda tidak perlu mem-build APK ini sendiri. Google Play yang akan melakukannya untuk Anda menggunakan app bundle tunggal yang ditandatangani dan Anda build dengan Android Studio. Untuk mengetahui selengkapnya tentang format app bundle dan cara mem-build-nya, buka Mem-build, men-deploy, dan mengupload Android App Bundle.

Perangkat yang menjalankan Android 4.4 (API level 19) dan lebih rendah

Karena perangkat yang menjalankan Android 4.4 (API level 19) dan yang lebih rendah tidak mendukung download dan penginstalan APK terpisah, Google Play menyediakan APK tunggal, yang disebut multi-APK, yang dioptimalkan untuk konfigurasi perangkat. Artinya, multi-APK mewakili pengalaman aplikasi lengkap Anda, tetapi tidak menyertakan kode dan resource yang tidak perlu, misalnya untuk kepadatan layar lainnya dan arsitektur CPU.

Namun, APK tersebut menyertakan resource untuk semua bahasa yang didukung aplikasi Anda. Hal ini memungkinkan pengguna untuk, misalnya, mengubah setelan bahasa pilihan aplikasi Anda tanpa harus mendownload multi-APK lain.

Multi-APK tidak memiliki kemampuan untuk mendownload modul fitur on demand nantinya. Untuk menyertakan modul fitur dalam APK ini, Anda harus menonaktifkan On-demand atau mengaktifkan Fusing saat membuat modul fitur.

Perlu diingat, dengan app bundle, Anda tidak perlu membuat, menandatangani, mengupload, dan mengelola APK untuk setiap konfigurasi perangkat yang didukung aplikasi Anda. Anda tetap membuat dan mengupload hanya satu app bundle untuk seluruh aplikasi, dan Google Play yang akan menangani sisanya. Jadi, terlepas dari apakah Anda berencana mendukung perangkat yang menjalankan Android 4.4 atau yang lebih rendah, Google Play menyediakan mekanisme penayangan yang fleksibel bagi Anda dan pengguna.

Referensi lainnya

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

Contoh

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

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 modul fitur on demand.

Postingan blog

Video