Bu sayfada, modül düzeyindeki build.gradle.kts
dosyasındaki faydalı uygulama ayarları açıklanmaktadır. build.gradle.kts
dosyasında ayarlanan önemli özelliklere genel bir bakış sunmanın yanı sıra şunları da öğrenin:
- Farklı derleme yapılandırmaları için uygulama kimliğini değiştirin.
- Ad alanını, uygulama kimliğinden bağımsız olarak güvenle ayarlayın.
Uygulama kimliğini ayarlama
Her Android uygulamasının, Java veya Kotlin paket adına benzeyen com.example.myapp gibi benzersiz bir uygulama kimliği vardır. Bu kimlik, uygulamanızı cihazda ve Google Play Store'da benzersiz bir şekilde tanımlar.
Uygulama kimliğiniz burada gösterildiği gibi modülünüzün build.gradle.kts
dosyasındaki applicationId
özelliği tarafından tanımlanır:
Kotlin
android { defaultConfig { applicationId = "com.example.myapp" minSdk = 15 targetSdk = 24 versionCode = 1 versionName = "1.0" } ... }
Modern
android { defaultConfig { applicationId "com.example.myapp" minSdkVersion 15 targetSdkVersion 24 versionCode 1 versionName "1.0" } ... }
Uygulama kimliği, geleneksel bir Kotlin veya Java paket adı gibi görünse de uygulama kimliğinin adlandırma kuralları biraz daha kısıtlayıcıdır:
- En az iki segment (bir veya daha fazla nokta) içermelidir.
- Her segment bir harfle başlamalıdır.
- Tüm karakterler alfanümerik veya alt çizgi [a-zA-Z0-9_] olmalıdır.
Android Studio'da yeni bir proje oluşturduğunuzda, kurulum sırasında seçtiğiniz paket adı applicationId
öğesine otomatik olarak atanır. Teknik olarak bu iki özelliği birbirinden bağımsız olarak açıp kapatabilirsiniz ancak bunu yapmanız önerilmez.
Uygulama kimliğini ayarlarken aşağıdakileri yapmanız önerilir:
- Uygulama kimliğini ad alanı ile aynı tutun. İki mülk arasındaki fark biraz kafa karıştırıcı olabilir, ancak bunları aynı tutarsanız endişelenmenizi gerektirecek bir durum olmaz.
- Uygulamanızı yayınladıktan sonra uygulama kimliğini değiştirmeyin. Kimliği değiştirirseniz Google Play Store sonraki yüklemeyi yeni bir uygulama olarak değerlendirir.
- Uygulama kimliğini açıkça tanımlayın. Uygulama kimliği,
applicationId
özelliği kullanılarak açıkça tanımlanmazsa otomatik olarak ad alanıyla aynı değeri alır. Bu nedenle, ad alanı değiştirildiğinde uygulama kimliği de değişir. Bu genellikle istediğiniz bir şey değildir.
Test için uygulama kimliğini değiştirme
Varsayılan olarak derleme araçları, .test
ile eklenen derleme varyantının uygulama kimliğini kullanarak araç testi APK'nıza bir uygulama kimliği uygular. Örneğin, com.example.myapp.free
derleme varyantı için test APK'sı com.example.myapp.free.test
uygulama kimliğine sahiptir.
Gerekli olmamakla birlikte, defaultConfig
veya productFlavor
blokunuzda testApplicationId
özelliğini tanımlayarak uygulama kimliğini değiştirebilirsiniz.
Ad alanını belirleyin
Her Android modülünün, oluşturulan R
ve BuildConfig
sınıfları için Kotlin veya Java paket adı olarak kullanılan bir ad alanı vardır.
Ad alanınız, aşağıdaki kod snippet'inde gösterildiği gibi, modülünüzün build.gradle.kts
dosyasındaki namespace
özelliği tarafından tanımlanır. namespace
başlangıçta projenizi oluştururken seçtiğiniz paket adına ayarlanır.
Kotlin
android { namespace = "com.example.myapp" ... }
Modern
android { namespace "com.example.myapp" ... }
Android geliştirme araçları, uygulamanızı nihai uygulama paketine (APK) oluştururken, ad alanını uygulamanızın oluşturduğu ve uygulama kaynaklarınıza erişmek için kullanılan R
sınıfının ad alanı olarak kullanır.
Örneğin, önceki derleme dosyasında R
sınıfı com.example.myapp.R
konumunda oluşturulur.
build.gradle.kts
dosyasının namespace
özelliği için belirlediğiniz ad, projenizin ve diğer uygulama kodlarının korunduğu temel paket adıyla her zaman eşleşmelidir. Projenizde başka alt paketler de olabilir ancak bu dosyalar, namespace
özelliğindeki ad alanını kullanarak R
sınıfını içe aktarmalıdır.
Daha basit bir iş akışı için ad alanınızı varsayılan olarak uygulama kimliğinizle aynı tutun.
Ad alanını değiştirin
Çoğu durumda, ad alanı ve uygulama kimliğini varsayılan olarak aynı tutmanız gerekir. Ancak kodunuzu yeniden düzenliyorsanız veya ad alanı çakışmalarını önlemek için bir noktada ad alanını değiştirmeniz gerekebilir.
Bu durumlarda, modülünüzün build.gradle.kts
dosyasındaki namespace
özelliğini uygulama kimliğinden bağımsız olarak güncelleyerek ad alanını değiştirin. Bunu yapmadan önce, ad alanını değiştirmenin uygulama kimliğini değiştirmemesi için uygulama kimliğinizin açıkça tanımlandığından emin olun. Ad alanının uygulama kimliğini nasıl etkileyebileceği hakkında daha fazla bilgi için Uygulama kimliğini ayarlama bölümüne bakın.
namespace
ve Gradle applicationId
için farklı adlarınız varsa derleme araçları, uygulama kimliğini derlemenin sonunda uygulamanızın nihai manifest dosyasına kopyalar.
Dolayısıyla, AndroidManifest.xml
dosyanızı bir derlemeden sonra denetlerseniz package
özelliği uygulama kimliğine ayarlanır. Birleştirilmiş manifestin package
özelliği, Google Play Store ve Android platformunun uygulamanızı tanımlamak için kullandığı yerdir.
Test için ad alanını değiştirin
androidTest
ve test
kaynak grupları için varsayılan ad alanı, ana ad alanıdır ve sonuna .test
eklenmiştir. Örneğin, build.gradle
dosyasındaki namespace
özelliği com.example.myapp
ise test ad alanı varsayılan olarak com.example.myapp.test
değerine ayarlanır. Test amacıyla kullanılan ad alanını değiştirmek için aşağıdaki kod snippet'inde gösterildiği gibi testNamespace
özelliğini kullanın:
Kotlin
android { namespace = "com.example.myapp" testNamespace = "com.example.mytestapp" ... }
Modern
android { namespace "com.example.myapp" testNamespace "com.example.mytestapp" ... }
Dikkat: testNamespace
ve namespace
değerlerini aynı değere ayarlamayın. Aksi takdirde ad alanı çakışmaları meydana gelir.
Test hakkında daha fazla bilgi edinmek için Android'de uygulamaları test etme başlıklı makaleyi inceleyin.