Bu sayfada, Android Gradle eklentisi (AGP) kullanılarak Android kitaplığı projenizin yayınlanmaya hazırlanması için gereken özellikler ve seçenekler açıklanmaktadır. Bu özelliklerin bazılarını kitaplığınızı oluşturmanın başında ayarlasanız bile ayarlarınızı optimize etmek için aşağıdaki yönergeleri inceleyin.
Ad alanı seçme
Android kitaplıklarının, kaynakları derlenirken benzersiz bir R
sınıfı oluşturabilmeleri için bir ad alanı belirtmesi gerekir. Kullanıcılar kitaplıktan ve R
sınıfından normal sınıfları içe aktardığında bu ad alanı, kitaplığın kök sınıfı paketiyle yakından eşleşmelidir.
AGP 7.0'dan itibaren, aşağıdaki kod örneğinde gösterildiği gibi uygulamanın build.gradle
dosyasında adı alanı ayarlayabilirsiniz:
Groovy
android { namespace = 'com.example.library' }
Kotlin
android { namespace = "com.example.library" }
Ad alanı, kitaplığın geliştiricilere yönelik bir mülküdür. applicationId
özelliği kullanılarak ayarlanan uygulama kimliğiyle ilgili değildir.
AGP'nin önceki sürümlerinde hem applicationId
mülkü (uygulama için) hem de namespace
mülkü (kitaplık için) manifest'in package
özelliği kullanılarak ayarlanabiliyordu. Bu da kafa karışıklığına yol açıyordu.
minSdkVersion
değeri seçme
Kitaplığınız için bir minSdkVersion
seçmek, kitaplığınızı yayınlamanın önemli bir parçasıdır. minSdkVersion
, kodunuzun destekleyebileceği minimum Android sürümünü yansıtmalıdır.
minSdkVersion
seçerken aşağıdaki noktalara dikkat edin:
Düşük bir
minSdkVersion
seçmek, kitaplığınızın genellikle daha geniş bir kitle tarafından dağıtılmasına olanak tanır.Bir kitaplığın kodu, uygulama açıkça çağırmadıkça genellikle yürütülmez. Bir uygulama, temel uygulama işlevselliği için kitaplık gerekli değilse kitaplığı çağrılmadan önce çalışma zamanı denetimleri gerçekleştirerek kitaplık bağımlılığının gerektirdiğinden daha düşük Android sürümlerinde yine çalışabilir. Bu nedenle, kitaplığınızın
minSdkVersion
değerini, daha fazla kullanıcıya ulaşmanıza yardımcı olmak için uygulamalara yerleştirilebilecek ve mümkün olduğunda çağrılabilecek kadar düşük ayarlayın.Yüksek bir
minSdkVersion
değeri seçmek, uygulamaların kitaplığı dahil etmesini engelleyebilir.AGP'deki bir adım olan manifest birleştirme işlemi, uygulamadan ve bağımlılıklarından gelen manifest dosyalarını birleştirir. Bu işlem, hiçbir bağımlılık değerinin uygulamadan daha yüksek
minSdkVersion
değerine sahip olmasını engeller.Yüksek bir
minSdkVersion
değeri seçmek, uygulama geliştiricilerin manifest birleştirme güvenlik kontrollerini devre dışı bırakmasına neden olarak derleme sürecinde daha sonra sorunlara yol açabilir.Manifest birleşmesi, uygulama projelerinin, uygulamanın kendisinden daha yüksek
minSdkVersion
değerine sahip kitaplıkları dahil etmesini engellediğinden, uygulama geliştiriciler derleme hatalarını en aza indirmek için manifest birleştirme işleminin güvenlik kontrollerini devre dışı bırakabilir. Ancak bu, aşağı akışta gerçek uyumsuzluk sorunlarına yol açabilir.Kitaplığın manifest dosyasında bir yayın alıcısının veya kodun otomatik olarak tetiklendiği başka bir mekanizmanın bulunduğu özel durumlarda yüksek bir
minSdkVersion
değeri seçmek gerekebilir.Bu durumlarda, yüksek bir
minSdkVersion
seçmek kodun çalıştırılabilmesini sağlar. Alternatif olarak, uygulamanın doğru kontrolleri yaptıktan sonra kitaplığı çalıştırmayı seçebilmesi için otomatik davranışı devre dışı bırakabilirsiniz.
Uygulamalara yerleştirilmesine izin vermek için kitaplığınızdaki RequiresApi
ek açıklamasını kullanarak kitaplığı çağıranlara çalışma zamanında kontrol yapmaları gerektiğini belirtin. AndroidLint, denetimleri için RequiresApi
bilgilerini kullanır. API kodunuzu ve API'lerinizi iyileştirmek için ek açıklamaları kullanmayla ilgili daha fazla kaynak için Ek açıklamalarla kod incelemesini iyileştirme başlıklı makaleyi inceleyin.
AAR meta verilerini ayarlama
Android kitaplıkları, Android Arşivi (AAR) dosyası biçiminde paketlenir. AAR meta verileri, AGP'nin kitaplıkları kullanmasına yardımcı olan özelliklerden oluşur. Kitaplığınız uyumsuz bir yapılandırma tarafından tüketiliyorsa ve AAR meta verileri ayarlanmışsa kullanıcılara sorunu çözmelerine yardımcı olacak bir hata mesajı gösterilir.
minCompileSdk değeri seçin
AGP, 4.1 sürümünden itibaren minCompileSdk
'yi destekler.
Bu, tüketen projelerin kullanabileceği minimum compileSdk
değerini gösterir. Kitaplığınız daha yeni platform özelliklerini kullanan manifest girişleri veya kaynakları içeriyorsa bu değeri ayarlamanız gerekir.
minCompileSdk
değeri, modül düzeyindeki build.gradle
dosyasında defaultConfig{}
, productFlavors{}
ve buildTypes{}
bloklarında ayarlanabilir:
Groovy
android { defaultConfig { aarMetadata { minCompileSdk = 29 } } productFlavors { foo { ... aarMetadata { minCompileSdk = 30 } } } }
Kotlin
android { defaultConfig { aarMetadata { minCompileSdk = 29 } } productFlavors { register("foo") { ... aarMetadata { minCompileSdk = 30 } } } }
minCompileSdk
ayarını birden fazla yerde belirlerseniz Gradle, derleme işlemi sırasında ayar konumlarına aşağıdaki şekilde öncelik verir:
buildTypes{}
productFlavors{}
defaultConfig{}
minCompileSdk
değerinin hem defaultConfig{}
hem de productFlavors{}
içinde tanımlandığı, productFlavors{}
önceliklendirilmiş ve minCompileSdk
30 olarak ayarlanmış önceki örnekte.
Gradle'in kod ve kaynakları birleştirirken ayarlara nasıl öncelik verdiği hakkında daha fazla bilgi edinmek için Kaynak kümeleriyle derleme başlıklı makaleyi inceleyin.
Test armatürlerini etkinleştir
Test armatürleri, genellikle test edilen kodu ayarlamak veya bir bileşenin testlerini kolaylaştırmak için kullanılır. 7.1 sürümünden itibaren AGP, uygulama ve dinamik özellik projelerinin yanı sıra kitaplık projeleri için de test armatürleri oluşturabilir.
Diğerlerinin kullanabileceği bir kitaplığı yayınlarken API'niz için test yapıları oluşturabilirsiniz. Test armatürleri, modül düzeyindeki build.gradle
dosyasında etkinleştirilebilir:
Groovy
android { testFixtures { enable = true } }
Kotlin
android { testFixtures { enable = true } }
Test armatürlerini etkinleştirdiğinizde Gradle, test armatürleri yazabilmeniz için otomatik olarak bir src/testFixtures
kaynak grubu oluşturur.
Daha fazla bilgi için Gradle'ın test donanımlarını kullanma ile ilgili belgelerine bakın.