Jika Anda masih menggunakan Fitur plugin Android Gradle yang tidak digunakan lagi
(com.android.feature
) untuk modul Aplikasi Instan Android, Anda harus
bermigrasi untuk menggunakan plugin aplikasi dasar (com.android.application
) dan
plugin Fitur Dinamis (com.android.dynamic-feature
).
Pada plugin Android Gradle 3.3.0 dan versi yang lebih baru, plugin aplikasi dasar mencakup dukungan untuk pengalaman instan. Artinya, jika modul aplikasi dasar memenuhi persyaratan untuk menjadi pengalaman instan, Anda akan mendapatkan manfaatnya secara otomatis. Kemudian, Anda dapat menyertakan fitur tambahan yang dapat didownload sesuai kebutuhan pengguna sebagai pengalaman instan menggunakan plugin Fitur Dinamis. Penyiapan ini mempermudah dukungan untuk pengalaman aplikasi instan maupun terinstal dari satu project, dan memungkinkan Anda memperoleh manfaat dari memublikasikan aplikasi dengan Android App Bundle.
Tabel berikut akan lebih menjelaskan plugin yang digunakan setelah migrasi:
Deskripsi modul | Plugin lama | Plugin saat ini |
---|---|---|
Modul yang menyertakan kode, resource, dan fungsi dasar untuk pengalaman aplikasi terinstal atau instan. | com.android.feature (dengan baseFeature = true )
|
com.android.application
Catatan: Modul ini mencakup semua informasi manifes dan informasi penandatanganan yang diperlukan untuk membuat dan mengemas aplikasi Anda sebagai Android App Bundle atau APK. |
Fitur modular tambahan yang dapat didownload pengguna sesuai kebutuhan | com.android.feature |
com.android.dynamic-feature (dengan
dist:instant="true" dan
dist:onDemand="false" dalam manifes modul) |
Kode dan resource untuk fitur yang hanya tersedia untuk versi aplikasi terinstal. | com.android.application |
com.android.dynamic-feature (dengan
dist:instant="false" dan dist:onDemand="false"
dalam manifes modul) |
Halaman ini menunjukkan cara memigrasikan project aplikasi instan yang sudah ada untuk membuat Android App Bundle yang mendukung pengalaman instan. Artikel ini juga menjelaskan cara membuat, menguji, dan memublikasikan Android App Bundle yang mendukung pengalaman instan.
Jika Anda membuat pengalaman instan baru untuk aplikasi, baca Membuat modul fitur yang mendukung pengalaman instan.
Memahami perubahan
Saat Anda memigrasikan project untuk menggunakan plugin Fitur Dinamis, Android App Bundle menyediakan cara baru untuk membuat dan memublikasikan aplikasi Anda yang secara nyata mempermudah distribusi APK yang dioptimalkan kepada pengguna.
App bundle menyederhanakan distribusi dengan mengemas semua kode dan resource yang dikompilasi aplikasi Anda untuk diupload, tetapi menangguhkan pembuatan dan penandatanganan APK ke Google Play. Model penyajian aplikasi baru Google Play kemudian menggunakan app bundle Anda untuk membuat dan menayangkan APK yang dioptimalkan untuk setiap konfigurasi perangkat pengguna, sehingga mereka hanya mendownload kode dan resource yang diperlukan untuk menjalankan aplikasi Anda. Anda tidak perlu lagi membuat, menandatangani, dan mengelola beberapa APK untuk mendukung perangkat yang berbeda, dan pengguna mendapatkan hasil download yang lebih kecil dan lebih dioptimalkan.
Saat menggunakan plugin fitur yang kini sudah tidak digunakan lagi, proses build aplikasi instan memerlukan pembuatan modul fitur dasar yang berisi kode dan resource bersama untuk semua modul Anda, termasuk modul aplikasi instan. Sisa kode Anda disertakan dalam beberapa modul fitur non-dasar yang berisi titik masuk untuk pengalaman instan Anda. Untuk versi aplikasi terinstal, project Anda mungkin telah menyertakan modul aplikasi terpisah yang berisi kode dan aktivitas yang diperlukan hanya untuk aplikasi terinstal.
Saat memigrasikan aplikasi untuk mendukung Android App Bundle, modul aplikasi Anda mengklaim kembali peran modul dasar, dan Anda mengatur pengalaman tambahan yang diinstal atau instan sebagai modul fitur. Artinya, project Anda sekarang lebih mirip dengan project aplikasi standar, dengan modul dasar yang mendukung pengalaman instan dan kemampuan untuk menyertakan pengalaman instan modular tambahan.
Untuk memigrasikan project aplikasi instan yang ada dan mengadopsi model distribusi Android App Bundle yang lebih optimal, ikuti langkah-langkah yang dijelaskan dalam bagian di bawah ini.
Mengonversi modul fitur dasar menjadi modul aplikasi
Pertama, Anda harus mengedit file build.gradle
modul fitur dasar sebelum
mengonversinya menjadi modul aplikasi utama, seperti berikut:
- Hapus baris
baseFeature true
. Hapus semua dependensi yang menggunakan konfigurasi dependensi
feature
atauapplication
.Groovy
dependencies { ... // delete any lines that look like // feature project(":foo") // feature project(":bar") // application project(":app") }
Kotlin
dependencies { ... // delete any lines that look like // feature(project(":foo")) // feature(project(":bar")) // application(project(":app")) }
Pindahkan
applicationId
, bersama dengan konfigurasi skrip build lain yang Anda harapkan berada di modul aplikasi dasar, dari modulcom.android.application
saat ini ke modulcom.android.feature
. Beberapa contoh ditampilkan di bawah ini. Untuk langkah ini, bergantung pada penyiapanbuild.gradle
khusus Anda, akan lebih mudah untuk menyalin dan menempelkan blokandroid
build.gradle
dari modul aplikasi sebelumnya ke filebuild.gradle
modul aplikasi baru. Akan tetapi, Anda harus berhati-hati saat melakukannya.Groovy
android { ... defaultConfig { // You need to move the application ID from the app module // to your feature module. applicationId "com.example.myapp" ... } // Some additional build configurations you might want to // copy from your current ‘app’ module may include ProGuard // rules and code shrinking settings. buildTypes { release { minifyEnabled true proguardFiles getDefaultProguardFile( 'proguard-android-optimize.txt'), 'proguard-rules.pro' } } }
Kotlin
android { ... defaultConfig { // You need to move the application ID from the app module // to your feature module. applicationId = "com.example.myapp" ... } // Some additional build configurations you might want to // copy from your current ‘app’ module may include ProGuard // rules and code shrinking settings. buildTypes { getByName("release") { minifyEnabled = true proguardFiles( getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro" ) } } }
Tandai modul fitur sebagai mendukung pengalaman instan dengan menambahkan tag distribusi paket yang sesuai ke manifes, seperti yang ditampilkan di bawah ini.
<manifest ... xmlns:dist="http://schemas.android.com/apk/distribution"> <dist:module dist:instant="true" /> ... </manifest>
Konversikan modul fitur ke modul aplikasi dasar Anda dengan mengubah jenis pluginnya menjadi
com.android.application
:Groovy
// Replace "plugins { id 'com.android.feature' }" // with the following plugins { id 'com.android.application' }
Kotlin
// Replace "plugins { id("com.android.feature") }" // with the following plugins { id("com.android.application") }
Mengonversi modul aplikasi lama menjadi modul fitur waktu penginstalan
Jika tidak memiliki kode atau resource dalam modul aplikasi lama, Anda dapat menghapusnya—karena langkah yang Anda ikuti di bagian sebelumnya telah mengonversi modul fitur ke modul aplikasi dasar aplikasi.
Akan tetapi, jika Anda memiliki kode dan resource di modul aplikasi lama yang mewakili fungsi yang ingin disediakan bagi pengguna saat mereka menginstal aplikasi Anda, ikuti langkah-langkah di bagian ini untuk mengonversi modul aplikasi menjadi modul fitur.
Membuat modul fitur melibatkan perubahan jenis plugin dari
com.android.application
ke com.android.dynamic-feature
, bersama dengan beberapa
perubahan build.gradle
lainnya, sebagai berikut:
Ubah jenis plugin dari
com.android.application
kecom.android.dynamic-feature
.Groovy
// Replace "plugins { id 'com.android.feature' }" // with the following: plugins { id 'com.android.dynamic-feature' }
Kotlin
// Replace "plugins { id("com.android.application") }" // with the following: plugins { id("com.android.dynamic-feature") }
Seperti yang dijelaskan di bagian sebelumnya, pastikan Anda telah memindahkan konfigurasi build yang diperlukan oleh plugin
com.android.application
ke modul aplikasi dasar, seperti aturanapplicationId
atauproguardFiles
.Ganti nama modul menjadi sesuatu seperti "installed_feature" seperti berikut:
- Buka panel Project dengan memilih View > Tool Windows > Project dari panel menu.
- Klik kanan modul fitur dan pilih Refactor > Rename.
- Pada dialog yang muncul, pilih Rename module, lalu klik OK.
- Masukkan nama baru untuk modul, lalu klik OK.
Sama seperti langkah 3, ganti nama modul aplikasi baru yang Anda buat di bagian sebelumnya menjadi sesuatu seperti “app”.
Tambahkan dependensi penerapan pada modul “app” di file
build.gradle
modul fitur, seperti yang ditunjukkan di bawah ini.Groovy
dependencies { ... // In the feature module, add an implementation dependency // on the base app module. implementation project(":app") }
Kotlin
dependencies { ... // In the feature module, add an implementation dependency // on the base app module. implementation(project(":app")) }
Tambahkan fitur ke file
build.gradle
modul aplikasi baru.Groovy
android { ... // In the base app module, specify each feature module. dynamicFeatures = [":installed_feature"] }
Kotlin
android { ... // In the base app module, specify each feature module. dynamicFeatures.addAll(listOf(":installed_feature")) }
Dalam manifes modul fitur, tandai modul fitur sebagai modul yang dapat diinstal dengan menambahkan tag distribusi paket yang sesuai ke manifes.
<manifest ... xmlns:dist="http://schemas.android.com/apk/distribution"> <dist:module dist:instant="false" dist:onDemand="false" dist:title="@string/title_dynamic_feature"> <dist:fusing dist:include="true" /> </dist:module> ... </manifest>
Mengonversi modul fitur lainnya menjadi modul fitur yang mendukung pengalaman instan
Jika Anda telah memodularisasi fungsi tambahan aplikasi menjadi beberapa modul Fitur, Anda harus mengikuti langkah-langkah di bagian ini untuk mengonversi modul tersebut menjadi modul fitur yang mendukung pengalaman instan.
Untuk setiap modul fitur yang tersisa dalam project Anda, lakukan langkah-langkah berikut untuk mengonversinya menjadi fitur yang mendukung pengalaman instan:
Ubah jenis plugin di file
build.gradle
menjadicom.android.dynamic-feature
, seperti yang ditampilkan di bawah:Groovy
// Replace 'com.android.feature' with 'com.android.dynamic-feature' plugins { id 'com.android.dynamic-feature' }
Kotlin
// Replace "com.android.feature" with "com.android.dynamic-feature" plugins { id("com.android.dynamic-feature") }
Tandai setiap modul fitur sebagai mendukung pengalaman instan dengan menambahkan kode berikut ini ke manifes.
<manifest ... xmlns:dist="http://schemas.android.com/apk/distribution"> <dist:module dist:instant="true" dist:onDemand="false" dist:title="@string/title_dynamic_feature"> <dist:fusing dist:include="true" /> </dist:module> ... </manifest>
Tambahkan modul fitur ke file
build.gradle
modul aplikasi baru, tempat Anda menambahkaninstalled_feature
ke daftar modul fitur.Groovy
android { ... dynamicFeatures = [":installed_feature", ":feature_1", ":feature_2"] // or whichever name exists for the instant enabled feature module }
Kotlin
android { ... dynamicFeatures.addAll(listOf(":installed_feature", ":feature_1", ":feature_2")) // or whichever name exists for the instant enabled feature module }
Membuat, menguji, dan memublikasikan app bundle yang mendukung pengalaman instan
Setelah menyelesaikan langkah-langkah di halaman ini, project Anda mampu menghasilkan satu artefak, Android App Bundle, yang dapat digunakan untuk memublikasikan versi aplikasi terinstal dan instan ke Konsol Google Play, dan diluncurkan secara terpisah untuk track instan dan terinstal. Selain itu, dengan app bundle, Anda mendapatkan manfaat menyajikan APK yang dioptimalkan untuk setiap konfigurasi perangkat pengguna, sehingga mereka hanya mendownload kode dan resource yang diperlukan untuk menjalankan aplikasi Anda. Artinya, Anda tidak perlu lagi membuat, menandatangani, dan mengelola beberapa APK untuk mendukung perangkat yang berbeda, dan pengguna mendapatkan hasil download yang lebih kecil dan lebih dioptimalkan.
Untuk mulai membuat dan menguji app bundle yang mendukung pengalaman instan, buka Membuat app bundle.