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:
buildTypes{}
productFlavors{}
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.