Mengonfigurasi modul aplikasi

Halaman ini menjelaskan setelan aplikasi yang berguna dalam file build.gradle tingkat modul yang mungkin ingin Anda aktifkan atau nonaktifkan. Selain memberikan ringkasan properti penting yang ditetapkan dalam file build.gradle, kami menjelaskan cara Anda dapat:

  • Mengubah ID aplikasi untuk konfigurasi build yang berbeda.
  • Menyesuaikan namespace dengan aman terlepas dari ID aplikasi.

Menyetel ID aplikasi

Setiap aplikasi Android memiliki ID aplikasi unik yang terlihat seperti nama paket Java, misalnya com.example.myapp. ID ini secara unik mengidentifikasi aplikasi Anda di perangkat dan Google Play Store. Setelah Anda memublikasikan aplikasi, Anda tidak boleh mengubah ID aplikasi. Jika Anda ingin mengupload versi baru aplikasi, ID aplikasi (dan sertifikat yang Anda tanda tangani ) harus sama seperti saat pertama kali dipublikasikan—jika Anda mengubah ID aplikasi, Google Play Store akan memperlakukan upload sebagai aplikasi yang sepenuhnya berbeda.

ID aplikasi ditentukan oleh properti applicationId dalam file build.gradle modul Anda, seperti yang ditampilkan di sini:

Groovy

android {
    defaultConfig {
        applicationId "com.example.myapp"
        minSdkVersion 15
        targetSdkVersion 24
        versionCode 1
        versionName "1.0"
    }
    ...
}

Kotlin

android {
    defaultConfig {
        applicationId = "com.example.myapp"
        minSdk = 15
        targetSdk = 24
        versionCode = 1
        versionName = "1.0"
    }
    ...
}

Meskipun ID aplikasi terlihat seperti nama paket Java tradisional (namespace kode Anda), aturan penamaan ID aplikasi sedikit lebih ketat:

  • Nama harus memiliki setidaknya dua bagian (satu atau beberapa titik).
  • Setiap bagian harus diawali dengan huruf.
  • Semua karakter hanya boleh berupa alfanumerik atau garis bawah [a-zA-Z0-9_].

Saat Anda membuat project baru di Android Studio, applicationId akan secara otomatis diberi nama paket bergaya Java yang Anda pilih saat penyiapan. Secara teknis, Anda dapat mengalihkan kedua properti secara independen sejak saat itu, tetapi kami tidak merekomendasikannya.

Berikut cara yang kami rekomendasikan untuk menyetel ID aplikasi:

  • Pastikan ID aplikasi tetap sama dengan namespace. Perbedaan antara dua properti tersebut bisa sedikit membingungkan, tetapi jika nama keduanya tetap sama, Anda tidak perlu khawatir.
  • Jangan ubah ID aplikasi setelah memublikasikan aplikasi. Jika Anda mengubahnya, Google Play Store akan memperlakukan upload berikutnya sebagai aplikasi baru.
  • Tentukan ID aplikasi secara eksplisit. Jika ID aplikasi tidak ditentukan secara eksplisit menggunakan properti applicationId, ID tersebut akan otomatis menggunakan nilai yang sama dengan namespace. Artinya, mengubah namespace akan mengubah ID aplikasi, yang biasanya tidak diinginkan.

Catatan: Sebelumnya, ID aplikasi terikat langsung dengan nama paket kode Anda sehingga beberapa API Android menggunakan istilah "nama paket" dalam nama metode dan nama parameternya, tetapi nama ini sebenarnya adalah ID aplikasi Anda. Misalnya, metode Context.getPackageName() akan menampilkan ID aplikasi Anda. Anda tidak perlu lagi menggunakan nama yang sama untuk paket aktual kode Anda di luar kode aplikasi.

Perhatian: Jika Anda menggunakan WebView, pertimbangkan untuk menggunakan nama paket sebagai awalan dalam ID aplikasi; jika tidak, Anda mungkin akan mengalami masalah seperti yang dijelaskan dalam masalah 211768.

Mengubah ID aplikasi untuk pengujian

Secara default, alat build akan menerapkan ID aplikasi ke APK uji instrumentasi Anda menggunakan ID aplikasi untuk varian build yang ditentukan, ditambah dengan .test. Misalnya, APK pengujian untuk varian build com.example.myapp.free memiliki ID aplikasi com.example.myapp.free.test.

Meskipun tidak wajib, Anda dapat mengubah ID aplikasi dengan menentukan properti testApplicationId dalam blok defaultConfig atau productFlavor.

Menetapkan namespace

Setiap modul Android memiliki namespace, yang digunakan sebagai nama paket Java untuk class R dan BuildConfig yang dihasilkannya.

Namespace Anda ditentukan oleh properti namespace dalam file build.gradle modul, seperti yang ditunjukkan dalam cuplikan kode berikut. namespace awalnya ditetapkan ke nama paket bergaya Java yang Anda pilih saat membuat project.

android {
    namespace 'com.example.myapp'
    ...
}

Selagi membuat aplikasi Anda menjadi paket aplikasi final (APK), alat build Android menggunakan namespace untuk dua hal:

  • Alat tersebut menerapkan nama ini sebagai namespace untuk class yang dibuat R.java aplikasi Anda (digunakan untuk mengakses resource aplikasi).

    Contoh: Dalam file build sebelumnya, class R dibuat pada com.example.myapp.R.

  • Alat tersebut menggunakan nama ini untuk me-resolve setiap nama class relatif yang dideklarasikan dalam file manifes.

    Contoh: Dalam file build sebelumnya, aktivitas yang dideklarasikan sebagai <activity android:name=".MainActivity"> di-resolve menjadi com.example.myapp.MainActivity.

Dengan demikian, nama yang Anda tetapkan untuk properti namespace file build.gradle harus selalu cocok dengan nama paket dasar project, tempat Anda menyimpan aktivitas dan kode aplikasi lainnya. Tentu saja, Anda dapat memiliki sub-paket lainnya di project, tetapi file tersebut harus mengimpor class R.java menggunakan namespace dari properti namespace.

Untuk alur kerja yang lebih sederhana, sebaiknya namespace tetap sama seperti ID aplikasi, seperti default-nya.

Mengubah namespace

Sebaiknya namespace tetap sama seperti ID aplikasi, seperti default-nya. Namun, Anda mungkin harus mengubah namespace pada waktu tertentu jika sedang menata ulang kode, atau untuk menghindari konflik namespace. Dalam kasus ini, namespace dapat diubah (dengan mengupdate properti namespace di file build.gradle modul), apa pun ID aplikasi-nya. Sebelum melakukannya, pastikan ID aplikasi Anda ditentukan secara eksplisit sehingga mengubah namespace juga tidak akan mengubah ID aplikasi. Untuk mengetahui informasi pengaruh namespace terhadap ID aplikasi selengkapnya, lihat Menetapkan ID aplikasi.

Jika nama namespace dan applicationId Gradle berbeda, perlu diingat bahwa alat build menyalin ID aplikasi ke file manifes akhir aplikasi Anda di akhir build. Jadi, saat memeriksa file AndroidManifest.xml setelah proses build, Anda tidak perlu terkejut dengan atribut package yang telah ditetapkan ke ID aplikasi. Atribut package dari manifes gabungan adalah tempat Google Play Store dan platform Android benar-benar mencari untuk mengidentifikasi aplikasi Anda.