Mengonfigurasi modul aplikasi

Halaman ini menjelaskan setelan aplikasi yang berguna dalam file build.gradle tingkat modul yang mungkin ingin Anda aktifkan atau nonaktifkan.

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. Jika ingin mengupload versi baru aplikasi, ID aplikasi (dan sertifikat yang Anda tanda tangani ) harus sama dengan artefak aslinya; jika ID aplikasi diubah, Google Play Store akan memperlakukan upload tersebut sebagai aplikasi yang benar-benar berbeda. Jadi, setelah memublikasikan aplikasi, Anda tidak boleh mengubah ID aplikasi.

ID aplikasi ditentukan dengan 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"
        minSdkVersion(15)
        targetSdkVersion(24)
        versionCode = 1
        versionName = "1.0"
    }
    ...
}

Saat Anda membuat project baru di Android Studio, applicationId akan sama persis dengan nama paket gaya Java yang Anda pilih saat penyiapan. Namun, ID aplikasi dan nama paket tidak saling memengaruhi setelah melewati titik ini. Anda dapat mengubah nama paket kode (namespace kode) dan itu tidak akan memengaruhi ID aplikasi, begitu pun sebaliknya (tapi ingat, Anda tidak boleh mengubah ID aplikasi setelah memublikasikannya). Namun, mengubah nama paket memiliki konsekuensi lain yang harus Anda ketahui, jadi lihat bagian tentang cara mengubah nama paket.

Dan meskipun ID aplikasi terlihat seperti nama paket Java tradisional, aturan pemberian nama untuk 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_].

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.

Mengubah nama paket

Meskipun nama paket project Anda secara default cocok dengan ID aplikasi, Anda dapat mengubahnya. Namun, jika Anda ingin mengubah nama paket, perlu diperhatikan bahwa nama paket (seperti yang ditentukan oleh struktur direktori project) harus selalu sama dengan atribut package dalam file AndroidManifest.xml, seperti yang ditampilkan di sini:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.myapp"
    android:versionCode="1"
    android:versionName="1.0" >

Alat build Android menggunakan atribut package untuk dua hal:

  • Untuk menerapkan nama ini sebagai namespace bagi class R.java yang dihasilkan aplikasi Anda.

    Contoh: Dengan manifes di atas, class R akan menjadi com.example.myapp.R.

  • Ini digunakan untuk menentukan setiap nama class relatif yang dideklarasikan dalam file manifes.

    Contoh: Dengan manifes di atas, aktivitas yang dideklarasikan sebagai <activity android:name=".MainActivity"> ditentukan menjadi com.example.myapp.MainActivity.

Dengan demikian, nama dalam atribut package selalu sama dengan nama paket dasar project, tempat Anda menyimpan aktivitas dan kode aplikasi lainnya. Tentu saja, Anda dapat memiliki sub-paket dalam project, tetapi file tersebut harus mengimpor class R.java menggunakan namespace dari atribut package, dan setiap komponen aplikasi yang dideklarasikan dalam manifes harus menambahkan nama sub-paket yang tidak ada (atau menggunakan nama paket yang sepenuhnya memenuhi syarat).

Jika Anda ingin memfaktorkan ulang nama paket sepenuhnya, pastikan juga untuk memperbarui atribut package. Selama Anda menggunakan alat Android Studio untuk mengganti nama dan memfaktorkan ulang paket, semuanya akan tetap tersinkron secara otomatis. (Jika paket tidak disinkronkan, kode aplikasi tidak dapat menyelesaikan class R karena tidak lagi berada dalam paket yang sama, dan manifes tidak akan mengidentifikasi aktivitas Anda atau komponen lainnya.)

Anda harus selalu menetapkan atribut package dalam file AndroidManifest.xml utama project. Jika Anda memiliki file manifes tambahan (seperti untuk ragam produk atau jenis build), perlu diperhatikan bahwa nama paket yang diberikan oleh file manifes dengan prioritas tertinggi akan selalu digunakan dalam manifes gabungan akhir. Untuk mengetahui informasi selengkapnya, lihat Menggabungkan beberapa file manifes.

Satu lagi yang perlu diketahui: Meskipun Anda mungkin memiliki nama yang berbeda untuk manifes package dan applicationId Gradle, alat build akan menyalin ID aplikasi ke file manifes akhir aplikasi Anda di akhir proses build. Jadi, saat memeriksa file AndroidManifest.xml setelah proses build, Anda tidak perlu terkejut dengan atribut package yang telah berubah. Atribut package adalah area sebenarnya yang ditelusuri platform Android dan Google Play Store untuk mengidentifikasi aplikasi Anda; jadi, setelah build menggunakan nilai asli (untuk memberikan namespace pada class R dan menentukan nama class manifes), build akan membuang nilai tersebut dan menggantinya dengan ID aplikasi.