Android'de Application ID, Package Name ve Kaynak ID'lerini Ayırt Etme
Kısa cevap: Application ID, Play Store ve sistemdeki uygulamanın benzersiz tanımlayıcısıdır (build.gradle içinde belirtilir), package name kod ve manifest için ad alanıdır (src/main/java klasörleri ve AndroidManifest.xml içindeki package özniteliği), kaynak ID'leri ise R.* şeklinde üretilen sabitlerdir (strings, drawable, layout vb. öğelere erişim için kullanılır).
Application ID Nedir ve Nerede Değiştirilir
Application ID, uygulamanızın evrensel benzersiz tanımlayıcısıdır (ters domain formatında, örneğin com.mycompany.myapp). Yayınlamayla ilişkilendirilir: Farklı Application ID'lere sahip iki APK farklı uygulamalar olarak kabul edilir.
Nerede görüntülenir ve değiştirilir:
- app/build.gradle (veya build.gradle.kts) modülünde: applicationId "com.mycompany.myapp" alanı.
- Yayınlanmadan önce değiştirilebilir; sürüm sonrası değişiklik Google Play'de yeni bir uygulama oluşturulmasına yol açar.
Pratik tavsiye:
- Şirket domainini kullanın: com.mycompany.app. Bu, çakışma riskini azaltır.
Özellik sanallaştırması (flavors) planlıyorsanız, applicationId Gradle'da flavor başına özelleştirilebilir.
Package Name Nedir ve Bununla Nasıl Çalışılır
Package name, Java/Kotlin sınıflarınız için ad alanı ve AndroidManifest.xml içindeki package özniteliğinin değeridir. Örnek: com.mycompany.myapp.ui.
Nerede aranır ve nasıl güvenle değiştirilir:
- AndroidManifest.xml: package özniteliği.
- Proje klasörleri: app/src/main/java/com/mycompany/myapp.
- Yeniden adlandırmak için Android Studio → Refactor → Rename kullanın — araç import'ları ve manifest'i günceller.
Application ID'den farkı:
- package name kod organizasyonu içindir; applicationId ise sistemde ve mağazada uygulamanın kimliği içindir. Aynı olabilirler ancak olmak zorunda değiller.
Kaynak ID'leri (R.*): Yapısı ve Kullanım Alanları
Kaynak ID'leri, derleme sırasında R sınıfında üretilen tamsayı sabitleridir. res/ klasöründeki öğelere referans verirler:
- res/values/strings.xml → R.string.name
- res/drawable/ → R.drawable.icon
- res/layout/ → R.layout.activity_main getString(R.string.name), setImageResource(R.drawable.icon), setContentView(R.layout.activity_main) şeklinde kullanın.
Nerede görüntülenir:
- res/ klasöründeki dosyalar.
- Üretilen R sınıfı kodda görünür olacaktır (ancak elle düzenlenmez).
R.java dosyasını elle düzenlemeyin — derleme sırasında üzerine yazılır. res içindeki isim çakışmalarında projeyi temizleyin (Build → Clean Project) ve yinelenenleri kontrol edin.
Sık Yapılan Hatalar
- Yayın sonrası applicationId değiştirmek → kullanıcılar güncellemeleri alamaz.
- Refactor olmadan paket yeniden adlandırma → bozuk import'lar ve çalışma zamanı hataları.
- res/ içinde yinelenen isimler → derleme hataları.
- Kütüphane migrasyonunda manifest/gradle güncellemeyi unutmak → imza uyumsuzluğu.
Sürüm Öncesi Hızlı Kontrol Listesi
- applicationId'nin Play Console'dakiyle eşleştiğinden emin olun.
- Kod içindeki paketler mantıklı şekilde organize edilmiş ve Refactor ile yeniden adlandırılmış olmalı.
- Tüm kaynaklar benzersiz isimlere sahip olmalı (dosyalar için lower_snake_case).
- Sürüm yapısını oluşturun ve kontrol edin: adb shell pm list packages | grep yourapp
SSS
- Yayın sonrası applicationId değiştirilebilir mi? Hayır — bu mağazada yeni bir uygulama oluşturur.
- package name applicationId ile aynı mı olmalı? Hayır, ancak basitlik açısından genellikle aynı yapılır.
- Kaynak ID hataları nerede bulunur? Derleme loglarında ve res klasöründe — genellikle isim çakışması veya yanlış XML sözdizimi.
Bu kurallara uyarak, yeniden yapılandırma ve yayınlama sırasında çoğu sorunu önleyebilirsiniz.