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

Bu sayfada, Android kitaplığı projenizi Android Gradle eklentisi (AGP) kullanarak yayına 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şturabilmesi için bir ad alanı bildirmesi gerekir. Kullanıcılar kitaplıktan ve onun R sınıfından normal sınıfları içe aktardığında karışıklık olmaması için bu ad alanı, kitaplığın kök sınıf paketiyle yakından eşleşmelidir.

AGP 7.0 ile başlayarak, 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ş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 özelliği (bir uygulama için) hem de namespace özelliği (kitaplık için) manifestin package özelliği kullanılarak ayarlanabiliyordu ve bu da karışıklığa neden oluyordu.

minSdkVersion değeri seçin

Kitaplığınız için bir minSdkVersion seçmek, kitaplığınızı yayınlamanın önemli bir unsurudur. minSdkVersion, kodunuzun destekleyebileceği minimum Android sürümünü yansıtmalıdır.

minSdkVersion seçerken aşağıdakilere dikkat edin:

  • Düşük bir minSdkVersion seçmek, genellikle kitaplığınızın daha geniş bir kitleye dağıtılmasını sağlar.

    Bir kitaplığın kodu, uygulama açık bir şekilde çağırmadığı sürece genellikle yürütülmez. Uygulamalar, kitaplık bağımlılığının gerektirdiğinden daha düşük bir Android sürümünde (kitaplık, temel uygulama işlevselliği için gerekli değilse) çalışmaya devam edebilir. Bunun için kitaplığı çağırmadan önce çalışma zamanı kontrolleri yapabilir. Bu nedenle, daha fazla kullanıcıya ulaşmak için kitaplığınızın minSdkVersion değerini, uygulamalara yerleştirilebilen ve mümkün olduğunda çağrılabilecek kadar düşük bir değere ayarlayın.

  • Yüksek bir minSdkVersion seçilmesi uygulamaların kitaplığı dahil etmesini engelleyebilir.

    AGP'de, uygulamadaki ve bağımlılıklarındaki manifest dosyalarını 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 olmasını zorunlu kılar.

  • Yüksek bir minSdkVersion seçilmesi, uygulama geliştiricilerinin manifest birleştirme güvenliği kontrollerini devre dışı bırakmasına neden olabilir 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 minSdkVersion değerine sahip kitaplıkları içermesini engellediğinden uygulama geliştiricileri, derleme hatalarını en aza indirmek için manifest birleştirmenin güvenlik kontrollerini devre dışı bırakabilir. Ancak bu durum, aşağı akışta gerçek uyumsuzluk sorunlarını ortaya çıkarabilir.

  • Bir kitaplık manifestinin, yayın alıcısı ya da kodunun otomatik olarak tetiklenmesini sağlayan başka bir mekanizma içerdiği özel durumlarda yüksek bir minSdkVersion seçilmesi gerekebilir.

    Bu gibi durumlarda, yüksek bir minSdkVersion seçilmesi kodun çalışabilmesini sağlar. Alternatif olarak, uygulamanın doğru kontrolleri yaptıktan sonra kitaplığı yürütmeye dahil edilebilmesi için otomatik davranışı devre dışı bırakabilirsiniz.

Uygulamalarda yerleştirmeye izin vermek için arayanlara çalışma zamanı kontrolleri yapmaları gerektiğini belirtmek üzere kitaplığınızdaki RequiresApi ek açıklamasını kullanın. Android Lint, denetimleri için RequiresApi bilgilerini kullanır. API kodunuzu ve API'lerinizi iyileştirmek amacıyla ek açıklamaları kullanma hakkında daha fazla kaynak için Ek açıklamalarla kod incelemesini iyileştirme bölümüne bakın.

AAR meta verilerini ayarlama

Android kitaplığı, Android Arşivi (AAR) dosyası biçiminde paketlenir. AAR meta verileri, AGP'nin kitaplıkları tüketmesine yardımcı olan özelliklerden oluşur. Kitaplığınız uyumlu olmayan bir yapılandırma tarafından tüketiliyorsa ve AAR meta verileri ayarlanmışsa kullanıcılara sorunu çözmelerine yardımcı olmak için bir hata mesajı sunulur.

minCompileSdk değeri seçin

4.1 sürümünden itibaren AGP, minCompileSdk sürümünü destekler. Tüketen projelerin kullanabileceği minimum compileSdk değerini belirtir. Kitaplığınız manifest girişleri veya daha yeni platform özelliklerinden yararlanan kaynaklar içeriyorsa bu değeri ayarlamanız gerekir.

minCompileSdk değeri, modül düzeyindeki build.gradle dosyasındaki 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 gibi öncelik verir:

  1. buildTypes{}

  2. productFlavors{}

  3. defaultConfig{}

minCompileSdk öğesinin hem defaultConfig{} hem de productFlavors{} içinde tanımlandığı önceki örnekte, productFlavors{} değerine öncelik verilir ve minCompileSdk 30 olarak ayarlanmıştır.

Gradle'ın kod ve kaynakları birleştirirken ayarlara nasıl öncelik verdiği hakkında daha fazla bilgi edinmek için Kaynak kümeleriyle derleme bölümüne bakın.

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. Sürüm 7.1'den itibaren AGP, uygulama ve dinamik özellik projelerine ek olarak kütüphane projeleri için test armatürleri oluşturabilmektedir.

Başkalarının kullanması için bir kitaplık yayınlarken API'niz için test donanımları oluşturmayı düşünün. Test armatürleri, modül düzeyindeki build.gradle dosyasında etkinleştirilebilir:

Modern

android {
  testFixtures {
    enable = true
  }
}

Kotlin

android {
  testFixtures {
    enable = true
  }
}

Test armatürlerini etkinleştirdiğinizde Gradle, otomatik olarak test armatürleri yazabileceğiniz bir src/testFixtures kaynak kümesi oluşturur.

Daha fazla bilgi için Gradle'ın test ekipmanlarını kullanma ile ilgili dokümanlarına bakın.