Mengonfigurasi modul dasar

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.

Mulai

Sebagian besar project aplikasi tidak memerlukan banyak upaya untuk mendukung Android App Bundle. Ini karena modul yang menyertakan kode dan resource untuk APK dasar aplikasi Anda adalah modul aplikasi standar, yang didapatkan secara default saat Anda membuat project aplikasi baru di Android Studio. Artinya, modul yang menerapkan plugin application di bawah ini ke file build.gradle menyediakan kode dan resource untuk fungsi dasar aplikasi Anda.

Groovy

// The standard application plugin creates your app's base module.
plugins {
 id 'com.android.application'
}

Kotlin

plugins {
    // The standard application plugin creates your app's base module.
    id("com.android.application")
}

Selain menyediakan fungsi inti untuk aplikasi Anda, modul dasar juga menyediakan banyak konfigurasi build dan entri manifes yang memengaruhi seluruh project aplikasi.

Konfigurasi build modul dasar

Untuk sebagian besar project aplikasi yang ada, Anda tidak perlu mengubah apa pun dalam konfigurasi build modul dasar. Namun, jika Anda mempertimbangkan untuk menambahkan modul fitur ke project aplikasi atau jika sebelumnya Anda telah merilis aplikasi menggunakan beberapa APK, ada beberapa aspek konfigurasi build modul dasar yang harus Anda ingat.

Kode versi dan update aplikasi

Dengan Android App Bundle, Anda tidak perlu lagi mengelola kode versi untuk beberapa APK yang diupload ke Google Play. Anda cukup mengelola satu kode versi dalam modul dasar aplikasi, seperti yang ditunjukkan di bawah ini:

// In your base module build.gradle file
android {
    defaultConfig {
        …
        // You specify your app’s version code only in the base module.
        versionCode 5
        versionName "1.0"
    }
}

Setelah mengupload app bundle, Google Play akan menggunakan kode versi dalam modul dasar Anda untuk menetapkan kode versi yang sama pada semua APK yang dihasilkan dari bundle tersebut. Artinya, jika perangkat mendownload dan menginstal aplikasi Anda, semua APK terpisah untuk aplikasi tersebut akan memiliki kode versi yang sama.

Jika ingin mengupdate aplikasi dengan kode atau resource baru, Anda harus mengupdate kode versi di modul dasar aplikasi, dan mem-build app bundle baru yang lengkap. Ketika Anda mengupload app bundle tersebut ke Google Play, akan dihasilkan seperangkat APK baru berdasarkan kode versi yang ditentukan modul dasar. Selanjutnya, saat pengguna mengupdate aplikasi Anda, Google Play akan memberikan versi terbaru dari semua APK yang saat ini diinstal pada perangkat. Artinya, semua APK yang diinstal akan diupdate ke kode versi baru.

Pertimbangan lainnya

  • Penandatanganan aplikasi: Jika Anda menyertakan informasi penandatanganan dalam file build, sebaiknya hanya sertakan dalam file konfigurasi build modul dasar. Untuk mengetahui informasi selengkapnya, lihat Mengonfigurasi Gradle untuk menandatangani aplikasi.
  • Penyingkatan kode: Jika Anda ingin mengaktifkan penyingkatan kode untuk seluruh project aplikasi (termasuk modul fitur), Anda harus melakukannya dari file build.gradle modul dasar. Artinya, Anda dapat menyertakan aturan ProGuard kustom dalam modul fitur, tetapi minifyEnabled properti dalam konfigurasi build modul fitur diabaikan.
  • Blok splits diabaikan: Saat membuat app bundle, Gradle akan mengabaikan properti dalam blok android.splits. Jika ingin mengontrol jenis APK konfigurasi yang didukung oleh app bundle Anda, gunakan saja android.bundle untuk menonaktifkan jenis APK konfigurasi.
  • Pembuatan versi aplikasi: Modul dasar menentukan kode dan nama versi untuk seluruh project aplikasi Anda. Untuk mengetahui informasi lebih lanjut, baca bagian tentang cara Mengelola update aplikasi.

Mengaktifkan ulang atau menonaktifkan jenis APK konfigurasi

Secara default, app bundle yang Anda buat mendukung pembuatan APK konfigurasi untuk setiap kumpulan resource bahasa, resource kepadatan layar, dan library ABI. Dengan menggunakan blok android.bundle dalam file build.gradle modul dasar, seperti yang ditunjukkan di bawah ini, Anda dapat menonaktifkan dukungan untuk satu atau beberapa jenis APK konfigurasi:

Groovy

android {
    // When building Android App Bundles, the splits block is ignored.
    // You can remove it, unless you're going to continue to build multiple
    // APKs in parallel with the app bundle
    splits {...}

    // Instead, use the bundle block to control which types of configuration APKs
    // you want your app bundle to support.
    bundle {
        language {
            // This property is set to true by default.
            // You can specify `false` to turn off
            // generating configuration APKs for language resources.
            // These resources are instead packaged with each base and
            // feature APK.
            // Continue reading below to learn about situations when an app
            // might change setting to `false`, otherwise consider leaving
            // the default on for more optimized downloads.
            enableSplit = false
        }
        density {
            // This property is set to true by default.
            enableSplit = true
        }
        abi {
            // This property is set to true by default.
            enableSplit = true
        }
    }
}

Kotlin

android {
    // When building Android App Bundles, the splits block is ignored.
    // You can remove it, unless you're going to continue to build multiple
    // APKs in parallel with the app bundle
    splits {...}

    // Instead, use the bundle block to control which types of configuration APKs
    // you want your app bundle to support.
    bundle {
        language {
            // This property is set to true by default.
            // You can specify `false` to turn off
            // generating configuration APKs for language resources.
            // These resources are instead packaged with each base and
            // feature APK.
            // Continue reading below to learn about situations when an app
            // might change setting to `false`, otherwise consider leaving
            // the default on for more optimized downloads.
            enableSplit = false
        }
        density {
            // This property is set to true by default.
            enableSplit = true
        }
        abi {
            // This property is set to true by default.
            enableSplit = true
        }
    }
}

Menangani perubahan bahasa

Google Play menentukan resource bahasa yang akan diinstal dengan aplikasi berdasarkan pilihan bahasa di setelan perangkat pengguna. Pertimbangkan pengguna yang mengubah bahasa sistem default mereka setelah mendownload aplikasi Anda. Jika aplikasi Anda mendukung bahasa tersebut, perangkat akan meminta dan mendownload APK konfigurasi tambahan untuk resource bahasa tersebut dari Google Play.

Untuk aplikasi yang menawarkan pemilih bahasa di dalam aplikasi dan secara dinamis mengubah bahasa aplikasi, apa pun setelan bahasa tingkat sistem, Anda harus membuat beberapa perubahan untuk mencegah error akibat resource yang hilang. Tetapkan properti android.bundle.language.enableSplit ke false, atau pertimbangkan untuk menerapkan download bahasa on demand menggunakan library Play Core seperti yang dijelaskan dalam Mendownload resource bahasa tambahan