Uygulama modülünü yapılandırma

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 aşağıdakileri de öğ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üvenli bir şekilde ayarlayın.

Uygulama kimliğini ayarlama

Her Android uygulamasının, Java veya Kotlin paketi adı gibi görünen benzersiz bir uygulama kimliği vardır (ör. com.example.uygulamam). 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ında bulunan applicationId mülkü 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"
    }
    ...
}

Groovy

android {
    defaultConfig {
        applicationId "com.example.myapp"
        minSdkVersion 15
        targetSdkVersion 24
        versionCode 1
        versionName "1.0"
    }
    ...
}

Uygulama kimliği geleneksel bir Kotlin veya Java paketi adına benzese de uygulama kimliği için geçerli adlandırma kuralları biraz daha kısıtlayıcıdır:

  • En az iki segmenti (bir veya daha fazla nokta) olmalıdır.
  • 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'ye kurulum sırasında seçtiğiniz paket adı otomatik olarak atanır. Bu tarihten itibaren iki mülkü teknik olarak bağımsız olarak değiştirebilirsiniz ancak bu önerilmez.

Uygulama kimliğini ayarlarken aşağıdakileri yapmanız önerilir:

  • Uygulama kimliğini ad alanıyla aynı tutun. Bu iki mülk arasındaki fark biraz kafa karıştırıcı olabilir ancak aynı tutarsanız endişelenmenize gerek yoktur.
  • 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 mülkü kullanılarak açıkça tanımlanmazsa otomatik olarak ad alanıyla aynı değeri alır. Bu, ad alanının değiştirilmesiyle uygulama kimliğinin de değişeceği anlamına gelir. Bu genellikle istediğiniz bir durum değildir.

Test için uygulama kimliğini değiştirme

Derleme araçları varsayılan olarak, .test eklenmiş belirli bir derleme varyantının uygulama kimliğini kullanarak araç testi APK'nize bir uygulama kimliği uygular. Örneğin, com.example.myapp.free derleme varyantı için bir test APK'sı com.example.myapp.free.test uygulama kimliğine sahiptir.

Gerekli olmasa da defaultConfig veya productFlavor bloğunuzda testApplicationId mülkünü tanımlayarak uygulama kimliğini değiştirebilirsiniz.

Ad alanını ayarlama

Her Android modülünün bir ad alanı vardır. Bu ad alanı, oluşturulan R ve BuildConfig sınıfları için Kotlin veya Java paket adı olarak kullanılır.

Ad alanınız, aşağıdaki kod snippet'inde gösterildiği gibi modülünüzün build.gradle.kts dosyasında bulunan namespace mülkü tarafından tanımlanır. namespace, başlangıçta projenizi oluştururken seçtiğiniz paket adıyla ayarlanır.

Kotlin

android {
    namespace = "com.example.myapp"
    ...
}

Groovy

android {
    namespace "com.example.myapp"
    ...
}

Android derleme araçları, uygulamanızı nihai uygulama paketine (APK) derlerken uygulamanızın oluşturulan R sınıfının ad alanı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 adresinde oluşturulur.

build.gradle.kts dosyasındaki namespace mülkü için belirlediğiniz ad, her zaman etkinliklerinizi ve diğer uygulama kodlarınızı tuttuğunuz projenizin temel paket adıyla eşleşmelidir. Projenizde başka alt paketler olabilir ancak bu dosyaların namespace mülkünden gelen ad alanını kullanarak R sınıfını içe aktarması gerekir.

Daha basit bir iş akışı için varsayılan olarak olduğu gibi ad alanınızı uygulama kimliğinizle aynı tutun.

Ad alanını değiştirme

Çoğu durumda, ad alanını ve uygulama kimliğini varsayılan olarak olduğu gibi tutmanız gerekir. Ancak, kodunuzu yeniden düzenlerseniz veya ad alanı çakışmalarını önlemek isterseniz 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ında namespace mülkünü güncelleyerek ad alanını değiştirin. Bunu yapmadan önce, uygulama adınızın açıkça tanımlandığından emin olun. Böylece, ad alanının değiştirilmesi uygulama kimliğini de değiştirmez. Ad alanının uygulama kimliğini nasıl etkileyebileceği hakkında daha fazla bilgi edinmek için Uygulama kimliğini ayarlama başlıklı makaleyi 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, bir derlemeden sonra AndroidManifest.xml dosyanızı incelerseniz package özelliği uygulama kimliğine ayarlanır. Birleştirilmiş manifest'in package özelliği, Google Play Store ve Android platformunun uygulamanızı tanımlamak için baktığı yerdir.

Test için ad alanını değiştirme

androidTest ve test kaynak kümeleri 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 olarak ayarlanır. Test için ad alanını değiştirmek üzere aşağıdaki kod snippet'inde gösterildiği gibi testNamespace mülkünü kullanın:

Kotlin

android {
    namespace = "com.example.myapp"
    testNamespace = "com.example.mytestapp"
    ...
}

Groovy

android {
    namespace "com.example.myapp"
    testNamespace "com.example.mytestapp"
    ...
}

Dikkat: testNamespace ve namespace değerlerini aynı değere ayarlamayınız. 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.