Bu sayfada, modül düzeyindeki build.gradle.kts dosyasında bulunan faydalı uygulama ayarları açıklanmaktadır. build.gradle.kts dosyasında ayarlanan önemli özelliklere genel bir bakış sunmanın yanı sıra şunları nasıl yapacağınızı öğrenin:
- Farklı derleme yapılandırmaları için uygulama kimliğini değiştirme
- Ad alanını uygulama kimliğinden bağımsız olarak güvenli bir şekilde ayarlayın.
Uygulama kimliğini ayarlama
Her Android uygulamasının, Java veya Kotlin paket adı gibi görünen benzersiz bir uygulama kimliği vardır (ör. com.example.myapp). Bu kimlik, uygulamanızı cihazda ve Google Play Store'da benzersiz bir şekilde tanımlar.
Uygulama kimliğiniz, modülünüzün build.gradle.kts dosyasındaki applicationId özelliği tarafından tanımlanır. com.example.myapp değerini uygulamanızın kimliğiyle değiştirerek applicationId değerini güncelleyin:
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ına benzese de uygulama kimliği için 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 applicationId, kurulum sırasında seçtiğiniz paket adını otomatik olarak alır. Bu noktadan sonra iki özelliği teknik olarak birbirinden bağımsız şekilde açıp kapatabilirsiniz ancak bu önerilmez.
Uygulama kimliğini ayarlarken aşağıdakileri yapmanız önerilir:
- Uygulama kimliğini ad alanıyla aynı tutun. İki özellik arasındaki fark biraz kafa karıştırıcı olabilir ancak ikisini de aynı tutarsanız endişelenmenize gerek kalmaz.
- Uygulamanızı yayınladıktan sonra uygulama kimliğini değiştirmeyin. 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. Yani ad alanını değiştirdiğinizde uygulama kimliği de değişir. Bu genellikle istenmeyen bir durumdur.
Test için uygulama kimliğini değiştirme
Derleme araçları, varsayılan olarak enstrümantasyon testi APK'nıza bir uygulama kimliği uygular. Bu işlem, belirli derleme değişkeninin uygulama kimliğine .test eklenerek yapılır. Örneğin, com.example.myapp.free derleme değişkeni için bir test APK'sının uygulama kimliği com.example.myapp.free.test olur.
Gerekli olmasa da defaultConfig veya productFlavor bloğunuzda testApplicationId özelliğini tanımlayarak uygulama kimliğini değiştirebilirsiniz.
Ad alanını ayarlama
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 derleme araçları, uygulamanızı nihai uygulama paketine (APK) derlerken ad alanını, uygulamanızın oluşturulan R sınıfının ad alanı olarak kullanır. Bu sınıf, uygulama kaynaklarınıza erişmek için kullanılı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, her zaman projenizin temel paket adıyla eşleşmelidir. Bu paket, etkinliklerinizi ve diğer uygulama kodlarınızı sakladığınız yerdir. Projenizde başka alt paketler de olabilir ancak bu dosyaların, namespace özelliğindeki ad alanını kullanarak R sınıfını içe aktarması gerekir.
Daha basit bir iş akışı için ad alanınızı, varsayılan olarak olduğu gibi uygulama kimliğinizle aynı tutun.
Ad alanını değiştirme
Çoğu durumda, ad alanını 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 gibi durumlarda, uygulama kimliğinden bağımsız olarak modülünüzün build.gradle.kts dosyasındaki namespace özelliğini güncelleyerek ad alanını değiştirin. Bunu yapmadan önce, uygulama kimliğinizin açıkça tanımlandığından emin olun. Böylece ad alanını değiştirmek uygulama kimliğini de değiştirmez. 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ünü inceleyin.
namespace ve Gradle applicationId için farklı adlarınız varsa derleme araçları, derlemenin sonunda uygulama kimliğini uygulamanızın nihai manifest dosyasına kopyalar.
Bu nedenle, derleme işleminden sonra AndroidManifest.xml dosyanızı incelerseniz package özelliğinin uygulama kimliğine ayarlandığını görürsünüz. Google Play Store ve Android platformu, uygulamanızı tanımlamak için birleştirilmiş manifest'in package özelliğine bakar.
Test için ad alanını değiştirme
androidTest ve test kaynak grupları için varsayılan ad alanı, sonuna .test eklenmiş ana ad alanıdır. Örneğin, build.gradle dosyasındaki namespace özelliği com.example.myapp ise test ad alanı varsayılan olarak com.example.myapp.test şeklinde ayarlanır. Test için ad alanını değiştirmek istiyorsanız 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" ... }
Test hakkında daha fazla bilgi edinmek için Android'de uygulamaları test etme başlıklı makaleyi inceleyin.