Bu sayfada, Android Gradle eklentisi (AGP) kullanılarak yayınlanmak üzere Android kitaplığı projenizi hazırlamak için gereken özellikler ve seçenekler açıklanmaktadır. Bu özelliklerden bazılarını kitaplığınızı oluştururken ayarlamış olsanız bile ayarlarınızı optimize etmek için aşağıdaki yönergeleri inceleyin.
Ad alanı seçin
Android kitaplıklarının, kaynakları derlendiğinde benzersiz bir R sınıfı oluşturabilmeleri için bir ad alanı bildirmeleri gerekir. Bu ad alanı, kullanıcılar kitaplıktan ve R sınıfından normal sınıfları içe aktarırken karışıklık olmaması için 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ını ayarlayabilirsiniz:
Modern
android { namespace = 'com.example.library' }
Kotlin
android { namespace = "com.example.library" }
Ad alanı, kitaplığın geliştiriciye yönelik bir özelliğidir. applicationId özelliği kullanılarak ayarlanan uygulama kimliğiyle ilgili değildir.
AGP'nin önceki sürümlerinde hem applicationId özelliği (bir uygulama için) hem de namespace özelliği (bir kitaplık için) manifestin package özelliği kullanılarak ayarlanabiliyordu. Bu durum kafa karışıklığına yol açıyordu.
minSdkVersion değeri seçin
Kitaplığınız için minSdkVersion seçmek, kitaplığınızı yayınlamanın önemli bir yönüdür. minSdkVersion, kodunuzun destekleyebileceği minimum Android sürümünü yansıtmalıdır.
minSdkVersion seçerken aşağıdaki noktaları göz önünde bulundurun:
Düşük bir
minSdkVersionseçmek genellikle kitaplığınızın daha geniş bir dağıtımına olanak tanır.Bir kitaplığın kodu, uygulama açıkça çağırmadığı sürece genellikle yürütülmez. Kitaplık, temel uygulama işlevselliği için gerekli değilse uygulama, kitaplığı çağırmadan önce çalışma zamanı kontrolleri yaparak Android'in kitaplık bağımlılığı tarafından gerektirilen sürümünden daha düşük bir sürümünde çalışmaya devam edebilir. Bu nedenle, daha fazla kullanıcıya ulaşmak için kitaplığınızın
minSdkVersiondeğerini uygulamalara yerleştirilebilecek ve mümkün olduğunda çağrılabilecek kadar düşük ayarlayın.Yüksek bir
minSdkVersionseçilmesi, uygulamaların kitaplığı içermesini engelleyebilir.AGP'deki bir adım olan manifest birleştirici, uygulamadan ve bağımlılıklarından gelen manifest dosyalarını birleştirir. Bu birleştirici, hiçbir bağımlılığın uygulamadan daha yüksek bir
minSdkVersiondeğerine sahip olmamasını sağlar.Yüksek bir
minSdkVersionseçmek, uygulama geliştiricileri manifest birleştirme güvenlik kontrollerini devre dışı bırakmaya yönlendirebilir ve bu da derleme işleminin ilerleyen aşamalarında sorunlara neden olabilir.Manifest birleştirme işlemi, uygulama projelerinin uygulamanın kendisinden daha yüksek bir
minSdkVersiondeğerine sahip kitaplıklar içermesini 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 durum, sonraki aşamalarda gerçek uyumsuzluk sorunlarına yol açabilir.Kitaplığın manifestosunda yayın alıcısı veya kodunun otomatik olarak tetiklendiği başka bir mekanizma bulunan özel durumlarda yüksek bir
minSdkVersionseçmek gerekebilir.Bu durumlarda yüksek bir
minSdkVersionseçmek kodun çalışmasını sağlar. Alternatif olarak, uygulamanın doğru kontrolleri yaptıktan sonra kitaplığı yürütmeyi etkinleştirebilmesi için otomatik davranışı devre dışı bırakabilirsiniz.
Uygulamalara yerleştirmeye izin vermek için kitaplığınızda RequiresApi ek açıklamasını kullanarak arayanlara çalışma zamanı kontrolleri yapmaları gerektiğini belirtin. Android
Lint, incelemelerinde RequiresApi bilgilerini kullanır. API kodunuzu ve API'lerinizi iyileştirmek için ek açıklamaları kullanma hakkında daha fazla kaynak için Ek açıklamalar ile kod incelemesini iyileştirme başlıklı makaleyi inceleyin.
AAR meta verilerini ayarlama
Android kitaplıkları, Android Arşivi (AAR) dosyası olarak 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 kullanılıyorsa 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ızda yeni platform özelliklerinden yararlanan manifest girişleri veya kaynaklar varsa bu değeri ayarlamanız gerekir.
minCompileSdk değeri, modül düzeyindeki build.gradle dosyasında defaultConfig{}, productFlavors{} ve buildTypes{} bloklarında ayarlanabilir:
Modern
android { defaultConfig { aarMetadata { minCompileSdk = 29 } } productFlavors { foo { ... aarMetadata { minCompileSdk = 30 } } } }
Kotlin
android { defaultConfig { aarMetadata { minCompileSdk = 29 } } productFlavors { register("foo") { ... aarMetadata { minCompileSdk = 30 } } } }
minCompileSdk öğesini birden fazla yerde ayarlarsanız Gradle, derleme işlemi sırasında ayar konumlarına aşağıdaki öncelik sırasını verir:
buildTypes{}productFlavors{}defaultConfig{}
Yukarıdaki örnekte, minCompileSdk hem defaultConfig{} hem de productFlavors{} içinde tanımlandığı için productFlavors{} önceliklendirilir ve minCompileSdk 30 olarak ayarlanır.
Gradle'ın kodu ve kaynakları birleştirirken ayarları nasıl önceliklendirdiği hakkında daha fazla bilgi edinmek için Kaynak kümeleriyle derleme başlıklı makaleyi inceleyin.
Test armatürlerini etkinleştirme
Test armatürleri, test edilen kodu ayarlamak veya bir bileşenin testlerini kolaylaştırmak için yaygın olarak kullanılır. AGP, 7.1 sürümünden itibaren uygulama ve dinamik özellik projelerine ek olarak kitaplık projeleri için test armatürleri oluşturabilir.
Başkalarının kullanması için bir kitaplık yayınlarken API'niz için test verileri oluşturmayı düşünebilirsiniz. Test armatürleri, modül düzeyindeki
build.gradle dosyasında etkinleştirilebilir:
Modern
android { testFixtures { enable = true } }
Kotlin
android { testFixtures { enable = true } }
Test fikstürlerini etkinleştirdiğinizde Gradle, test fikstürlerini yazabileceğiniz bir src/testFixtures kaynak kümesini otomatik olarak oluşturur.
Daha fazla bilgi için Gradle'ın test armatürlerini kullanma ile ilgili belgelerine bakın.