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

Bu sayfada, Android kitaplığı projenizi Android Gradle eklentisi (AGP) kullanarak 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 kılavuzu inceleyin.

Ad alanı seçme

Android kitaplıklarının, kaynakları derlenirken benzersiz bir R sınıfı oluşturabilmeleri için ad alanı tanımlamaları gerekir. Kullanıcılar kitaplıktan ve kitaplığın R sınıfından normal sınıfları içe aktarırken karışıklık yaşanmaması için 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ı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 (uygulama için) hem de namespace özelliği (kitaplık için) manifest'in 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 parçası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 kitleye dağıtılmasını sağlar.

    Bir kitaplığın kodu, uygulama tarafından açıkça çağrılmadığı sürece genellikle yürütülmez. Uygulama, kitaplığı çağırmadan önce çalışma zamanı kontrolleri yaparak kitaplık bağımlılığının gerektirdiğinden daha düşük bir Android sürümünde çalışmaya devam edebilir (kitaplık, uygulamanın temel işlevi için gerekli değilse). Bu nedenle, kitaplığınızın minSdkVersion değerini, uygulamalara yerleştirilebilecek ve mümkün olduğunda çağrılabilecek kadar düşük bir değere ayarlayarak daha fazla kullanıcıya ulaşabilirsiniz.

  • Yüksek bir minSdkVersion seçmek, uygulamaların kitaplığı eklemesini engelleyebilir.

    Uygulamanın ve bağımlılıklarının manifest dosyalarını birleştiren AGP'deki bir adım olan manifest birleştirici, hiçbir bağımlılığın uygulamadan daha yüksek bir minSdkVersion değerine sahip olmamasını zorunlu kılar.

  • Yüksek bir minSdkVersion seçmek, uygulama geliştiricilerin manifest birleştirme güvenlik kontrollerini devre dışı bırakmasına neden olabilir. Bu da derleme sürecinin ilerleyen aşamalarında sorunlara yol açabilir.

    Manifest birleştirici, uygulama projelerinin uygulamadan daha yüksek minSdkVersion değerine sahip kitaplıklar içermesini engellediğinden uygulama geliştiriciler, derleme hatalarını en aza indirmek için manifest birleştiricinin güvenlik kontrollerini devre dışı bırakabilir. Ancak bu durum, ileride gerçek uyumsuzluk sorunlarına yol açabilir.

  • Yüksek bir minSdkVersion seçmek, bir kitaplığın manifest dosyasında yayın alıcısı veya kodunun otomatik olarak tetiklendiği başka bir mekanizma bulunan özel durumlarda gerekli olabilir.

    Bu gibi 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ığı 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 çağrı yapanlara çalışma zamanı kontrolleri yapmaları gerektiğini belirtin. Android Lint, denetimleri için 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çıklamalarla kod incelemesini iyileştirme başlıklı makaleyi inceleyin.

AAR meta verilerini ayarlama

Android kitaplığı, 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 özelliklerini kullanan manifest girişleri veya kaynaklar varsa bu değeri ayarlamanız gerekir.

minCompileSdk değeri, modül düzeyindeki build.gradle dosyasında bulunan 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 değerini 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 parametresinin hem defaultConfig{} hem de productFlavors{} içinde tanımlandığı yukarıdaki örnekte, productFlavors{} önceliklidir ve minCompileSdk 30 olarak ayarlanır.

Gradle'ın kod ve kaynakları birleştirirken ayarları nasıl önceliklendirdiği hakkında daha fazla bilgi edinmek için Kaynak gruplarıyla derleme başlıklı makaleyi inceleyin.

Test donanımlarını etkinleştirme

Test donanımları genellikle test edilen kodu ayarlamak veya bir bileşenin testlerini kolaylaştırmak için 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 donanımları oluşturabilir.

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 donanımları, modül düzeyindeki build.gradle dosyasında etkinleştirilebilir:

Modern

android {
  testFixtures {
    enable = true
  }
}

Kotlin

android {
  testFixtures {
    enable = true
  }
}

Test donanımlarını etkinleştirdiğinizde Gradle, test donanımları yazabileceğiniz bir src/testFixtures kaynak grubu oluşturur.

Daha fazla bilgi için Gradle'ın test donanımlarını kullanma ile ilgili belgelerine bakın.