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 apa pun ID aplikasi-nya.

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 dengan ID aplikasi tersebut) 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'
    ...
}

Saat mem-build aplikasi menjadi paket aplikasi akhir (APK), alat build Android menggunakan namespace sebagai namespace untuk class R yang dihasilkan aplikasi Anda (digunakan untuk mengakses resource aplikasi). Misalnya, dalam file build sebelumnya, class R dibuat di com.example.myapp.R.

Dengan demikian, nama yang Anda setel untuk properti namespace file build.gradle akan 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 menggunakan namespace dari properti namespace.

Untuk alur kerja yang lebih sederhana, namespace harus sama dengan ID aplikasi, seperti saat default-nya.

Mengubah namespace

Untuk memudahkan, Anda sebaiknya membiarkan namespace dan ID aplikasi tetap sama, seperti saat 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 memperbarui properti namespace di file build.gradle modul), apa pun ID aplikasi-nya. Sebelum melakukannya, pastikan ID aplikasi Anda ditentukan secara eksplisit sehingga mengubah namespace tidak akan mengubah ID aplikasi. Untuk mengetahui informasi selengkapnya tentang pengaruh namespace terhadap ID aplikasi, lihat Menyetel 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.

Mengubah namespace untuk pengujian

Namespace default untuk set sumber androidTest dan test adalah namespace utama, dengan .test ditambahkan di akhir. Misalnya, jika properti namespace dalam file build.gradle adalah com.example.myapp, namespace pengujian akan ditetapkan secara default ke com.example.myapp.test. Guna mengubah namespace untuk pengujian, gunakan properti testNamespace, seperti yang ditunjukkan dalam cuplikan kode berikut:

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

Perhatian: Jangan setel testNamespace dan namespace ke nilai yang sama agar tidak terjadi konflik namespace.

Untuk mempelajari pengujian lebih lanjut, lihat Menguji aplikasi di Android.