Kitaplığınızı kullanıma hazırlama

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:

  1. buildTypes{}

  2. productFlavors{}

  3. 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.