Package Name — az Android-alkalmazás egyedi azonosítója, amely a domain név fordított írásmódján (reverse domain notation) alapul. A rendszer az alkalmazások megkülönböztetésére használja a felhasználó eszközén, a Google Play-ben a termék azonosítására, valamint a Firebase szolgáltatásokban a projekt összes konfigurációjának összekapcsolására. A Android Developer Documentation szerint a Package Name a közzététel után az alkalmazás teljes életciklusa során változatlan marad.
Főbb pontok
Package Name — egy egyedi karaktersorozat, amelyet az Android az alkalmazás azonosítására használ az operációs rendszer szintjén. Megfelel az AndroidManifest.xml fájl package mezőjének és az alkalmazásmodul build.gradle fájljának applicationId mezőjének. Egyedi Package Name nélkül az alkalmazás telepítése a felhasználó eszközére lehetetlen.
Az eszközön a Package Name kulcsként szolgál az alkalmazások kezeléséhez: a rendszer az egyes alkalmazások adatait, beállításait és gyorsítótárát a /data/data/[packageName] könyvtárban tárolja. Két azonos azonosítóval rendelkező alkalmazás nem létezhet együtt — duplikátum telepítésének kísérletekor a rendszer a meglévő eltávolítását javasolja.
Az Android Gradle Plugin 0.11+ verziójában megjelent a szétválasztás a Package Name (a manifestben) és az Application ID (a build.gradle-ben) között. Az Application ID az alkalmazás tényleges azonosítója a rendszer és a Google Play számára. A Package Name a manifestben az erőforrások feloldására és az R osztály generálására szolgál. Ajánlott ezeket az egyszerűség kedvéért azonosnak tartani.
// build.gradle (Modul: app)
android {
defaultConfig {
applicationId "com.example.myapplication"
minSdkVersion 24
targetSdkVersion 34
versionCode 1
versionName "1.0"
}
buildTypes {
debug {
applicationIdSuffix ".debug"
}
}
}
Az applicationIdSuffix mező lehetővé teszi utótag hozzáadását az Application ID-hez különböző fordítási konfigurációkhoz. A debug verzió rendelkezhet com.example.app.debug azonosítóval, ami lehetővé teszi a telepítést a production verzió mellé párhuzamos teszteléshez.
Google Play szigorú szabályokat határoz meg a Package Name-re, amelyeket közzétételkor be kell tartani. Az azonosítónak egyedinek kell lennie a teljes áruház méretében, meg kell felelnie a szintaktikai követelményeknek, és nem sértheti a védjegyhasználati irányelveket.
Package Name csak latin betűket (A-Z, a-z), számokat (0-9), pontot (.) és aláhúzásjelet (_) tartalmazhat. Maximális hossz — 150 karakter. A pontok közötti szegmenseknek betűvel kell kezdődniük. Kötőjelek, szóközök és speciális karakterek a Google Play szabályai által tiltottak.
| Követelmény | Érték | Példa |
|---|---|---|
| Engedélyezett karakterek | Latin betűk, számok, pont, aláhúzás | com.example.my_app |
| Maximális hossz | 150 karakter | com.example.verylongappname |
| Szegmens kezdete | Csak betű | com — nem 3com |
| Tiltott | Kötőjelek, szóközök, cirill | com.saját-domain — hiba |
| Egyediség | Globális a Google Play-ben | Ellenőrzés létrehozáskor |
A Package Name egyedisége — a Google Play Store abszolút követelménye. Ha egy másik alkalmazás már használja a kiválasztott azonosítót, a közzétételt elutasítják. A Google nem szabadítja fel a törölt alkalmazások azonosítóit, ezért az első Package Name kiválasztása kritikus döntés minden fejlesztői projekt számára.
Fordított domain jelölés — egy elnevezési szabvány, amelyben a vállalat domain neve fordított sorrendben kerül leírásra: com.example az example.com helyett. Egy ilyen rendszer garantálja az azonosítók globális egyediségét, mivel minden domain név definíció szerint egyedi.
A fejlesztők általában a domainjük TLD-jének megfelelő előtagot használnak: com kereskedelmi szervezetekhez, org non-profit szervezetekhez, io technológiai projektekhez, net hálózati szolgáltatásokhoz és megoldásokhoz. Személyes projektekhez a com.github.username vagy com.email használata megengedett.
Az iOS és Android platformon kiadott alkalmazásokhoz ajánlott ugyanazt az azonosítót használni mindkét platformon. Ez egyszerűsíti az integrációt a Firebase, AppsFlyer, Adjust és más elemző rendszerekkel, amelyek a projekt azonosítójához kötődnek. Például a com.mycompany.myapp Bundle ID lesz iOS-en és Package Name Androidon.
Package Name konfigurálása egy Android projektben magában foglalja az applicationId módosítását a build.gradle-ben és a Java/Kotlin kód megfelelő könyvtárstruktúrájának frissítését. Az Android Studio eszközöket biztosít a Package Name refaktorálásához, de összetett projekteknél lépésről lépésre történő migráció ajánlott.
// A fájl útvonala megfelel a Package Name-nek
// 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)
}
}
Kotlinban és Javában a forrásfájlok Package Name-jének meg kell felelnie a könyvtárstruktúrának. A Package Name build.gradle-ben történő módosításakor a fájlokat a megfelelő könyvtárakba kell helyezni, és frissíteni kell az összes package és import deklarációt. Az Android Studio ezt automatikusan elvégezheti a Refactor -> Move segítségével, de nagy projekteknél, amelyek több tucat fájlt tartalmaznak, ajánlott ellenőrizni az eredményt a refaktorálás után.
Ha a projekt Data Binding, View Binding vagy Hilt használ, a Package Name módosítása a generált osztályokat is érinti. A Binding osztályok a modul Package Name-je és a layout könyvtár alapján jönnek létre. Az azonosító megváltoztatása után a projektet újra kell építeni az összes generált hivatkozás frissítéséhez. Ajánlott clean build végrehajtása a Package Name módosítása után a gyorsítótárazott régi hivatkozásokból eredő hibák elkerülése érdekében.
A Gradle 7.0+-ban megjelent a namespace támogatása a build.gradle-ben, ami felváltotta a package-et az AndroidManifest.xml-ben az R osztály és erőforrások generálásának céljaira. Az applicationId ugyanakkor az alkalmazás tényleges azonosítója marad a rendszer és a Google Play számára. Ez lehetővé teszi különböző applicationId és namespace használatát, ami hasznos a könyvtári moduloknál, ahol a namespace rögzített, a nyilvános azonosító pedig fordítás közben változhat.
Moduláris architektúrájú projekteknél az egyik modul Package Name-jének módosítása hatással lehet más modulok importjaira. Ha az adatmodul a com.example.data csomaggal rendelkezik, és a domain modul annak osztályait használja, az azonosító módosítása után frissítse az importokat az összes függő modulban. Az Android Gradle plugin 8.0+ verziója leegyszerűsíti ezt a folyamatot a namespace automatikus generálásával a build.gradle-ből.
Az aktuális Application ID a BuildConfig osztályon keresztül érhető el: BuildConfig.APPLICATION_ID. Ez kényelmes a feltételes logikához a kódban, a környezethez való kötődéshez, vagy az azonosító megjelenítéséhez debug képernyőkön. A BuildConfig automatikusan generálódik a build.gradle alapján.
// Application ID lekérése futási időben
val packageName = BuildConfig.APPLICATION_ID
val packageManager = packageManager
val appInfo = packageManager.getPackageInfo(packageName, 0)
println("Alkalmazás verziója: ${appInfo.versionName} (${appInfo.versionCode})")
println("Csomag: $packageName")
Package Name módosítása az alkalmazás Google Play-ben történő közzététele után — olyan művelet, amely egy teljesen új termék létrehozását jelenti. A rendszer nem teszi lehetővé a meglévő alkalmazás frissítését másik Package Name-nel, ezért az azonosító megváltoztatásának döntése a projekt újraindításával egyenértékű az áruházban.
A Package Name módosításakor elvesznek: az összes értékelés és vélemény, a telepítési statisztikák, a Google Services integráció (ha nem került átvitelre), a Firebase projektre mutató hivatkozások (új google-services.json létrehozása szükséges). A felhasználók nem kapnak automatikus frissítést — új alkalmazást fognak látni az áruházban.
Package Name módosítása indokolt lehet a vállalat átmárkázásakor, az alkalmazás másik fejlesztői fiókba történő áthelyezésekor, vagy másik régióhoz külön verzió létrehozásakor. Minden esetben a módosítás előtt ajánlott értesíteni a felhasználókat a régi alkalmazáson keresztül, és migrációs tervet készíteni az adatok átvitelével. Migrációs terv nélkül a felhasználók elveszítik a hozzáférést a vásárolt tartalmakhoz, előfizetésekhez és a mentett alkalmazásadatokhoz. A migráció magában foglalja az adatbázis és fájlok átvitelét SharedPreferences vagy Room segítségével.
A Package Name módosítása előtt győződjön meg arról, hogy az új azonosító egyedi és megfelel az elnevezési szabályoknak. Hozzon létre egy új alkalmazást a Google Play-ben az új Package Name-nel, és tegye közzé külön termékként. A régi alkalmazás leírásában adjon hozzá linket az újhoz. Fontolja meg a Google Play Custom Store Listing használatát a felhasználók átirányításához.
Gyakran Ismételt Kérdések
A Package Name-ben az aláhúzásjel (_) engedélyezett, de a kötőjel (-) nem. Az aláhúzást ritkán használják, de elfogadható: com.example.my_app. A kötőjel a Google Play szabályai által tiltott, és hibát okoz a közzétételkor. Ajánlott csak pontot használni a szegmensek elválasztójaként.
Package Name — az azonosító az AndroidManifest.xml-ben, amely az erőforrások feloldására és az R osztály generálására szolgál. Application ID — a build.gradle mezője, amely meghatározza az alkalmazás azonosítóját a rendszer és a Google Play Store számára. Ajánlott ezeket azonosnak tartani, de az eltérés megengedett az applicationIdSuffix használatakor.
Használja vállalata vagy beceneve fordított domain jelölését: com.domain.alkalmazasnev. Győződjön meg arról, hogy az azonosító egyedi a Google Play-ben. Kerülje az általános szavakat (todo, test, app), és ellenőrizze, hogy az azonosítót nem foglalta-e le más fejlesztő a Google Play-ben való kereséssel.
Igen, a Google Play-ben való közzététel előtt a Package Name következmények nélkül megváltoztatható. A változtatás után újra kell generálni a google-services.json-t, frissíteni kell a könyvtárstruktúrát, és ellenőrizni kell az összes importot. Az Android Studio Refactor -> Move eszközöket biztosít a folyamat automatizálásához.
A Package Name az aláírási tanúsítvánnyal együtt egy egyedi kapcsolatot képez, amely azonosítja az alkalmazást a Google Play-ben. Még ha két alkalmazásnak eltérő Package Name-je is van, ugyanazzal a kulccsal aláírhatók. Az aláírási tanúsítvány módosítása a Key Rotation segítségével lehetséges a Play Console-ban az azonosító elvesztése nélkül.
Összefoglalás
Kulcsrakész mobilalkalmazást fejlesztünk
Az IT Sectr 2017 óta készít iOS és Android alkalmazásokat induló vállalkozásoknak és vállalkozásoknak. Tanácsot adunk, és a legjobb megoldást javasoljuk.
Olvassa el is