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

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. com.example.myapp kısmını 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ı 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.