Mengonfigurasi modul dasar

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 aplikasi di bawah ini ke file build.gradle menyediakan kode dan resource untuk fungsi dasar aplikasi Anda.

// The standard application plugin creates your app's base module.
apply plugin: 'com.android.application'

Jika Anda ingin mengurangi ukuran download awal aplikasi, penting untuk diingat bahwa semua kode dan resource yang disertakan dalam modul ini disertakan dalam APK dasar aplikasi Anda.

Selain menyediakan fungsi inti untuk aplikasi Anda, modul dasar juga menyediakan banyak konfigurasi build dan entri manifes yang memengaruhi seluruh project aplikasi. Misalnya, penandatanganan app bundle ditentukan oleh informasi yang Anda berikan untuk modul dasar, dan pembuatan versi untuk semua APK aplikasi ditetapkan di atribut versionCode dalam manifes modul dasar Anda. Aspek penting modul dasar lainnya dijelaskan di bawah ini.

Manifes modul dasar

Manifes untuk modul dasar aplikasi Anda serupa dengan modul aplikasi lainnya. Perlu diingat, saat membuat APK dasar aplikasi Anda, Google Play akan menggabungkan manifes untuk semua modul ke dalam APK dasar tersebut. Jadi, jika Anda mempertimbangkan untuk menambahkan modul fitur ke project aplikasi, ada beberapa aspek pada manifes APK dasar yang harus diingat:

  • Karena selalu diinstal terlebih dahulu, APK dasar harus menyediakan titik masuk utama untuk aplikasi Anda. Artinya, APK dasar harus mendeklarasikan aktivitas dengan filter intent berikut:

    <intent-filter>
         <action android:name="android.intent.action.MAIN" />
         <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
    
  • Anda harus menyertakan dukungan untuk library SplitCompat dalam manifes agar dapat mengakses kode dan resource modul yang didownload. Untuk mempelajari lebih lanjut, baca Mengakses kode dan resource dari modul hasil download.

  • Demikian pula, pada perangkat yang menjalankan Android 6.0 (API level 23) dan lebih rendah, aplikasi harus dimulai ulang sebelum platform dapat menerapkan entri manifes yang baru. Jadi, jika Anda memerlukan izin atau layanan tertentu segera setelah modul fitur didownload, pertimbangkan untuk menyertakannya dalam manifes modul dasar Anda.

  • Android App Bundle mencakup dukungan untuk library native yang tidak dikompresi. Saat membuat aplikasi menggunakan plugin Android Gradle 3.6.0 atau yang lebih tinggi, untuk mengurangi penggunaan disk bagi pengguna, plugin akan menetapkan hal berikut dalam manifes modul dasar secara default:

    <application
        android:extractNativeLibs="false"
        ... >
    

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, ada beberapa aspek pada konfigurasi build modul dasar yang harus diingat:

  • Penandatanganan aplikasi: Anda tidak perlu menyertakan informasi penandatanganan dalam file konfigurasi build, kecuali jika ingin membuat app bundle dari command line. Namun, jika menyertakan informasi penandatanganan, Anda harus memasukkannya hanya dalam file konfigurasi build modul dasar. Untuk mengetahui informasi selengkapnya, baca Mengonfigurasi Gradle untuk menandatangani aplikasi Anda.
  • Penyusutan kode: Jika Anda ingin mengaktifkan penyusutan 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:

android {
    // When building Android App Bundles, the splits block is ignored.
    splits {...}

    // Instead, use the bundle block to control which types of configuration APKs
    // you want your app bundle to support.
    bundle {
        language {
            // Specifies that the app bundle should not support
            // configuration APKs for language resources. These
            // resources are instead packaged with each base and
            // feature APK.
            enableSplit = false
        }
        density {
            // This property is set to true by default.
            enableSplit = true
        }
        abi {
            // This property is set to true by default.
            enableSplit = true
        }
    }
}

Mengelola 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.

Mendownload APK konfigurasi tambahan

Satu pengecualian dari alur update yang dijelaskan di atas adalah ketika aplikasi yang diinstal membutuhkan APK konfigurasi tambahan. Pertimbangkan pengguna yang mengubah bahasa sistem default perangkatnya setelah mendownload aplikasi Anda. Jika aplikasi mendukung bahasa tersebut, perangkat akan meminta dan mendownload APK konfigurasi tambahan untuk resource bahasa tersebut dari Google Play. Namun, update aplikasi jenis ini tidak mengubah kode versinya, sehingga perangkat hanya mendownload dan menginstal APK konfigurasi yang diperlukannya.