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.