Menyiapkan library untuk dirilis

Halaman ini menjelaskan properti dan opsi yang diperlukan untuk menyiapkan project library Android untuk dipublikasikan menggunakan plugin Android Gradle (AGP). Meskipun Anda menetapkan beberapa properti ini di awal pembuatan library, tinjau panduan berikut untuk mengoptimalkan setelan Anda.

Memilih namespace

Library Android perlu mendeklarasikan namespace agar dapat membuat class R yang unik saat resource dikompilasi. Namespace ini harus cocok dengan paket class root library untuk menghindari kebingungan saat pengguna mengimpor class reguler dari library dan class R-nya.

Mulai dari AGP 7.0, Anda dapat menetapkan namespace dalam file build.gradle aplikasi, seperti ditunjukkan dalam contoh kode berikut:

Groovy

android {
  namespace = 'com.example.library'
}

Kotlin

android {
  namespace = "com.example.library"
}

Namespace ini merupakan properti untuk developer dari library. Ini tidak terkait dengan identitas aplikasi, yang ditetapkan menggunakan properti applicationId.

Pada versi AGP sebelumnya, properti applicationId (untuk aplikasi) dan properti namespace (untuk library) dapat ditetapkan menggunakan atribut package manifes, yang menyebabkan kebingungan.

Pilih nilai minSdkVersion

Memilih minSdkVersion untuk library Anda merupakan aspek penting dalam memublikasikan library. minSdkVersion harus mencerminkan versi minimum Android yang dapat didukung kode Anda.

Perhatikan pertimbangan berikut saat memilih minSdkVersion:

  • Memilih minSdkVersion yang rendah umumnya memungkinkan distribusi library Anda yang lebih luas.

    Kode library umumnya tidak dieksekusi kecuali aplikasi memanggilnya secara eksplisit. Aplikasi masih dapat berjalan pada versi Android yang lebih rendah daripada yang diperlukan oleh dependensi library, jika library tidak penting untuk fungsi aplikasi inti, dengan melakukan pemeriksaan runtime sebelum memanggil library. Oleh karena itu, setel minSdkVersion library Anda cukup rendah sehingga dapat disematkan di aplikasi, dan dipanggil jika memungkinkan, untuk membantu menjangkau lebih banyak pengguna.

  • Memilih minSdkVersion yang tinggi dapat mencegah aplikasi menyertakan library.

    Penggabung manifes, yang merupakan langkah di AGP yang menggabungkan file manifes dari aplikasi dan dari dependensinya, memastikan bahwa tidak ada dependensi yang memiliki minSdkVersion lebih tinggi daripada aplikasi.

  • Memilih minSdkVersion yang tinggi dapat meminta developer aplikasi untuk menonaktifkan pemeriksaan keamanan penggabungan manifes, yang nantinya akan menyebabkan masalah dalam proses build.

    Karena penggabungan manifes mencegah project aplikasi menyertakan library dengan minSdkVersion yang lebih tinggi daripada aplikasi itu sendiri, developer aplikasi dapat menonaktifkan pemeriksaan keamanan penggabungan manifes untuk meminimalkan error build. Namun, hal ini berisiko menimbulkan masalah inkompatibilitas benar (true) di downstream.

  • Memilih minSdkVersion yang tinggi mungkin diperlukan dalam kasus khusus saat manifes library menyertakan penerima siaran atau beberapa mekanisme lain yang memicu kodenya secara otomatis.

    Dalam kasus ini, memilih minSdkVersion yang tinggi akan memastikan kode dapat berjalan. Atau, Anda dapat menonaktifkan perilaku otomatis sehingga aplikasi dapat memilih untuk menjalankan library setelah melakukan pemeriksaan yang tepat.

Untuk mengizinkan penyematan dalam aplikasi, gunakan anotasi RequiresApi di library Anda untuk menunjukkan kepada pemanggilnya bahwa mereka perlu melakukan pemeriksaan runtime. Android Lint menggunakan informasi RequiresApi untuk pemeriksaannya. Untuk mengetahui referensi selengkapnya tentang penggunaan anotasi guna meningkatkan kode API dan API, lihat Meningkatkan pemeriksaan kode dengan anotasi.

Menyiapkan metadata AAR

Library Android dikemas dalam bentuk file Android Archive (AAR). Metadata AAR terdiri dari properti yang membantu AGP menggunakan library. Jika library Anda digunakan oleh konfigurasi yang tidak kompatibel, dan metadata AAR disiapkan, pengguna akan diberi pesan error untuk membantu mereka menyelesaikan masalah.

Memilih nilai minCompileSdk

Mulai dari versi 4.1, AGP mendukung minCompileSdk. Hal ini menunjukkan compileSdk minimum yang dapat digunakan project. Jika library Anda berisi entri manifes, atau referensi yang menggunakan atribut platform yang lebih baru, Anda perlu menetapkan nilai ini.

Nilai minCompileSdk dapat disiapkan dalam blok defaultConfig{}, productFlavors{}, dan buildTypes{} dalam file build.gradle level modul:

Groovy

android {
  defaultConfig {
    aarMetadata {
      minCompileSdk = 29
    }
  }
  productFlavors {
    foo {
      ...
      aarMetadata {
        minCompileSdk = 30
      }
    }
  }
}

Kotlin

android {
  defaultConfig {
    aarMetadata {
      minCompileSdk = 29
    }
  }
  productFlavors {
    register("foo") {
      ...
      aarMetadata {
        minCompileSdk = 30
      }
    }
  }
}

Jika Anda menyiapkan minCompileSdk di beberapa tempat, Gradle akan memprioritaskan lokasi setelan sebagai berikut selama proses build:

  1. buildTypes{}

  2. productFlavors{}

  3. defaultConfig{}

Pada contoh sebelumnya, dengan minCompileSdk ditentukan di defaultConfig{} dan productFlavors{}, productFlavors{} diprioritaskan dan minCompileSdk ditetapkan ke 30.

Untuk mempelajari lebih lanjut cara Gradle memprioritaskan setelan saat menggabungkan kode dan referensi, lihat Mem-build dengan set sumber.

Mengaktifkan perlengkapan pengujian

Peralatan pengujian biasa digunakan untuk menyiapkan kode yang sedang diuji, atau untuk memfasilitasi pengujian komponen. Mulai versi 7.1, AGP dapat membuat perlengkapan pengujian untuk project library selain aplikasi dan project fitur dinamis.

Saat memublikasikan library untuk digunakan orang lain, pertimbangkan untuk membuat perlengkapan pengujian untuk API Anda. Peralatan pengujian dapat diaktifkan di file build.gradle level modul:

Groovy

android {
  testFixtures {
    enable = true
  }
}

Kotlin

android {
  testFixtures {
    enable = true
  }
}

Saat Anda mengaktifkan perlengkapan pengujian, Gradle secara otomatis membuat set sumber src/testFixtures tempat Anda dapat menulis perlengkapan pengujian.

Untuk mengetahui informasi selengkapnya, lihat dokumentasi Gradle tentang menggunakan peralatan pengujian.