Bu sayfada, Android Gradle eklentisini (AGP) kullanarak Android kitaplığı projenizi yayınlamaya 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ı derlenirken 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:
Groovy
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 (uygulama için) hem de namespace
özelliği (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
minSdkVersion
seç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. Bir uygulama, kitaplık bağımlılığı tarafından gerekenden daha düşük bir Android sürümünde çalışmaya devam edebilir. Bunun için kitaplık çağrılmadan önce çalışma zamanı kontrolleri yapılması gerekir. Ancak bu durum, kitaplığın temel uygulama işlevleri için gerekli olmaması koşuluyla geçerlidir. Bu nedenle, daha fazla kullanıcıya ulaşmak için kitaplığınızın
minSdkVersion
değerini uygulamalara yerleştirilebilecek ve mümkün olduğunda çağrılabilecek kadar düşük ayarlayın.Yüksek bir
minSdkVersion
seçilmesi, uygulamaların kitaplığı içermesini engelleyebilir.AGP'de, manifest dosyalarını uygulamadan ve bağımlılıklarından birleştiren bir adım olan manifest birleştirme işlemi, hiçbir bağımlılığın uygulamadan daha yüksek bir
minSdkVersion
değerine sahip olmamasını sağlar.Yüksek bir
minSdkVersion
seçmek, uygulama geliştiricileri manifest birleştirme güvenlik kontrollerini devre dışı bırakmaya yönlendirebilir ve bu da derleme sürecinde daha sonra sorunlara neden olabilir.Manifest birleştirme işlemi, uygulama projelerinin uygulamadan daha yüksek bir
minSdkVersion
değ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, daha sonra gerçek uyumsuzluk sorunlarına yol açabilir.Kitaplığın manifestosunda bir yayın alıcısı veya kodunun otomatik olarak tetiklendiği başka bir mekanizma bulunan özel durumlarda yüksek bir
minSdkVersion
seçmek gerekebilir.Bu durumlarda yüksek bir
minSdkVersion
seç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 Archive (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 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 daha 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:
Groovy
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 gibi öncelik verir:
buildTypes{}
productFlavors{}
defaultConfig{}
Yukarıdaki örnekte, minCompileSdk
hem defaultConfig{}
hem de productFlavors{}
içinde tanımlandığı için productFlavors{}
öncelikli olur 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 fikstü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 projelerinin yanı sıra kitaplık projeleri için de 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:
Groovy
android { testFixtures { enable = true } }
Kotlin
android { testFixtures { enable = true } }
Test armatürlerini etkinleştirdiğinizde Gradle, test armatürlerini yazabileceğiniz bir src/testFixtures
kaynak kümesini otomatik olarak oluşturur.
Daha fazla bilgi için Gradle'ın test fikstürlerini kullanma ile ilgili belgelerine bakın.