Skip to content

Most visited

Recently visited

navigation

Menetapkan ID Aplikasi

Setiap aplikasi Android memiliki ID apllikasi unik yang terlihat seperti nama paket Java, seperti com.example.myapp. ID ini secara unik mengidentifikasi aplikasi pada perangkat dan Google Play Store. Jika Anda ingin mengunggah versi aplikasi baru, ID aplikasi (dan sertifikat yang Anda tandatangani) harus sama dengan APK asli—jika Anda mengubah ID aplikasi, Google Play Store memperlakukan APK sebagai aplikasi yang benar-benar berbeda. Jadi, setelah Anda mempublikasikan aplikasi, Anda tidak boleh mengubah ID aplikasi.

ID aplikasi Anda didefinisikan dengan properti applicationId di file build.gradle modul, seperti yang ditunjukkan di sini:

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

Saat Anda membuat proyek baru di Android Studio, applicationId sama persis dengan nama paket gaya-Java yang Anda pilih selama persiapan. Namun, ID aplikasi dan nama paket tidak saling memengaruhi setelah melewati titik ini. Anda bisa mengubah nama paket kode (namespace kode) dan itu tidak akan memengaruhi ID aplikasi, dan sebaliknya (meskipun, ingat, Anda tidak boleh mengubah ID aplikasi setelah mempublikasikan aplikasi). Namun, mengubah nama paket memiliki konsekuensi lain yang harus Anda waspadai, jadi silakan lihat bagian tentang memodifikasi nama paket.

Dan meskipun ID aplikasi terlihat seperti nama paket Java tradisional, aturan pemberian nama untuk ID aplikasi sedikit lebih ketat:

Catatan: Dahulu, ID aplikasi terikat langsung ke nama paket kode; jadi, beberapa Android API menggunakan istilah "nama paket" dalam nama metode dan nama parameternya, namun ini sebenarnya adalah ID aplikasi Anda. Misalnya, metode Context.getPackageName() mengembalikan ID aplikasi Anda. Tidak perlu membagikan nama paket kode sebenarnya di luar kode aplikasi Anda.

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

Mengubah ID aplikasi untuk varian versi

Ketika Anda membangun APK untuk aplikasi, alat pembangunan menandai APK dengan ID aplikasi yang didefinisikan dalam blok defaultConfig dari file build.gradle (seperti yang ditunjukkan di bawah ini). Namun, jika Anda ingin membuat versi aplikasi yang berbeda muncul sebagai cantuman terpisah pada Google Play Store, seperti versi "gratis" dan "pro", Anda harus membuat varian versi terpisah yang masing-masing memiliki ID aplikasi berbeda.

Dalam hal ini, setiap varian versi harus didefinisikan sebagai ragam produk terpisah. Untuk masing-masing ragam di dalam blok productFlavors {}, Anda bisa mendefinisikan ulang properti applicationId , atau malah menambahkan segmen ke ID aplikasi default menggunakan applicationIdSuffix, seperti yang ditunjukkan di sini:

android {
    defaultConfig {
        applicationId "com.example.myapp"
    }
    productFlavors {
        free {
            applicationIdSuffix ".free"
        }
        pro {
            applicationIdSuffix ".pro"
        }
    }
}

Dengan cara ini, ID aplikasi untuk ragam produk “gratis” adalah "com.example.myapp.free".

Anda juga bisa menggunakan applicationIdSuffix untuk menambahkan segmen berdasarkan tipe versi, seperti yang ditunjukkan di sini:

android {
    ...
    buildTypes {
        debug {
            applicationIdSuffix ".debug"
        }
    }
}

Karena Gradle menerapkan konfigurasi tipe versi setelah ragam produk, ID aplikasi untuk varian versi "free debug” sekarang adalah "com.example.myapp.free.debug". Ini berguna ketika Anda ingin memiliki versi debug dan rilis pada perangkat yang sama, karena dua APK tidak bisa memiliki ID aplikasi yang sama.

Ingatlah bahwa APK dengan ID aplikasi berbeda diperlakukan sebagai aplikasi berbeda di Google Play Store. Jadi jika Anda ingin menggunakan cantuman aplikasi yang sama untuk mendistribusikan beberapa APK yang masing-masing menargetkan konfigurasi perangkat berbeda (seperti level API), maka Anda harus menggunakan ID aplikasi yang sama untuk masing-masing varian versi namun memberikan versionCode yang berbeda untuk setiap APK. Untuk informasi selengkapnya, bacalah tentang Dukungan Multi-APK.

Perhatian: Untuk kompatibilitas dengan alat SDK sebelumnya, jika Anda tidak mendefinisikan properti applicationId dalam file build.gradle, alat pembangunan menggunakan nama paket dari file AndroidManifest.xml sebagai ID aplikasi. Bila ini terjadi, pemfaktoran ulang nama paket juga akan mengubah ID aplikasi Anda.

Tip: Jika Anda perlu mereferensikan ID aplikasi dalam file manifes, Anda bisa menggunakan Placeholder ${applicationId} dalam atribut manifes apa pun. Selama pembangunan, Gradle mengganti tag ini dengan ID Aplikasi yang sebenarnya. Untuk informasi selengkapnya, lihat Menyuntikkan Variabel Versi ke dalam Manifes.

Mengubah ID aplikasi untuk pengujian

Secara default, alat pembangunan menerapkan ID aplikasi ke APK pengujian instrumentasi menggunakan ID aplikasi untuk varian versi yang diberikan, yang dibubuhi dengan .test. Misalnya, APK pengujian untuk varian versi com.example.myapp.free memiliki ID aplikasi com.example.myapp.free.test.

Meskipun tidak diperlukan, Anda bisa mengubah ID aplikasi dengan mendefinisikan properti testApplicationId dalam blok defaultConfig atau productFlavor.

Catatan: Untuk menghindari bentrokan nama dengan aplikasi yang sedang diuji, alat pembangunan menghasilkan kelas R untuk APK pengujian Anda dengan namespace berdasarkan ID aplikasi pengujian, bukannya nama paket yang didefinisikan dalam file manifes.

Mengubah nama paket

Meskipun nama paket proyek Anda secara default cocok dengan ID aplikasi, Anda bisa mengubahnya. Akan tetapi, jika Anda ingin mengubah nama paket, ketahuilah bahwa nama paket (seperti yang didefinisikan oleh struktur direktori proyek) harus selalu cocok dengan atribut package dalam file AndroidManifest.xml, seperti yang ditunjukkan 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 pembangunan Android menggunakan atribut package untuk dua hal:

Dengan demikian, nama dalam atribut package selalu cocok dengan nama paket dasar proyek, tempat Anda menyimpan aktivitas dan kode aplikasi lainnya. Tentu saja, Anda bisa memiliki sub-paket dalam proyek, namun file itu harus mengimpor kelas R.java menggunakan namespace dari atribut package, dan setiap komponen aplikasi yang dideklarasikan dalam manifes harus menambahkan nama sub-paket yang hilang (atau menggunakan nama paket yang memenuhi syarat).

Jika Anda ingin memfaktorkan ulang nama paket Anda seluruhnya, pastikan juga memperbarui atribut package. Selama Anda menggunakan alat Android Studio untuk mengganti nama dan memfaktorkan ulang paket, maka proyek ini secara otomatis akan tetap sinkron. (Jika mereka tidak sinkron, kode aplikasi tidak bisa menyelesaikan kelas 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 proyek. Jika Anda memiliki file manifes tambahan (seperti untuk ragam produk atau tipe versi), perhatikan bahwa nama paket yang diberikan oleh file manifes berprioritas tertinggi akan selalu digunakan dalam manifes gabungan akhir. Untuk informasi selengkapnya, lihat Menggabungkan Beberapa File Manifes.

Satu hal lagi yang harus diketahui: Meskipun Anda mungkin memiliki nama yang berbeda untuk manifes package dan Gradle applicationId, alat pembangunan menyalin ID aplikasi ke dalam file manifes final APK di akhir proses pembangunan. Jadi jika Anda memeriksa file AndroidManifest.xml setelah pembangunan versi, jangan terkejut bila atribut package telah berubah. Atribut package adalah tempat sesungguhnya platform Android dan Google Play Store mengidentifikasi aplikasi Anda; jadi setelah versi menggunakan nilai asli (untuk namespace kelas R dan menyelesaikan nama kelas manifes), versi akan membuang nilai tersebut dan menggantinya dengan ID aplikasi.

This site uses cookies to store your preferences for site-specific language and display options.

Get the latest Android developer news and tips that will help you find success on Google Play.

* Required Fields

Hooray!

Follow Google Developers on WeChat

Browse this site in ?

You requested a page in , but your language preference for this site is .

Would you like to change your language preference and browse this site in ? If you want to change your language preference later, use the language menu at the bottom of each page.

This class requires API level or higher

This doc is hidden because your selected API level for the documentation is . You can change the documentation API level with the selector above the left navigation.

For more information about specifying the API level your app requires, read Supporting Different Platform Versions.

Take a short survey?
Help us improve the Android developer experience.
(Sep 2017 survey)