Package Name — ay isang natatanging identifier ng Android application, batay sa reverse na pagsulat ng domain name (reverse domain notation). Ito ay ginagamit ng system upang pag-iba-ibahin ang mga application sa device ng user, sa Google Play para sa pagkilala ng produkto, at sa mga serbisyo ng Firebase para sa pagbigkis ng lahat ng configuration ng proyekto. Ayon sa Android Developer Documentation, ang Package Name ay nananatiling hindi nagbabago sa buong siklo ng buhay ng application pagkatapos ng pag-publish.
Mga Pangunahing Punto
Package Name — ay isang natatanging string na ginagamit ng Android upang kilalanin ang application sa antas ng operating system. Ito ay tumutugma sa field na package sa AndroidManifest.xml file at sa field na applicationId sa build.gradle file ng module ng application. Kung walang natatanging Package Name, ang pag-install ng application sa device ng user ay imposible.
Sa device, ang Package Name ay nagsisilbing susi para sa pamamahala ng mga application: ang system ay nag-iimbak ng data, setting, at cache ng bawat application sa direktoryo na /data/data/[packageName]. Dalawang application na may parehong identifier ay hindi maaaring magkasabay — sa pagtatangkang mag-install ng duplicate, iminumungkahi ng system na tanggalin ang umiiral na.
Sa Android Gradle Plugin bersyon 0.11+, lumitaw ang paghihiwalay sa pagitan ng Package Name (sa manifest) at Application ID (sa build.gradle). Ang Application ID ay ang aktwal na identifier ng application para sa system at Google Play. Ang Package Name sa manifest ay ginagamit para sa paglutas ng mga resource at pagbuo ng R class. Inirerekomenda na panatilihin silang pareho para sa pagiging simple.
// build.gradle (Module: app)
android {
defaultConfig {
applicationId "com.example.myapplication"
minSdkVersion 24
targetSdkVersion 34
versionCode 1
versionName "1.0"
}
buildTypes {
debug {
applicationIdSuffix ".debug"
}
}
}
Ang field na applicationIdSuffix ay nagbibigay-daan sa pagdagdag ng suffix sa Application ID para sa iba't ibang configuration ng compilation. Ang debug version ay maaaring magkaroon ng identifier na com.example.app.debug, na nagpapahintulot sa pag-install nito sa tabi ng production version para sa parallel testing.
Google Play ay nagtatakda ng mahigpit na mga patakaran para sa Package Name na dapat sundin sa pag-publish. Ang identifier ay dapat na natatangi sa buong tindahan, tumugon sa mga kinakailangan sa syntax, at hindi lumabag sa patakaran sa paggamit ng trademark.
Package Name ay maaari lamang maglaman ng mga letrang Latin (A-Z, a-z), numero (0-9), tuldok (.), at underscore (_). Ang maximum na haba — 150 character. Bawat segment sa pagitan ng mga tuldok ay dapat magsimula sa isang letra. Ang mga gitling, puwang, at espesyal na character ay ipinagbabawal ng mga patakaran ng Google Play.
| Kailangan | Halaga | Halimbawa |
|---|---|---|
| Pinapayagang character | Mga letrang Latin, numero, tuldok, underscore | com.example.my_app |
| Maximum na haba | 150 character | com.example.verylongappname |
| Simula ng segment | Letra lamang | com — hindi 3com |
| Ipinagbabawal | Mga gitling, puwang, Cyrillic | com.aking-domain — error |
| Pagiging natatangi | Pandaigdigan sa Google Play | Sinusuri sa paggawa |
Pagiging natatangi ng Package Name — ay isang ganap na kinakailangan ng Google Play Store. Kung ang ibang application ay gumagamit na ng napiling identifier, ang pag-publish ay tatanggihan. Hindi pinapalaya ng Google ang mga identifier ng mga tinanggal na application, kaya ang pagpili ng unang Package Name ay isang kritikal na desisyon para sa bawat proyekto ng developer.
Reverse domain notation — ay isang pamantayan sa pagpapangalan kung saan ang domain name ng kumpanya ay isinusulat sa reverse order: com.example sa halip na example.com. Ang ganitong sistema ay ginagarantiyahan ang pandaigdigang pagiging natatangi ng mga identifier, dahil ang bawat domain name ay sa kahulugan ay natatangi.
Ang mga developer ay karaniwang gumagamit ng prefix na tumutugma sa TLD ng kanilang domain: com para sa komersyal na organisasyon, org para sa non-profit, io para sa teknolohikal na proyekto, net para sa mga serbisyo at solusyon sa network. Para sa personal na proyekto, ang paggamit ng com.github.username o com.email ay pinapayagan.
Para sa mga application na inilalabas sa iOS at Android, inirerekomenda na gamitin ang parehong identifier sa parehong platform. Pinapasimple nito ang pagsasama sa Firebase, AppsFlyer, Adjust, at iba pang analytics system na nakatali sa identifier ng proyekto. Halimbawa, ang com.mycompany.myapp ay magiging Bundle ID sa iOS at Package Name sa Android.
Pag-configure ng Package Name sa Android project ay kinabibilangan ng pagbabago ng applicationId sa build.gradle at ng kaukulang istraktura ng direktoryo ng Java/Kotlin code. Ang Android Studio ay nagbibigay ng mga tool para sa refactoring ng Package Name, ngunit para sa kumplikadong proyekto, inirerekomenda ang unti-unting paglipat.
// Ang path ng file ay tumutugma sa 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)
}
}
Sa Kotlin at Java, ang Package Name sa source file ay dapat tumugma sa istraktura ng direktoryo. Kapag binabago ang Package Name sa build.gradle, ang mga file ay dapat ilipat sa mga kaukulang direktoryo at lahat ng deklarasyon ng package at import ay dapat i-update. Ang Android Studio ay maaaring gawin ito nang awtomatiko sa pamamagitan ng Refactor -> Move, ngunit para sa malalaking proyekto na may dose-dosenang file, inirerekomenda na suriin ang resulta pagkatapos ng refactoring.
Kung ang proyekto ay gumagamit ng Data Binding, View Binding o Hilt, ang pagbabago ng Package Name ay makakaapekto rin sa mga nabuong klase. Ang mga Binding class ay nilikha batay sa Package Name ng module at layout directory. Pagkatapos ng pagbabago ng identifier, kakailanganing muling itayo ang proyekto upang i-update ang lahat ng nabuong reference. Inirerekomenda na magsagawa ng clean build pagkatapos baguhin ang Package Name upang alisin ang mga error dahil sa naka-cache na lumang reference.
Sa Gradle 7.0+, lumitaw ang suporta para sa namespace sa build.gradle, na pumalit sa package sa AndroidManifest.xml para sa mga layunin ng pagbuo ng R class at resources. Gayunpaman, ang applicationId ay nananatiling aktwal na identifier ng application para sa system at Google Play. Ito ay nagpapahintulot na magkaroon ng magkaibang applicationId at namespace, na kapaki-pakinabang para sa library modules, kung saan ang namespace ay naayos at ang pampublikong identifier ay maaaring magbago sa compilation.
Para sa mga proyekto na may modular na arkitektura, ang pagbabago ng Package Name ng isang module ay maaaring makaapekto sa mga import sa ibang mga module. Kung ang data module ay may package na com.example.data at ang domain module ay gumagamit ng mga klase nito, pagkatapos ng pagbabago ng identifier, i-update ang mga import sa lahat ng umaasang module. Ang Gradle plugin para sa Android bersyon 8.0+ ay pinapasimple ang prosesong ito sa pamamagitan ng awtomatikong pagbuo ng namespace mula sa build.gradle.
Ang kasalukuyang Application ID ay maaaring makuha sa pamamagitan ng BuildConfig class: BuildConfig.APPLICATION_ID. Ito ay maginhawa para sa conditional logic sa code, pag-binding sa kapaligiran, o pagpapakita ng identifier sa debug screens. Ang BuildConfig ay awtomatikong nabuo batay sa build.gradle.
// Pagkuha ng Application ID sa runtime
val packageName = BuildConfig.APPLICATION_ID
val packageManager = packageManager
val appInfo = packageManager.getPackageInfo(packageName, 0)
println("Bersyon ng app: ${appInfo.versionName} (${appInfo.versionCode})")
println("Package: $packageName")
Pagbabago ng Package Name pagkatapos ng pag-publish ng application sa Google Play — ay isang operasyon na nangangahulugang paggawa ng isang ganap na bagong produkto. Hindi pinapayagan ng system na i-update ang umiiral na application na may ibang Package Name, kaya ang desisyon na baguhin ang identifier ay katumbas ng muling pagsisimula ng proyekto sa tindahan.
Sa pagbabago ng Package Name, nawawala: lahat ng rating at review, istatistika ng pag-install, pagsasama sa Google Services (kung hindi nailipat), mga reference sa Firebase project (nangangailangan ng paggawa ng bagong google-services.json). Ang mga user ay hindi makakatanggap ng awtomatikong update — makikita nila ang bagong application sa tindahan.
Pagbabago ng Package Name ay maaaring maging makatwiran sa rebranding ng kumpanya, paglipat ng application sa ibang developer account, o paggawa ng hiwalay na bersyon para sa ibang rehiyon. Sa anumang kaso, bago ang pagbabago, inirerekomenda na ipaalam sa mga user sa pamamagitan ng lumang application at maghanda ng plano sa paglipat na may paglilipat ng data. Kung walang plano sa paglipat, ang mga user ay mawawalan ng access sa biniling nilalaman, subscription, at naka-save na data ng application. Kasama sa paglipat ang paglilipat ng database at file sa pamamagitan ng SharedPreferences o Room.
Bago baguhin ang Package Name, siguraduhin na ang bagong identifier ay natatangi at sumusunod sa mga patakaran sa pagpapangalan. Gumawa ng bagong application sa Google Play na may bagong Package Name at i-publish ito bilang isang hiwalay na produkto. Sa paglalarawan ng lumang application, magdagdag ng link sa bago. Isaalang-alang ang paggamit ng Google Play Custom Store Listing para sa pag-redirect ng mga user.
Mga Madalas Itanong
Sa Package Name, ang underscore character (_) ay pinapayagan, ngunit ang gitling (-) ay hindi. Ang underscore ay bihirang ginagamit, ngunit katanggap-tanggap: com.example.my_app. Ang gitling ay ipinagbabawal ng mga patakaran ng Google Play at magdudulot ng error sa pag-publish. Inirerekomenda na gumamit lamang ng tuldok bilang separator ng mga segment.
Package Name — ay ang identifier sa AndroidManifest.xml, ginagamit para sa paglutas ng resources at pagbuo ng R class. Application ID — field sa build.gradle na tumutukoy sa identifier ng application para sa system at Google Play Store. Inirerekomenda na panatilihin silang pareho, ngunit ang pagkakaiba ay katanggap-tanggap kapag gumagamit ng applicationIdSuffix.
Gamitin ang reverse domain notation ng iyong kumpanya o username: com.domain.pangalanapp. Siguraduhin na ang identifier ay natatangi sa Google Play. Iwasan ang mga karaniwang salita (todo, test, app) at suriin kung ang identifier ay hindi ginagamit ng ibang developer sa pamamagitan ng paghahanap sa Google Play.
Oo, bago mag-publish sa Google Play, ang Package Name ay maaaring baguhin nang walang kahihinatnan. Pagkatapos ng pagbabago, kakailanganing muling buuin ang google-services.json, i-update ang istraktura ng direktoryo, at suriin ang lahat ng import. Ang Android Studio ay nagbibigay ng mga tool na Refactor -> Move para sa pag-automate ng proseso.
Package Name kasama ang sertipiko ng lagda ay bumubuo ng isang natatanging ugnayan na kumikilala sa application sa Google Play. Kahit na ang dalawang application ay may magkaibang Package Name, maaari silang lagdaan ng parehong susi. Ang pagbabago ng sertipiko ng lagda ay posible sa pamamagitan ng Key Rotation sa Play Console nang walang pagkawala ng identifier.
Buod
Gagawa kami ng mobile application na turnkey
Gumagawa ang IT Sectr ng mga iOS at Android application para sa mga startup at negosyo mula noong 2017. Magpapayo kami sa iyo at magmumungkahi ng pinakamahusay na solusyon.
Basahin din