Package Name — adalah pengidentifikasi unik aplikasi Android, yang didasarkan pada penulisan terbalik nama domain (reverse domain notation). Ini digunakan oleh sistem untuk membedakan aplikasi di perangkat pengguna, di Google Play untuk identifikasi produk, dan di layanan Firebase untuk mengikat semua konfigurasi proyek. Menurut Android Developer Documentation, Package Name tetap tidak berubah sepanjang siklus hidup aplikasi setelah publikasi.
Poin Utama
Package Name — adalah string unik yang digunakan Android untuk mengidentifikasi aplikasi di tingkat sistem operasi. Ini sesuai dengan bidang package di file AndroidManifest.xml dan bidang applicationId di file build.gradle modul aplikasi. Tanpa Package Name yang unik, instalasi aplikasi di perangkat pengguna tidak mungkin dilakukan.
Di perangkat, Package Name berfungsi sebagai kunci untuk mengelola aplikasi: sistem menyimpan data, pengaturan, dan cache setiap aplikasi di direktori /data/data/[packageName]. Dua aplikasi dengan pengidentifikasi yang sama tidak dapat hidup berdampingan — saat mencoba menginstal duplikat, sistem menyarankan untuk menghapus yang sudah ada.
Di Android Gradle Plugin versi 0.11+ muncul pemisahan antara Package Name (di manifes) dan Application ID (di build.gradle). Application ID adalah pengidentifikasi sebenarnya dari aplikasi untuk sistem dan Google Play. Package Name di manifes digunakan untuk resolusi sumber daya dan pembuatan kelas R. Disarankan untuk menjaganya tetap sama demi kesederhanaan.
// build.gradle (Modul: app)
android {
defaultConfig {
applicationId "com.example.myapplication"
minSdkVersion 24
targetSdkVersion 34
versionCode 1
versionName "1.0"
}
buildTypes {
debug {
applicationIdSuffix ".debug"
}
}
}
Bidang applicationIdSuffix memungkinkan penambahan sufiks ke Application ID untuk konfigurasi kompilasi yang berbeda. Versi debug dapat memiliki pengidentifikasi com.example.app.debug, yang memungkinkan instalasinya di samping versi produksi untuk pengujian paralel.
Google Play menetapkan aturan ketat untuk Package Name yang harus dipatuhi saat publikasi. Pengidentifikasi harus unik di skala seluruh toko, memenuhi persyaratan sintaksis, dan tidak melanggar kebijakan penggunaan merek dagang.
Package Name hanya boleh berisi huruf Latin (A-Z, a-z), angka (0-9), titik (.), dan karakter garis bawah (_). Panjang maksimum — 150 karakter. Setiap segmen di antara titik harus dimulai dengan huruf. Tanda hubung, spasi, dan karakter khusus dilarang oleh aturan Google Play.
| Persyaratan | Nilai | Contoh |
|---|---|---|
| Karakter yang diizinkan | Huruf Latin, angka, titik, garis bawah | com.example.my_app |
| Panjang maksimum | 150 karakter | com.example.verylongappname |
| Awal segmen | Hanya huruf | com — bukan 3com |
| Dilarang | Tanda hubung, spasi, sirilik | com.domain-saya — error |
| Keunikan | Global di Google Play | Diperiksa saat pembuatan |
Keunikan Package Name — adalah persyaratan mutlak Google Play Store. Jika aplikasi lain sudah menggunakan pengidentifikasi yang dipilih, publikasi akan ditolak. Google tidak membebaskan pengidentifikasi aplikasi yang dihapus, oleh karena itu pemilihan Package Name pertama adalah keputusan kritis untuk setiap proyek pengembang.
Notasi domain terbalik — adalah standar penamaan di mana nama domain perusahaan ditulis dalam urutan terbalik: com.example bukan example.com. Sistem semacam itu menjamin keunikan global pengidentifikasi, karena setiap nama domain pada dasarnya unik.
Pengembang biasanya menggunakan prefiks yang sesuai dengan TLD domain mereka: com untuk organisasi komersial, org untuk nirlaba, io untuk proyek teknologi, net untuk layanan jaringan dan solusi. Untuk proyek pribadi, penggunaan com.github.username atau com.email diperbolehkan.
Untuk aplikasi yang dirilis di iOS dan Android, disarankan menggunakan pengidentifikasi yang sama di kedua platform. Ini menyederhanakan integrasi dengan Firebase, AppsFlyer, Adjust, dan sistem analitik lain yang terikat pada pengidentifikasi proyek. Misalnya, com.mycompany.myapp akan menjadi Bundle ID di iOS dan Package Name di Android.
Konfigurasi Package Name di proyek Android meliputi perubahan applicationId di build.gradle dan struktur direktori kode Java/Kotlin yang sesuai. Android Studio menyediakan alat untuk refactoring Package Name, tetapi untuk proyek kompleks disarankan migrasi bertahap.
// Jalur file sesuai dengan Package Name
// com/example/myapp/MainActivity.kt
package com.example.myapp
import android.os.Bundle
import androidx.activity.ComponentActivity
class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
}
}
Di Kotlin dan Java, Package Name di file sumber harus sesuai dengan struktur direktori. Saat mengubah Package Name di build.gradle, file harus dipindahkan ke direktori yang sesuai dan semua deklarasi package dan import harus diperbarui. Android Studio dapat melakukannya secara otomatis melalui Refactor -> Move, tetapi untuk proyek besar dengan puluhan file, disarankan untuk memeriksa hasil setelah refactoring.
Jika proyek menggunakan Data Binding, View Binding atau Hilt, perubahan Package Name juga akan memengaruhi kelas yang dihasilkan. Kelas Binding dibuat berdasarkan Package Name modul dan direktori layout. Setelah perubahan pengidentifikasi, proyek perlu dibangun ulang untuk memperbarui semua referensi yang dihasilkan. Disarankan untuk melakukan clean build setelah mengubah Package Name untuk menghilangkan kesalahan akibat referensi lama yang di-cache.
Di Gradle 7.0+ muncul dukungan untuk namespace di build.gradle, yang menggantikan package di AndroidManifest.xml untuk tujuan pembuatan kelas R dan sumber daya. Namun applicationId tetap menjadi pengidentifikasi sebenarnya dari aplikasi untuk sistem dan Google Play. Ini memungkinkan memiliki applicationId dan namespace yang berbeda, yang berguna untuk modul perpustakaan, di mana namespace tetap dan pengidentifikasi publik dapat berubah saat kompilasi.
Untuk proyek dengan arsitektur modular, perubahan Package Name satu modul dapat memengaruhi impor di modul lain. Jika modul data memiliki paket com.example.data dan modul domain menggunakan kelasnya, setelah perubahan pengidentifikasi perbarui impor di semua modul dependen. Plugin Gradle Android versi 8.0+ menyederhanakan proses ini dengan pembuatan namespace otomatis dari build.gradle.
Application ID saat ini dapat diperoleh melalui kelas BuildConfig: BuildConfig.APPLICATION_ID. Ini berguna untuk logika bersyarat dalam kode, pengikatan ke lingkungan, atau menampilkan pengidentifikasi di layar debug. BuildConfig dihasilkan secara otomatis berdasarkan build.gradle.
// Mendapatkan Application ID saat runtime
val packageName = BuildConfig.APPLICATION_ID
val packageManager = packageManager
val appInfo = packageManager.getPackageInfo(packageName, 0)
println("Versi aplikasi: ${appInfo.versionName} (${appInfo.versionCode})")
println("Paket: $packageName")
Mengubah Package Name setelah publikasi aplikasi di Google Play — adalah operasi yang berarti membuat produk yang sepenuhnya baru. Sistem tidak mengizinkan pembaruan aplikasi yang ada dengan Package Name yang berbeda, oleh karena itu keputusan untuk mengubah pengidentifikasi setara dengan memulai ulang proyek di toko.
Saat mengubah Package Name, hilang: semua peringkat dan ulasan, statistik instalasi, integrasi dengan Google Services (jika tidak dipindahkan), referensi ke proyek Firebase (memerlukan pembuatan google-services.json baru). Pengguna tidak akan menerima pembaruan otomatis — mereka akan melihat aplikasi baru di toko.
Mengubah Package Name dapat dibenarkan saat rebranding perusahaan, memindahkan aplikasi ke akun pengembang lain, atau saat membuat versi terpisah untuk wilayah lain. Dalam kasus apa pun, sebelum perubahan disarankan untuk memberi tahu pengguna melalui aplikasi lama dan menyiapkan rencana migrasi dengan transfer data. Tanpa rencana migrasi, pengguna akan kehilangan akses ke konten yang dibeli, langganan, dan data aplikasi yang disimpan. Migrasi mencakup transfer basis data dan file melalui SharedPreferences atau Room.
Sebelum mengubah Package Name, pastikan pengidentifikasi baru unik dan sesuai dengan aturan penamaan. Buat aplikasi baru di Google Play dengan Package Name baru dan publikasikan sebagai produk terpisah. Di deskripsi aplikasi lama, tambahkan tautan ke aplikasi baru. Pertimbangkan penggunaan Google Play Custom Store Listing untuk mengarahkan pengguna.
Pertanyaan yang Sering Diajukan
Di Package Name, karakter garis bawah (_) diizinkan, tetapi tanda hubung (-) tidak. Garis bawah jarang digunakan, tetapi dapat diterima: com.example.my_app. Tanda hubung dilarang oleh aturan Google Play dan akan menyebabkan kesalahan saat publikasi. Disarankan untuk hanya menggunakan titik sebagai pemisah segmen.
Package Name — adalah pengidentifikasi di AndroidManifest.xml, digunakan untuk resolusi sumber daya dan pembuatan kelas R. Application ID — bidang di build.gradle yang menentukan pengidentifikasi aplikasi untuk sistem dan Google Play Store. Disarankan untuk menjaganya tetap sama, tetapi perbedaan dapat diterima saat menggunakan applicationIdSuffix.
Gunakan notasi domain terbalik perusahaan atau nama pengguna Anda: com.domain.namaaplikasi. Pastikan pengidentifikasi unik di Google Play. Hindari kata-kata umum (todo, test, app) dan periksa apakah pengidentifikasi tidak digunakan oleh pengembang lain melalui pencarian di Google Play.
Ya, sebelum publikasi di Google Play, Package Name dapat diubah tanpa konsekuensi. Setelah perubahan, google-services.json perlu dibuat ulang, struktur direktori diperbarui, dan semua impor diperiksa. Android Studio menyediakan alat Refactor -> Move untuk mengotomatiskan proses.
Package Name bersama dengan sertifikat tanda tangan membentuk ikatan unik yang mengidentifikasi aplikasi di Google Play. Bahkan jika dua aplikasi memiliki Package Name yang berbeda, mereka dapat ditandatangani dengan kunci yang sama. Mengubah sertifikat tanda tangan dimungkinkan melalui Key Rotation di Play Console tanpa kehilangan pengidentifikasi.
Kesimpulan
Kami akan mengembangkan aplikasi seluler turnkey
IT Sectr membuat aplikasi iOS dan Android untuk startup dan bisnis sejak 2017. Kami akan memberi saran dan mengusulkan solusi terbaik.
Baca juga