Android'de Package Name ve ApplicationId: Nasıl Öğrenilir ve Güvenle Değiştirilir
Kısa cevap: applicationId, sistemde ve Google Play'deki APK'nın tanımlayıcısıdır; package name/namespace ise kodun ad alanıdır. Package'ı yeniden düzenleme için değiştirmek güvenlidir; ancak yayın geçmişini korumak istiyorsanız, zaten yayınlanmış bir uygulama için applicationId'yi değiştirmemelisiniz.
Nedir ve Temel Farkları Nelerdir
- applicationId — uygulamanın benzersiz tanımlayıcısıdır (örneğin, com.company.app). Gradle'da (defaultConfig/productFlavors) ayarlanır ve Android sistemi ile Google Play mağazası tarafından uygulamayı tanımak için kullanılır.
- package name / namespace — Java/Kotlin paketi, kod yapısı ve R sınıfıdır (örneğin, package com.company.app). Ad alanlarından, import'lardan ve dosya konumlarından sorumludur. Ana kural: applicationId APK kimliğiyle ilgilidir, package/namespace ise kodla ilgilidir.
Google Play'de güncelleme yapabilme özelliğini korumanız gerekiyorsa applicationId'yi değiştirmeyin. Kod yapısını değiştirmeniz gerekiyorsa package/namespace'i yeniden düzenleme yoluyla değiştirin.
Mevcut Değerleri Hızlı ve Güvenilir Şekilde Görüntüleme Yöntemleri
- Gradle'da (sistem için ana kaynak):
- app/build.gradle(kts) → android { defaultConfig { applicationId "com.company.app" } }
- Flavor'lar ve derlemeler için productFlavors ve buildTypes'a (applicationIdSuffix) bakın.
- Kodda:
- Herhangi bir sınıfı açın — ilk satır: package com.company.module.
- Çalışma zamanında: Activity/Context içinde context.packageName çağrısı applicationId'yi döndürür.
- Cihazda / APK'da:
- adb shell pm list packages | grep company
- Android Studio → APK Analyzer veya cihazdaki uygulama ayarlarında — Paket Kimliği.
- Manifest dosyasında:
- Eski projelerde
, yeni projelerde Gradle'daki namespace kullanılır ve package bulunmayabilir.
- Eski projelerde
Sistemin yeni kimliği görüp görmediğini kontrol etmek için derleyip adb install çalıştırın veya loglarda context.packageName'i kontrol edin.
ApplicationId ve Package'ı Değiştirme (Pratik Adımlar ve Kontrol Listesi)
ApplicationId'yi değiştirme (bilinçli olarak yeni bir uygulama yayınlamanız gerektiğinde)
- app/build.gradle(kts) dosyasında defaultConfig.applicationId'yi değiştirin veya ilgili flavor'da applicationId'yi ayarlayın.
- Birden fazla ortam gerekiyorsa, buildTypes'ta applicationIdSuffix veya flavor başına applicationId kullanın.
- Derleme: Build → Rebuild Project. Kontrol edin: adb shell pm list packages, context.packageName.
- Harici servisleri güncelleyin: Firebase/Analytics/Push, konfigürasyon dosyalarını yeniden oluşturun (google-services.json), CI/CD'yi, anahtarları ve backend ayarlarını güncelleyin.
Package name / namespace'i değiştirme (kimliği değiştirmeden)
- Android Studio'da: Bir sınıfı açın, package satırını seçin, Refactor → Rename (Shift+F6) → Rename package. Önizlemeyi inceleyin ve uygulayın.
- Android Studio dizinleri, import'ları, manifest/android:name'i ve XML referanslarını otomatik olarak günceller.
- Bu seçeneği kullanıyorsanız Gradle'da android { namespace "com.new.company" } içindeki namespace'i güncelleyin.
- Yeniden düzenlemeden sonra: Clean → Rebuild → lint/testleri çalıştırın.
ApplicationId değişikliğinde yayınlama öncesi kontrol listesi:
- Eski sürüm zincirine devam etmeyip yeni bir ürün istediğinizden emin olun.
- Analitik ve push bildirimlerindeki konfigürasyonları güncelleyin.
- CI/CD'yi, betikleri ve dokümantasyonu güncelleyin.
- İmzalama anahtarlarını ve yayın ayarlarını kontrol edin.
Zaten yayınlanmış bir uygulamanın applicationId'sini değiştirmek güncelleme zincirini bozar: Play Store ve cihazlar APK'yı yeni bir uygulama olarak algılar.
Sık Yapılan Hatalar
- Yeniden düzenleme yerine klasörleri manuel olarak yeniden adlandırma → bozuk import'lar, ClassNotFoundException.
- Servisleri (Firebase, backend) yapılandırırken applicationId ve package karıştırılması → hatalı kayıt.
- Debug/prod ortamlarında unutulmuş applicationIdSuffix → birden fazla derleme yüklenirken çakışmalar.
- Güncellenmemiş CI/CD betikleri ve konfigürasyonları → derleme başarısızlığı veya yanlış yayınlama.
SSS
- Kodu yeniden düzenlerken applicationId'yi değiştirmem gerekir mi? Hayır. Yeniden düzenleme için package/namespace'i değiştirmek yeterlidir; applicationId'yi değiştirmeye gerek yoktur.
- Bir cihaza release ve debug sürümlerini aynı anda nasıl yüklerim? BuildTypes'ta applicationIdSuffix (örneğin ".debug") kullanın — böylece com.company.app.debug ve com.company.app elde edersiniz.
- Uygulamanın çalışma zamanında hangi kimliği kullandığını nasıl kontrol ederim? Kodda: Log.d("ID", context.packageName) veya adb üzerinden: pm list packages.
İsterseniz projeniz için kısa bir kontrol listesi hazırlayabilirim: mevcut applicationId'yi, modül yapısını ve amacınızı (yeniden düzenleme veya yeni ürün) yazmanız yeterli.