Package Name — ce este, notația inversă de domeniu și cerințe

Autor: IT Sectr Publicat: 2026-04-17 Timp de citire: 8 min

Package Name — este un identificator unic al aplicației Android, bazat pe scrierea inversă a numelui de domeniu (reverse domain notation). Este folosit de sistem pentru a diferenția aplicațiile pe dispozitivul utilizatorului, în Google Play pentru identificarea produsului și în serviciile Firebase pentru legarea tuturor configurațiilor proiectului. Conform Android Developer Documentation, Package Name rămâne neschimbat pe tot ciclul de viață al aplicației după publicare.

Principalele puncte

  • Package Name — identificator global al aplicației Android în format reverse domain
  • Formatul folosește domeniul companiei în ordine inversă: com.example.app
  • Unicitatea este verificată de Google Play la publicare — duplicatele sunt interzise
  • Modificarea Package Name după publicare este imposibilă fără crearea unei noi aplicații
  • Application ID în build.gradle corespunde Package Name și se configurează separat

Ce este Package Name în Android

Package Name — este un șir unic pe care Android îl folosește pentru identificarea aplicației la nivelul sistemului de operare. Acesta corespunde câmpului package din fișierul AndroidManifest.xml și câmpului applicationId din fișierul build.gradle al modulului aplicației. Fără un Package Name unic, instalarea aplicației pe dispozitivul utilizatorului este imposibilă.

Rolul Package Name

Pe dispozitiv, Package Name servește ca cheie pentru gestionarea aplicațiilor: sistemul stochează datele, setările și memoria cache a fiecărei aplicații în directorul /data/data/[packageName]. Două aplicații cu același identificator nu pot coexista — la încercarea de a instala un duplicat, sistemul propune eliminarea aplicației existente.

Package Name și Application ID

În Android Gradle Plugin versiunea 0.11+ a apărut separarea între Package Name (în manifest) și Application ID (în build.gradle). Application ID este identificatorul real al aplicației pentru sistem și Google Play. Package Name în manifest este folosit pentru rezolvarea resurselor și generarea clasei R. Se recomandă să le păstrați identice pentru simplitate.

groovy
// build.gradle (Modul: app)
android {
    defaultConfig {
        applicationId "com.example.myapplication"
        minSdkVersion 24
        targetSdkVersion 34
        versionCode 1
        versionName "1.0"
    }

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

Câmpul applicationIdSuffix permite adăugarea unui sufix la Application ID pentru diferite configurații de compilare. Versiunea debug poate avea identificatorul com.example.app.debug, permițând instalarea ei lângă versiunea de producție pentru testare paralelă.

Reguli de denumire a Package Name

Google Play stabilește reguli stricte pentru Package Name care trebuie respectate la publicare. Identificatorul trebuie să fie unic la scara întregului magazin, să respecte cerințele sintactice și să nu încalce politica de utilizare a mărcilor comerciale.

Cerințe sintactice

Package Name poate conține doar litere latine (A-Z, a-z), cifre (0-9), punct (.) și caracterul de subliniere (_). Lungimea maximă — 150 de caractere. Fiecare segment dintre puncte trebuie să înceapă cu o literă. Liniuțele, spațiile și caracterele speciale sunt interzise de regulile Google Play.

CerințăValoareExemplu
Caractere permiseLitere latine, cifre, punct, sublinierecom.example.my_app
Lungimea maximă150 de caracterecom.example.verylongappname
Începutul segmentuluiDoar literăcom — nu 3com
InterzisLiniuțe, spații, chirilicăcom.domeniul-meu — eroare
UnicitateaGlobală în Google PlayVerificare la creare

Cerințe de unicitate

Unicitatea Package Name — este o cerință absolută a Google Play Store. Dacă o altă aplicație folosește deja identificatorul ales, publicarea va fi respinsă. Google nu eliberează identificatorii aplicațiilor șterse, de aceea alegerea primului Package Name este o decizie critică pentru fiecare proiect de dezvoltare.

Notația inversă de domeniu și convenții

Notația inversă de domeniu — este un standard de denumire în care numele de domeniu al companiei se scrie în ordine inversă: com.example în loc de example.com. Un astfel de sistem garantează unicitatea globală a identificatorilor, deoarece fiecare nume de domeniu este unic prin definiție.

Prefixe standard

Dezvoltatorii folosesc de obicei prefixul corespunzător TLD-ului domeniului lor: com pentru organizații comerciale, org pentru non-profit, io pentru proiecte tehnologice, net pentru servicii de rețea și soluții. Pentru proiecte personale este permisă utilizarea com.github.username sau com.email.

  • com.company.app — format standard pentru aplicații comerciale
  • org.company.app — pentru proiecte non-profit și open-source
  • io.company.app — popular printre startup-uri și produse SaaS
  • com.github.username — pentru proiecte personale pe GitHub

Convenții pentru proiecte multi-platformă

Pentru aplicațiile lansate pe iOS și Android, se recomandă utilizarea aceluiași identificator pe ambele platforme. Aceasta simplifică integrarea cu Firebase, AppsFlyer, Adjust și alte sisteme analitice care se leagă de identificatorul proiectului. De exemplu, com.mycompany.myapp va fi Bundle ID pe iOS și Package Name pe Android.

Configurarea Package Name în proiectul Android

Configurarea Package Name în proiectul Android include modificarea applicationId în build.gradle și a structurii corespunzătoare de directoare a codului Java/Kotlin. Android Studio oferă instrumente pentru refactorizarea Package Name, dar pentru proiecte complexe se recomandă migrarea pas cu pas.

Structura directoarelor și Package Name

kotlin
// Calea fișierului corespunde 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)
    }
}

În Kotlin și Java, Package Name în fișierele sursă trebuie să corespundă structurii de directoare. La modificarea Package Name în build.gradle, trebuie să mutați fișierele în directoarele corespunzătoare și să actualizați toate declarațiile package și import. Android Studio poate face acest lucru automat prin Refactor -> Move, dar pentru proiecte mari cu zeci de fișiere, se recomandă verificarea rezultatului după refactorizare.

Dacă proiectul folosește Data Binding, View Binding sau Hilt, modificarea Package Name va afecta și clasele generate. Clasele Binding sunt create pe baza Package Name al modulului și a directorului layout. După schimbarea identificatorului, va fi necesară reconstruirea proiectului pentru a actualiza toate referințele generate. Se recomandă efectuarea unui clean build după modificarea Package Name pentru a elimina erorile cauzate de referințele vechi stocate în cache.

În Gradle 7.0+ a apărut suportul pentru namespace în build.gradle, care a înlocuit package din AndroidManifest.xml în scopul generării clasei R și a resurselor. În același timp, applicationId rămâne identificatorul real al aplicației pentru sistem și Google Play. Aceasta permite să aveți applicationId și namespace diferite, ceea ce este util pentru modulele bibliotecă, unde namespace este fix, iar identificatorul public se poate schimba la compilare.

Pentru proiecte cu arhitectură modulară, modificarea Package Name a unui modul poate afecta importurile din alte module. Dacă modulul data are pachetul com.example.data, iar modulul domain folosește clasele sale, după schimbarea identificatorului actualizați importurile în toate modulele dependente. Pluginul Gradle Android versiunea 8.0+ simplifică acest proces prin generarea automată a namespace-ului din build.gradle.

Verificarea Package Name prin cod

Application ID curent poate fi obținut prin clasa BuildConfig: BuildConfig.APPLICATION_ID. Acest lucru este convenabil pentru logica condiționată în cod, legarea de mediu sau afișarea identificatorului în ecranele de debug. BuildConfig este generat automat pe baza build.gradle.

kotlin
// Obținerea Application ID în timpul executării
val packageName = BuildConfig.APPLICATION_ID
val packageManager = packageManager
val appInfo = packageManager.getPackageInfo(packageName, 0)

println("Versiunea aplicației: ${appInfo.versionName} (${appInfo.versionCode})")
println("Pachet: $packageName")

Modificarea Package Name după publicare

Modificarea Package Name după publicarea aplicației în Google Play — este o operație care înseamnă crearea unui produs complet nou. Sistemul nu permite actualizarea aplicației existente cu un alt Package Name, de aceea decizia de schimbare a identificatorului este echivalentă cu repornirea proiectului în magazin.

Consecințele schimbării Package Name

La schimbarea Package Name se pierd: toate ratingurile și recenziile, statisticile de instalare, integrarea cu Google Services (dacă nu a fost transferată), referințele la proiectul Firebase (necesită crearea unui nou google-services.json). Utilizatorii nu vor primi actualizare automată — vor vedea o nouă aplicație în magazin.

  • Ratinguri și recenzii — rămân la vechea aplicație, nu se transferă
  • Statistici de instalare — se resetează pentru noul Package Name
  • Proiecte Firebase — necesită o nouă configurare google-services.json și reconfigurarea tuturor serviciilor
  • Utilizatori — nu primesc actualizare automată, trebuie anunțați separat

Când schimbarea Package Name este justificată

Schimbarea Package Name poate fi justificată la rebrandingul companiei, transferul aplicației pe un alt cont de dezvoltator sau la crearea unei versiuni separate pentru o altă regiune. În orice caz, înainte de schimbare se recomandă anunțarea utilizatorilor prin vechea aplicație și pregătirea unui plan de migrare cu transferul datelor. Fără un plan de migrare, utilizatorii vor pierde accesul la conținutul achiziționat, abonamente și datele salvate ale aplicației. Migrarea include transferul bazei de date și al fișierelor prin SharedPreferences sau Room.

Înainte de schimbarea Package Name, asigurați-vă că noul identificator este unic și respectă regulile de denumire. Creați o nouă aplicație în Google Play cu noul Package Name și publicați-o ca produs separat. În descrierea vechii aplicații, adăugați un link către cea nouă. Luați în considerare utilizarea Google Play Custom Store Listing pentru redirecționarea utilizatorilor.

Întrebări frecvente

Se poate folosi liniuță sau subliniere în Package Name?

În Package Name este permis caracterul de subliniere (_), dar nu și liniuța (-). Sublinierea este folosită rar, dar este acceptabilă: com.example.my_app. Liniuța este interzisă de regulile Google Play și va cauza o eroare la publicare. Se recomandă utilizarea doar a punctului ca separator de segmente.

Cu ce diferă Package Name de Application ID în build.gradle?

Package Name — este identificatorul din AndroidManifest.xml, folosit pentru rezolvarea resurselor și generarea clasei R. Application ID — câmpul din build.gradle care determină identificatorul aplicației pentru sistem și Google Play Store. Se recomandă să le păstrați identice, dar diferența este acceptabilă la utilizarea applicationIdSuffix.

Cum să aleg corect Package Name pentru un proiect nou?

Folosiți notația inversă de domeniu a companiei sau pseudonimului dumneavoastră: com.domeniu.numeaplicație. Asigurați-vă că identificatorul este unic în Google Play. Evitați cuvintele generice (todo, test, app) și verificați dacă identificatorul nu este ocupat de alt dezvoltator prin căutare în Google Play.

Pot schimba Package Name înainte de publicarea în Google Play?

Da, înainte de publicarea în Google Play, Package Name poate fi schimbat fără consecințe. După schimbare, va fi necesară regenerarea google-services.json, actualizarea structurii de directoare și verificarea tuturor importurilor. Android Studio oferă instrumentele Refactor -> Move pentru automatizarea procesului.

Cum este legat Package Name de semnătura aplicației?

Package Name împreună cu certificatul de semnătură formează o legătură unică care identifică aplicația în Google Play. Chiar dacă două aplicații au Package Name diferit, ele pot fi semnate cu aceeași cheie. Schimbarea certificatului de semnătură este posibilă prin Key Rotation în Play Console fără pierderea identificatorului.

Concluzii

  • Package Name — identificator unic al aplicației Android în format de notație inversă de domeniu
  • Reguli de denumire — litere latine, cifre, punct, subliniere; maximum 150 de caractere
  • Domeniul invers garantează unicitatea globală: com.company.appname
  • Application ID în build.gradle corespunde Package Name și poate avea sufixe de compilare
  • Modificarea după publicare este imposibilă — noua aplicație pierde ratingurile și recenziile
  • Android Studio oferă instrumente de refactorizare pentru schimbarea sigură înainte de publicare
  • Recomandare — alegeți un identificator semnificativ înainte de publicare, evitați numele generice și ocupate

Vom dezvolta o aplicație mobilă la cheie

IT Sectr creează aplicații iOS și Android pentru startup-uri și afaceri din 2017. Vă vom consilia și vă vom propune cea mai bună soluție.

Discutați proiectul

Citiți și