Model penayangan aplikasi Google Play menggunakan Android App Bundle untuk membuat dan menayangkan APK yang dioptimalkan untuk setiap konfigurasi perangkat pengguna, sehingga pengguna hanya perlu mendownload kode dan resource yang diperlukan untuk menjalankan aplikasi Anda.
Play Feature Delivery menggunakan kemampuan app bundle tingkat lanjut, sehingga memungkinkan fitur tertentu aplikasi Anda untuk dikirim secara kondisional atau didownload secara on demand.
Menggunakan modul fitur untuk pengiriman kustom
Manfaat unik dari modul fitur adalah kemampuan untuk menyesuaikan bagaimana dan kapan berbagai fitur aplikasi didownload ke perangkat yang menjalankan Android 5.0 (API level 21) atau yang lebih tinggi. Misalnya, untuk mengurangi ukuran download awal aplikasi, Anda dapat mengonfigurasi fitur tertentu untuk didownload secara on demand atau hanya oleh perangkat yang mendukung kemampuan tertentu, seperti kemampuan mengambil gambar atau mendukung fitur augmented reality.
Meskipun Anda mendapatkan download yang sangat optimal secara default saat mengupload aplikasi Anda sebagai app bundle, opsi pengiriman fitur yang lebih canggih dan dapat disesuaikan memerlukan konfigurasi tambahan dan modularisasi fitur aplikasi Anda menggunakan modul fitur. Artinya, modul fitur menyediakan elemen dasar untuk membuat fitur modular yang dapat Anda konfigurasi untuk didownload sesuai kebutuhan.
Pertimbangkan aplikasi yang memungkinkan pengguna Anda membeli dan menjual barang di marketplace. Anda dapat memodularisasi masing-masing fungsi aplikasi berikut ke dalam modul fitur yang terpisah:
- Login dan pembuatan akun
- Penjelajahan marketplace
- Penempatan item untuk dijual
- Pemrosesan pembayaran
Tabel di bawah ini menjelaskan berbagai opsi pengiriman yang didukung modul fitur, dana bagaimana opsi tersebut dapat digunakan untuk mengoptimalkan ukuran download awal dari aplikasi marketplace contoh.
Opsi pengiriman | Perilaku | Contoh kasus penggunaan | Memulai |
---|---|---|---|
Pengiriman saat penginstalan | Modul fitur yang tidak mengonfigurasi salah satu opsi pengiriman
yang dijelaskan di atas, akan didownload saat penginstalan aplikasi. Ini adalah
perilaku penting karena artinya Anda dapat mengadopsi opsi pengiriman tingkat lanjut
secara bertahap. Misalnya, Anda dapat memanfaatkan modularisasi fitur aplikasi dan mengaktifkan pengiriman on demand hanya setelah Anda sepenuhnya menerapkan download permintaan menggunakan Play Core Library.
Selain itu, aplikasi Anda dapat meminta untuk meng-uninstal fitur di lain waktu. Jadi, jika Anda memerlukan fitur tertentu saat penginstalan aplikasi, tetapi bukan setelahnya, Anda dapat mengurangi ukuran penginstalan dengan meminta penghapusan fitur dari perangkat. |
Jika aplikasi memiliki aktivitas pelatihan tertentu, seperti panduan interaktif tentang cara membeli dan menjual barang di marketplace, Anda dapat memasukkan fitur tersebut saat penginstalan aplikasi, secara default.
Namun, untuk mengurangi ukuran penginstalan, aplikasi dapat meminta penghapusan fitur setelah pengguna menyelesaikan pelatihan. |
Lakukan modularisasi aplikasi Anda menggunakan modul
fitur yang tidak mengonfigurasi opsi pengiriman lanjutan.
Untuk mempelajari cara mengurangi ukuran aplikasi yang terinstal dengan menghapus modul fitur tertentu yang mungkin tidak diperlukan lagi oleh pengguna, baca Mengelola modul terinstal. |
Pengiriman on demand | Mengizinkan aplikasi Anda meminta dan mendownload modul fitur sesuai kebutuhan. | Jika hanya 20% dari pengguna aplikasi marketplace memposting barang untuk dijual, strategi
yang baik untuk mengurangi ukuran download awal bagi sebagian besar pengguna
adalah menjadikan fungsi pengambilan gambar, termasuk deskripsi
barang, dan penempatan barang yang akan dijual sebagai download
on demand. Artinya, Anda dapat mengonfigurasi modul fitur untuk
fungsi penjualan aplikasi, yang hanya akan didownload saat pengguna menunjukkan
minat menempatkan barang untuk dijual ke marketplace.
Selain itu, jika pengguna berhenti menjual barang setelah periode waktu tertentu, aplikasi dapat mengurangi ukuran penginstalannya dengan meminta untuk meng-uninstal fitur tersebut. |
Buat modul fitur dan konfigurasi pengiriman on demand. Aplikasi Anda kemudian dapat menggunakan Play Core library untuk meminta download modul on demand. |
Pengiriman bersyarat | Memungkinkan Anda menentukan persyaratan perangkat pengguna tertentu, seperti fitur hardware, lokal, dan level API minimum untuk menentukan apakah fitur termodularisasi didownload saat penginstalan aplikasi. | Jika aplikasi marketplace memiliki jangkauan global, Anda mungkin perlu mendukung metode pembayaran yang hanya populer di wilayah atau penduduk lokal tertentu. Untuk mengurangi ukuran download aplikasi awal, Anda dapat membuat modul fitur yang terpisah untuk memproses jenis metode pembayaran tertentu dan menginstalnya secara kondisional pada perangkat pengguna berdasarkan lokal yang terdaftar. | Buat modul fitur dan konfigurasi pengiriman bersyarat. |
Pengiriman instan | Google Play Instan
memungkinkan pengguna berinteraksi dengan aplikasi Anda tanpa perlu menginstal APK
di perangkat mereka. Sebaliknya, pengguna dapat mencoba aplikasi Anda melalui tombol "Coba Sekarang" di Google Play Store atau URL yang Anda buat. Format pengiriman konten ini memudahkan Anda meningkatkan interaksi pengguna dengan aplikasi Anda.
Dengan pengiriman instan, Anda dapat menggunakan Google Play Instan untuk mengizinkan pengguna langsung mencoba fitur tertentu dari aplikasi Anda tanpa perlu menginstalnya. |
Pertimbangkan game yang menyertakan beberapa level awal game dalam modul fitur ringan. Anda dapat mengaktifkan secara instan modul tersebut sehingga pengguna dapat langsung mencoba game melalui link URL atau tombol “Coba Sekarang", tanpa menginstal aplikasi. | Buat modul fitur dan
konfigurasi
pengiriman instan. Aplikasi Anda kemudian dapat menggunakan
Play Core library untuk meminta
download modul on demand.
Ingat, modularisasi fitur aplikasi menggunakan modul fitur hanyalah langkah pertama. Untuk mendukung Google Play Instan, ukuran download modul dasar aplikasi Anda dan fitur aktif instan yang diberikan harus memenuhi batasan ukuran yang ketat. Untuk mempelajari lebih lanjut, baca Mengaktifkan pengalaman instan dengan mengurangi ukuran aplikasi atau game. |
Modularisasi untuk aplikasi Anda
Modularisasi aplikasi Anda adalah proses pemisahan komponen logis dari project aplikasi Anda menjadi modul yang berlainan (diskret).
Pengaturan ulang fungsi aplikasi ke dalam komponen terpisah ini memerlukan pertimbangan dan waktu yang cermat. Namun, modularisasi memberikan manfaat berikut untuk project Anda:
- Pengembangan secara paralel: Dengan memisahkan komponen logis dari aplikasi Anda ke dalam modul, tim atau individu lain di dalam organisasi Anda dapat mengambil kepemilikan setiap modul dan mengerjakannya dengan potensi konflik atau gangguan terhadap tim lain yang lebih kecil. Selain itu, jika Anda memiliki logika yang digunakan di berbagai bagian aplikasi, Anda dapat menggunakan modul library untuk mempromosikan penggunaan ulang kode dan enkapsulasi.
- Penyempurnaan waktu build: Sistem build, seperti sistem build Android Studio menggunakan Gradle, dioptimalkan untuk project yang diatur dalam modul. Misalnya, jika Anda mengaktifkan optimasi eksekusi project paralel Gradle di workstation termasuk prosesor multi-core, sistem build dapat mem-build beberapa modul secara paralel dan dapat mengurangi waktu build secara signifikan. Makin modular project Anda, makin signifikan peningkatan performa build-nya.
- Menyesuaikan pengiriman fitur: Fitur aplikasi Anda harus dimodularkan agar dapat memanfaatkan opsi pengiriman khusus, seperti pengiriman on demand, bersyarat, dan instan. Untuk membuat fitur on demand, Anda memerlukan upaya lebih banyak dan mungkin perlu melakukan pemfaktoran ulang pada aplikasi. Jadi, pertimbangkan baik-baik fitur aplikasi mana yang paling diuntungkan jika dimodularkan ke modul fitur dan yang paling merasakan manfaat dari opsi pengiriman khusus.
Proses memodularkan project berdasarkan fitur aplikasi dapat membutuhkan waktu dan pertimbangan matang agar dapat dilakukan dengan benar. Jika Anda memutuskan untuk mulai memodularkan aplikasi, Anda harus terlebih dahulu mengonfigurasi modul dasar Anda dengan properti yang diperlukan untuk mendukung fitur modular. Kemudian, Anda dapat memodularisasi fitur aplikasi secara bertahap tanpa mengubah perilaku aplikasi saat ini dengan mengonfigurasi modul fitur untuk dikirim saat aplikasi diinstal.
Manifes modul fitur
Saat membuat modul fitur baru menggunakan Android Studio, IDE menyertakan sebagian besar atribut manifes yang dibutuhkan modul untuk berperilaku seperti modul fitur. Selain itu, beberapa atribut diinjeksikan oleh sistem build pada waktu kompilasi, jadi Anda tidak perlu menentukan atau memodifikasinya sendiri. Tabel berikut menjelaskan atribut manifes yang penting untuk modul fitur.
Atribut | Deskripsi |
---|---|
<manifest |
Ini adalah blok
<manifest> standar Anda. |
xmlns:dist="http://schemas.android.com/apk/distribution" |
Menentukan namespace XML dist: baru yang dijelaskan lebih lanjut di bawah. |
split="split_name" |
Saat Android Studio mem-build app bundle Anda, atribut ini juga termasuk. Jadi, Anda tidak boleh menyertakan atau memodifikasi sendiri atribut ini.
Menentukan nama modul, yang ditentukan aplikasi Anda saat meminta modul on demand menggunakan Play Core Library. Cara Gradle menentukan nilai untuk atribut ini: Secara default, jika Anda membuat modul fitur menggunakan Android Studio, IDE akan menggunakan apa yang Anda tentukan sebagai Module name untuk mengidentifikasi modul sebagai subproject Gradle dalam file setelan Gradle Anda.
Jika Anda mem-build app bundle, Gradle akan menggunakan elemen terakhir dari
jalur subproject untuk memasukkan atribut manifes dalam manifes
modul tersebut. Misalnya, jika Anda membuat modul fitur baru di
direktori |
android:isFeatureSplit="true | false"> |
Saat Android Studio mem-build app bundle Anda, atribut ini juga termasuk. Jadi, Anda tidak boleh menyertakan
atau memodifikasi atribut ini secara manual.
Menentukan bahwa modul ini adalah modul fitur.
Manifes dalam modul dasar dan APK konfigurasi
menghapus atribut ini atau menyetelnya ke |
<dist:module |
Elemen XML baru ini mendefinisikan atribut yang menentukan cara modul dikemas dan didistribusikan sebagai APK. |
dist:instant="true | false" |
Menentukan apakah modul harus tersedia melalui
Google Play Instan sebagai
pengalaman instan.
Jika aplikasi Anda menyertakan satu atau beberapa modul fitur yang diaktifkan secara instan, Anda juga harus mengaktifkan modul dasar secara instan. Saat menggunakan Android Studio 3.5 atau yang lebih tinggi, IDE melakukan cara ini saat Anda membuat modul fitur yang diaktifkan secara instan. Anda tidak dapat menyetel elemen XML ini ke |
dist:title="@string/feature_name" |
Menentukan judul modul yang dilihat pengguna. Misalnya, perangkat dapat menampilkan judul ini ketika meminta konfirmasi download.
Anda perlu menyertakan resource string untuk judul ini dalam file |
<dist:fusing dist:include="true | false" />
|
Menentukan apakah modul akan disertakan dalam multi-APK yang
menargetkan perangkat yang menjalankan Android 4.4 (API level 20) dan lebih rendah.
Selain itu, jika Anda
menggunakan |
<dist:delivery> |
Opsi enkapsulasi yang menyesuaikan pengiriman modul, seperti yang ditampilkan di bawah ini. Perlu diingat, setiap modul fitur hanya boleh mengonfigurasi satu jenis opsi pengiriman khusus ini. |
<dist:install-time> |
Menentukan apakah modul harus tersedia pada waktu penginstalan. Ini adalah
perilaku default untuk modul fitur yang tidak menentukan
jenis opsi pengiriman khusus lainnya.
Untuk mempelajari download saat penginstalan lebih lanjut, baca Mengonfigurasi pengiriman saat penginstalan. Node ini juga dapat menentukan kondisi yang membatasi modul ke perangkat yang memenuhi persyaratan tertentu, seperti fitur perangkat, negara pengguna, atau API level minimum. Untuk mempelajari lebih lanjut, baca Mengonfigurasi pengiriman bersyarat. |
<dist:removable dist:value="true | false" /> |
Jika tidak disetel atau disetel ke Jika Default-nya adalah Catatan: Fitur ini hanya tersedia saat menggunakan plugin Android Gradle 4.2 atau saat menggunakan bundletool v1.0 dari command line. |
</dist:install-time> |
|
<dist:on-demand/> |
Menentukan apakah modul harus tersedia sebagai download
on demand. Artinya, modul tidak akan tersedia pada waktu penginstalan, tetapi
aplikasi Anda dapat meminta untuk mendownloadnya nanti.
Untuk mempelajari download on demand lebih lanjut, baca Mengonfigurasi pengiriman on demand. |
</dist:delivery> |
|
<application
|
Jika modul fitur tidak menghasilkan file DEX—artinya, tidak berisi
kode yang dikompilasi ke dalam format file DEX—Anda harus melakukan
langkah-langkah berikut (jika tidak, Anda dapat mengalami error waktu proses):
|
Menguji Play Feature Delivery
Cara terbaik untuk menguji Play Feature Delivery adalah melalui Google Play Store. Itu karena banyak manfaat dari Play Feature Delivery yang bergantung pada penangguhan pembuatan APK optimal, penandatanganan, dan penyajian pada Play Store. Jadi, terlepas apakah mengupload app bundle atau mengonfigurasi opsi pengiriman lanjutan lainnya, Anda harus menggunakan metode berikut untuk menguji aplikasi.
- Membagikan aplikasi Anda menggunakan URL. Ini adalah cara tercepat untuk mengupload app bundle Anda dan membagikan aplikasi Anda sebagai link Google Play Store dengan penguji tepercaya. Selain itu, ini adalah cara tercepat untuk menguji opsi pengiriman kustom, seperti mendownload fitur on demand.
- Menyiapkan uji terbuka, tertutup, atau internal. Metode ini menyediakan saluran uji terstruktur dan merupakan cara yang baik untuk menguji versi rilis final aplikasi Anda sebelum diluncurkan ke pengguna eksternal.
Membuat URI untuk resource
Jika Anda ingin mengakses resource yang disimpan di modul fitur menggunakan
URI, berikut cara membuat URI resource modul fitur menggunakan
Uri.Builder()
:
Kotlin
val uri = Uri.Builder() .scheme(ContentResolver.SCHEME_ANDROID_RESOURCE) .authority(context.getPackageName()) // Look up the resources in the application with its splits loaded .appendPath(resources.getResourceTypeName(resId)) .appendPath(String.format("%s:%s", resources.getResourcePackageName(resId), // Look up the dynamic resource in the split namespace. resources.getResourceEntryName(resId) )) .build()
Java
String uri = Uri.Builder() .scheme(ContentResolver.SCHEME_ANDROID_RESOURCE) .authority(context.getPackageName()) // Look up the resources in the application with its splits loaded .appendPath(resources.getResourceTypeName(resId)) .appendPath(String.format("%s:%s", resources.getResourcePackageName(resId), // Look up the dynamic resource in the split namespace. resources.getResourceEntryName(resId) )) .build().toString();
Setiap bagian jalur menuju resource dibuat pada waktu proses, yang memastikan bahwa namespace yang benar dibuat setelah APK terpisah dimuat.
Sebagai contoh cara pembuatan URI, asumsikan Anda memiliki aplikasi dan modul fitur dengan nama berikut:
- Nama paket aplikasi:
com.example.my_app_package
- Nama paket resource pada fitur:
com.example.my_app_package.my_dynamic_feature
Jika resId
dalam cuplikan kode di atas merujuk pada resource file mentah bernama
“my_video” di modul fitur, kode Uri.Builder()
di atas akan
menampilkan hal berikut:
android.resource://com.example.my_app_package/raw/com.example.my_app_package.my_dynamic_feature:my_video
URI ini kemudian dapat digunakan oleh aplikasi Anda untuk mengakses resource pada modul fitur.
Untuk memvalidasi jalur di URI, Anda dapat menggunakan APK Analyzer guna memeriksa APK modul fitur dan menentukan nama paketnya:
Gambar 2. Gunakan APK Analyzer untuk memeriksa nama paket dalam kompilasi file resource.
Pertimbangan untuk modul fitur
Dengan modul fitur, Anda dapat meningkatkan kecepatan build dan kecepatan teknis, serta menyesuaikan pengiriman fitur aplikasi secara ekstensif untuk mengurangi ukuran aplikasi. Namun, ada beberapa batasan dan kasus ekstrem yang perlu diingat saat menggunakan modul fitur:
- Menginstal 50 modul fitur atau lebih pada satu perangkat, melalui pengiriman bersyarat atau on demand, dapat menyebabkan masalah performa. Modul saat penginstalan, yang tidak dikonfigurasi sebagai dapat dilepas, otomatis disertakan dalam modul dasar dan hanya dihitung sebagai satu modul fitur pada setiap perangkat.
- Batasi jumlah modul yang Anda konfigurasi sebagai dapat dilepas untuk pengiriman saat penginstalan menjadi 10 atau kurang. Jika tidak, waktu download dan penginstalan aplikasi akan bertambah.
- Hanya perangkat yang menjalankan Android 5.0 (API level 21) dan dukungan yang lebih tinggi yang dapat mendownload dan menginstal fitur on demand. Agar fitur Anda tersedia untuk Android versi sebelumnya, aktifkan Fusing saat membuat modul fitur.
- Aktifkan SplitCompat, sehingga aplikasi Anda memiliki akses ke modul fitur yang didownload yang ditayangkan on demand.
- Modul fitur seharusnya tidak menentukan aktivitas dalam manifesnya dengan
android:exported
yang disetel ketrue
. Ini karena tidak adanya jaminan bahwa perangkat mendownload modul fitur saat aplikasi lain mencoba meluncurkan aktivitas. Selain itu, aplikasi Anda harus mengonfirmasi bahwa fitur telah didownload sebelum mencoba mengakses kode dan resourcenya. Untuk mempelajari lebih lanjut, baca Mengelola modul terinstal. - Karena Play Feature Delivery mengharuskan Anda memublikasikan aplikasi menggunakan app bundle, pastikan Anda mengetahui masalah umum pada app bundle.
Referensi lainnya
Untuk mempelajari penggunaan Play Feature Delivery pendukung lebih lanjut, baca referensi berikut.
Contoh
- Contoh 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 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 modul fitur on demand.
Postingan blog
- Arti format publikasi baru bagi masa depan Android
- Fitur-fitur baru untuk membantu Anda mengembangkan, merilis, dan menumbuhkan bisnis di Google Play
- Update Android App Bundle terbaru termasuk API bahasa tambahan
- Arti format publikasi baru bagi masa depan Android
- Patchwork Plaid, yakni sebuah artikel tentang modularisasi
- Google Pelacak Sinterklas— Beralih ke Android App Bundle