Package Name — nedir, ters alan adı gösterimi ve gereksinimler

Yazar: IT Sectr Yayınlanma: 2026-04-17 Okuma süresi: 8 dk

Package Name, ters alan adı gösterimine (reverse domain notation) dayalı, Android uygulamaları için benzersiz bir tanımlayıcıdır. Sistem tarafından kullanıcının cihazındaki uygulamaları ayırt etmek, Google Play tarafından ürünü tanımlamak ve Firebase hizmetleri tarafından tüm proje yapılandırmalarını bağlamak için kullanılır. Android Geliştirici Belgeleri'ne göre, Package Name yayınlandıktan sonra uygulama yaşam döngüsü boyunca değişmeden kalır.

Önemli Noktalar

  • Package Name — ters alan adı formatında küresel Android uygulama tanımlayıcısı
  • Biçim şirket alan adını ters sırada kullanır: com.example.app
  • Benzersizlik yayınlama sırasında Google Play tarafından doğrulanır — kopyalar yasaktır
  • Değiştirme yayınlama sonrası Package Name, yeni bir uygulama oluşturmadan imkansızdır
  • Application ID build.gradle içinde Package Name'e karşılık gelir ve ayrıca yapılandırılır

Android'de Package Name Nedir

Package Name, Android'in bir uygulamayı işletim sistemi düzeyinde tanımlamak için kullandığı benzersiz bir dizedir. AndroidManifest.xml dosyasındaki package alanına ve uygulama modülünün build.gradle dosyasındaki applicationId alanına karşılık gelir. Benzersiz bir Package Name olmadan, kullanıcının cihazına bir uygulama yüklemek imkansızdır.

Package Name'in Amacı

Cihazda, Package Name uygulama yönetimi için bir anahtar görevi görür: sistem, her uygulamanın verilerini, ayarlarını ve önbelleğini /data/data/[packageName] dizininde saklar. Aynı tanımlayıcıya sahip iki uygulama bir arada bulunamaz — bir kopya yüklenmeye çalışıldığında, sistem mevcut olanı kaldırmayı ister.

Package Name ve Application ID

Android Gradle Plugin sürüm 0.11+'da, Package Name (manifest dosyasında) ve Application ID (build.gradle içinde) arasında bir ayrım getirilmiştir. Application ID, sistem ve Google Play için gerçek uygulama tanımlayıcısıdır. Manifestteki Package Name, kaynak çözümlemesi ve R sınıfı oluşturma için kullanılır. Basitlik için bunları aynı tutmanız önerilir.

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

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

applicationIdSuffix alanı, farklı derleme yapılandırmaları için Application ID'ye bir sonek eklemeye izin verir. Bir hata ayıklama sürümü, com.example.app.debug tanımlayıcısına sahip olabilir ve bu sayede paralel test için üretim sürümünün yanına kurulabilir.

Package Name Adlandırma Kuralları

Google Play, yayınlama sırasında uyulması gereken Package Name için katı kurallar belirler. Tanımlayıcı, tüm mağazada benzersiz olmalı, sözdizimi gereksinimlerini karşılamalı ve ticari marka politikalarını ihlal etmemelidir.

Sözdizimi Gereksinimleri

Package Name yalnızca Latin harfleri (A-Z, a-z), rakamlar (0-9), nokta (.) ve alt çizgi (_) içerebilir. Maksimum uzunluk 150 karakterdir. Noktalar arasındaki her bölüm bir harfle başlamalıdır. Kısa çizgiler, boşluklar ve özel karakterler Google Play kuralları tarafından yasaklanmıştır.

GereksinimDeğerÖrnek
İzin Verilen KarakterlerLatin harfleri, rakamlar, nokta, alt çizgicom.example.my_app
Maksimum Uzunluk150 karaktercom.example.verylongappname
Bölüm BaşlangıcıSadece harfcom — 3com değil
YasakKısa çizgiler, boşluklar, Kirilcom.example-app — hata
BenzersizlikGoogle Play'de küreselOluşturulurken kontrol edilir

Benzersizlik Gereksinimleri

Package Name'in benzersizliği, Google Play Store'un mutlak bir gereksinimidir. Başka bir uygulama seçilen tanımlayıcıyı zaten kullanıyorsa, yayınlama reddedilecektir. Google, silinen uygulamaların tanımlayıcılarını serbest bırakmaz, bu nedenle ilk Package Name'i seçmek her geliştirici için kritik bir karardır.

Ters Alan Adı Gösterimi ve Sözleşmeler

Ters alan adı gösterimi, şirket alan adının ters sırada yazıldığı bir adlandırma standardıdır: example.com yerine com.example. Bu sistem, her alan adının doğası gereği benzersiz olması nedeniyle tanımlayıcıların küresel benzersizliğini garanti eder.

Standart Önekler

Geliştiriciler genellikle alan adlarının TLD'sine karşılık gelen bir önek kullanır: com ticari kuruluşlar için, org kar amacı gütmeyen kuruluşlar için, io teknoloji projeleri için, net ağ hizmetleri ve çözümleri için. Kişisel projeler için, com.github.username veya com.email kabul edilebilir.

  • com.company.app — ticari uygulamalar için standart biçim
  • org.company.app — kar amacı gütmeyen ve açık kaynak projeler için
  • io.company.app — startuplar ve SaaS ürünleri arasında popüler
  • com.github.username — GitHub'daki kişisel projeler için

Çok Platformlu Projeler İçin Sözleşmeler

iOS ve Android'de yayınlanan uygulamalar için, her iki platformda da aynı tanımlayıcıyı kullanmanız önerilir. Bu, proje tanımlayıcısına bağlanan Firebase, AppsFlyer, Adjust ve diğer analiz sistemleriyle entegrasyonu basitleştirir. Örneğin, com.mycompany.myapp iOS'ta Bundle ID ve Android'de Package Name olacaktır.

Android Projesinde Package Name Yapılandırma

Bir Android projesinde Package Name yapılandırması, build.gradle içindeki applicationId'nin ve ilgili Java/Kotlin kaynak kodu dizin yapısının değiştirilmesini içerir. Android Studio, Package Name yeniden düzenleme araçları sağlar, ancak karmaşık projeler için adım adım geçiş önerilir.

Dizin Yapısı ve Package Name

kotlin
// Dosya yolu Package Name ile eşleşiyor
// 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)
    }
}

Kotlin ve Java'da, kaynak dosyalardaki Package Name dizin yapısıyla eşleşmelidir. build.gradle içinde Package Name değiştirilirken, dosyaları ilgili dizinlere taşımanız ve tüm package ve import bildirimlerini güncellemeniz gerekir. Android Studio bunu Refactor -> Move aracılığıyla otomatik olarak yapabilir, ancak düzinelerce dosyası olan büyük projeler için, yeniden düzenlemeden sonra sonucu doğrulamanız önerilir.

Proje Data Binding, View Binding veya Hilt kullanıyorsa, Package Name değişikliği oluşturulan sınıfları da etkileyecektir. Bağlama sınıfları, modülün Package Name'ine ve layout dizinine göre oluşturulur. Tanımlayıcıyı değiştirdikten sonra, oluşturulan tüm referansları güncellemek için projeyi yeniden derlemeniz gerekecektir. Önbelleğe alınmış eski referanslardan kaynaklanan hataları önlemek için Package Name değişikliğinden sonra temiz bir derleme yapmanız önerilir.

Gradle 7.0+'da, R sınıfı ve kaynak oluşturma amacıyla AndroidManifest.xml'deki package alanının yerini alan build.gradle içinde namespace desteği getirilmiştir. Bu arada, applicationId sistem ve Google Play için gerçek uygulama tanımlayıcısı olarak kalır. Bu, ad alanının sabit olduğu ve genel tanımlayıcının derleme sırasında değişebildiği kitaplık modülleri için yararlı olan farklı applicationId ve namespace'e sahip olmayı mümkün kılar.

Modüler mimariye sahip projeler için, bir modülün Package Name'ini değiştirmek diğer modüllerdeki import'ları etkileyebilir. data modülü com.example.data paketine sahipse ve domain modülü onun sınıflarını kullanıyorsa, tanımlayıcıyı değiştirdikten sonra tüm bağımlı modüllerdeki import'ları güncelleyin. Android Gradle Plugin sürüm 8.0+, build.gradle'dan otomatik namespace oluşturma ile bu süreci basitleştirir.

Kod Üzerinden Package Name Kontrolü

Geçerli Application ID'yi almak için BuildConfig sınıfını kullanın: BuildConfig.APPLICATION_ID. Bu, koddaki koşullu mantık, ortam bağlama veya hata ayıklama ekranlarında tanımlayıcıyı gösterme için kullanışlıdır. BuildConfig, build.gradle temel alınarak otomatik olarak oluşturulur.

kotlin
// Çalışma zamanında Application ID alma
val packageName = BuildConfig.APPLICATION_ID
val packageManager = packageManager
val appInfo = packageManager.getPackageInfo(packageName, 0)

println("App version: ${appInfo.versionName} (${appInfo.versionCode})")
println("Package: $packageName")

Yayınlama Sonrası Package Name Değiştirme

Google Play'de bir uygulamayı yayınladıktan sonra Package Name değiştirmek, tamamen yeni bir ürün oluşturmak anlamına gelen bir işlemdir. Sistem, farklı bir Package Name ile mevcut bir uygulamayı güncellemeye izin vermez, bu nedenle tanımlayıcıyı değiştirme kararı, mağazada projeyi yeniden başlatmaya eşdeğerdir.

Package Name Değiştirmenin Sonuçları

Package Name değiştirildiğinde kaybedilenler: tüm puanlar ve yorumlar, yükleme istatistikleri, Google Services entegrasyonu (taşınmamışsa), Firebase proje bağlantıları (yeni bir google-services.json oluşturulması gerekir). Kullanıcılar otomatik güncelleme almayacaktır — mağazada yeni uygulamayı göreceklerdir.

  • Puanlar ve yorumlar — eski uygulamada kalır, aktarılmaz
  • Yükleme istatistikleri — yeni Package Name için sıfırlanır
  • Firebase projeleri — yeni bir google-services.json yapılandırması ve tüm hizmetlerin yeniden yapılandırılması gerekir
  • Kullanıcılar — otomatik güncelleme almaz, ayrıca bilgilendirilmeleri gerekir

Package Name Değişikliği Ne Zaman Haklıdır

Package Name değiştirmek, şirketin yeniden markalaşması, uygulamanın başka bir geliştirici hesabına devredilmesi veya başka bir bölge için ayrı bir sürüm oluşturulması sırasında haklı görülebilir. Her durumda, değişiklikten önce kullanıcıları eski uygulama üzerinden bilgilendirmeniz ve veri aktarımı içeren bir geçiş planı hazırlamanız önerilir. Geçiş planı olmadan, kullanıcılar satın alınan içeriğe, aboneliklere ve kaydedilmiş uygulama verilerine erişimlerini kaybeder. Geçiş, SharedPreferences veya Room aracılığıyla veritabanı ve dosyaların aktarılmasını içerir.

Package Name'i değiştirmeden önce, yeni tanımlayıcının benzersiz olduğundan ve adlandırma kurallarına uyduğundan emin olun. Yeni Package Name ile Google Play'de yeni bir uygulama oluşturun ve bunu ayrı bir ürün olarak yayınlayın. Eski uygulama açıklamasında, yeni uygulamaya bir bağlantı verin. Kullanıcıları yönlendirmek için Google Play Custom Store Listing kullanmayı düşünün.

Sıkça Sorulan Sorular

Package Name'de kısa çizgi veya alt çizgi kullanabilir miyim?

Package Name'de alt çizgi (_) izin verilir, ancak kısa çizgi (-) izin verilmez. Alt çizgiler nadiren kullanılır ancak kabul edilebilir: com.example.my_app. Kısa çizgiler Google Play kuralları tarafından yasaklanmıştır ve yayınlama sırasında hataya neden olur. Bölüm ayırıcı olarak yalnızca nokta kullanmanız önerilir.

build.gradle içinde Package Name ve Application ID arasındaki fark nedir?

Package Name, kaynak çözümlemesi ve R sınıfı oluşturma için kullanılan AndroidManifest.xml'deki tanımlayıcıdır. Application ID, sistem ve Google Play Store için uygulama tanımlayıcısını belirleyen build.gradle içindeki alandır. Bunları aynı tutmanız önerilir, ancak applicationIdSuffix kullanırken farklılıklara izin verilir.

Yeni bir proje için doğru Package Name nasıl seçilir?

Şirketinizin veya takma adınızın ters alan adı gösterimini kullanın: com.domain.appname. Tanımlayıcının Google Play'de benzersiz olduğundan emin olun. Yaygın kelimelerden (todo, test, app) kaçının ve Google Play'de arama yaparak tanımlayıcının başka bir geliştirici tarafından alınıp alınmadığını kontrol edin.

Google Play'de yayınlamadan önce Package Name'i değiştirebilir miyim?

Evet, Google Play'de yayınlamadan önce Package Name sonuçsuz değiştirilebilir. Değişiklikten sonra google-services.json'u yeniden oluşturmanız, dizin yapısını güncellemeniz ve tüm import'ları kontrol etmeniz gerekecektir. Android Studio, süreci otomatikleştirmek için Refactor -> Move araçlarını sağlar.

Package Name uygulama imzasıyla nasıl ilişkilidir?

Package Name, imza sertifikasıyla birlikte Google Play'de uygulamayı tanımlayan benzersiz bir bağ oluşturur. İki uygulamanın Package Name'leri farklı olsa bile aynı anahtarla imzalanabilirler. İmza sertifikasını değiştirme, Key Rotation aracılığıyla Play Console'da tanımlayıcıyı kaybetmeden mümkündür.

Özet

  • Package Name — ters alan adı gösterimi formatında benzersiz Android uygulama tanımlayıcısı
  • Adlandırma kuralları — Latin harfleri, rakamlar, nokta, alt çizgi; maksimum 150 karakter
  • Ters alan adı küresel benzersizliği garanti eder: com.company.appname
  • Application ID build.gradle'de Package Name'e karşılık gelir ve derleme soneklerine sahip olabilir
  • Değiştirme yayınlama sonrası imkansız — yeni uygulama puanları ve yorumları kaybeder
  • Android Studio, yayınlama öncesi güvenli değişiklikler için yeniden düzenleme araçları sağlar
  • Öneri — yayınlamadan önce anlamlı bir tanımlayıcı seçin, yaygın ve kullanılmış adlardan kaçının

Anahtar teslim bir mobil uygulama geliştireceğiz

IT Sectr, 2017'den beri girişimler ve işletmeler için iOS ve Android uygulamaları oluşturmaktadır. Size danışmanlık yapacak ve en iyi çözümü önereceğiz.

Projeyi tartış

Ayrıca okuyun