Anda di halaman 1dari 7

3.

32 Mengevaluasi penggunaan library pada aplikasi mobile\

4.32 Memodifikasi aplikasi mobile menggunakan library

Membuat library Android

Library Android secara struktural sama dengan modul aplikasi Android. Library ini dapat
mencakup semua yang diperlukan untuk mem-build aplikasi, termasuk kode sumber, file
resource, dan manifes Android. Namun, library Android tidak mengompilasi ke APK yang
berjalan di perangkat, tetapi mengompilasi ke file Android Archive (AAR) yang dapat Anda
gunakan sebagai dependensi untuk modul aplikasi Android. Tidak seperti file JAR, file AAR
dapat berisi resource Android dan file manifes, yang memungkinkan Anda mem-bundle
dalam resource bersama seperti tata letak dan resource yang dapat digambar selain class dan
metode Java.

Modul library berguna dalam situasi berikut:

 Ketika Anda mem-build beberapa aplikasi yang menggunakan beberapa komponen yang
sama, misalnya aktivitas, layanan, atau tata letak UI.
 Ketika Anda mem-build aplikasi yang ada dalam beberapa variasi APK, misalnya versi gratis
dan berbayar, Anda membutuhkan komponen inti yang sama dalam kedua versi.

Dalam kasus tersebut, Anda cukup memindahkan file yang ingin digunakan kembali ke
dalam modul library, kemudian menambahkan library sebagai dependensi untuk setiap modul
aplikasi. Halaman ini mengajarkan petunjuk untuk melakukan keduanya.

Membuat modul library

Untuk membuat modul library dalam project Anda, lakukan langkah berikut:

1. Klik File > New > New Module.


2. Di jendela Create New Module yang muncul, klik Android Library, lalu klik Next.
Terdapat juga opsi untuk membuat Java Library, yang mem-build file JAR tradisional.
Meskipun file JAR berguna untuk banyak project, terutama ketika Anda ingin membagikan
kode dengan platform lain, file ini tidak memungkinkan Anda untuk menyertakan resource
atau file manifes Android, yang sangat berguna untuk penggunaan kembali kode tersebut
dalam project Android. Jadi, panduan ini berfokus pada pembuatan library Android.
3. Beri nama library Anda dan pilih versi SDK minimum untuk kode dalam library, kemudian
klik Finish.

Setelah sinkronisasi project Gradle selesai, modul library muncul dalam panel Project di
sebelah kiri. Jika Anda tidak melihat folder modul baru, pastikan folder tersebut
menampilkan tampilan Android.
Mengonversi modul aplikasi menjadi modul library

Jika Anda memiliki modul aplikasi dengan semua kode yang ingin digunakan kembali, Anda
dapat mengubahnya menjadi modul library dengan cara berikut:

1. Buka file build.gradle level modul.


2. Hapus baris untuk applicationId. Hanya modul aplikasi Android yang dapat menentukan baris
ini.
3. Di bagian atas file, Anda akan melihat kode berikut:

apply plugin: 'com.android.application'

Ubah menjadi seperti berikut:

apply plugin: 'com.android.library'

4. Simpan file, lalu klik File > Sync Project with Gradle Files.

Selesai. Struktur keseluruhan modul tetap sama, tetapi sekarang beroperasi sebagai library
Android dan build kini akan membuat file AAR, bukan APK.

Ketika Anda ingin mem-build file AAR, pilih modul library dalam jendela Project, lalu
klik Build > Build APK.

Menambahkan library Anda sebagai dependensi

Untuk menggunakan kode library Android Anda dalam modul aplikasi lain, lakukan langkah
berikut:

1. Tambahkan library ke project Anda dengan salah satu cara berikut (jika Anda membuat
modul library dalam project yang sama, library sudah ada di sana dan Anda dapat melewati
langkah ini):
 Tambahkan file AAR (atau JAR) yang dikompilasi (library harus sudah di-build):
a. Klik File > New > New Module.
b. Klik Import. JAR/.AAR Package lalu klik Next.
c. Masukkan lokasi file AAR atau JAR yang dikompilasi, lalu klik Finish.
 Impor modul library ke project Anda (sumber library menjadi bagian dari project Anda):
a. Klik File > New > Import Module.
b. Masukkan lokasi direktori modul library, lalu klik Finish.
Modul library akan disalin ke project agar Anda dapat mengedit kode library. Jika Anda ingin
mengelola satu versi kode library, mungkin bukan library ini yang Anda inginkan dan Anda
harus mengimpor file AAR yang telah dikompilasi seperti dijelaskan di atas.
2. Pastikan library tercantum di bagian atas file settings.gradle Anda, seperti yang ditampilkan
di sini untuk library bernama "my-library-module":

include ':app', ':my-library-module'

3. Buka file build.gradle modul aplikasi, lalu tambahkan baris baru ke blok dependencies seperti
ditunjukkan dalam cuplikan berikut:

dependencies {
implementation project(":my-library-module")
}

4. Klik Sync Project with Gradle Files.

Dalam contoh di atas, konfigurasi implementation akan menambahkan library bernama my-
library-module sebagai dependensi build untuk seluruh modul aplikasi. Jika Anda ingin
library hanya untuk varian build tertentu, gunakan buildVariantNameImplementation,
bukan implementation. Misalnya, jika Anda ingin menyertakan library hanya dalam varian
produk "pro", kodenya akan seperti berikut:

productFlavors {
pro { ... }
}
dependencies {
proImplementation project(":my-library-module")
}

Semua kode dan resource dalam library Android kini dapat diakses oleh modul aplikasi
Anda, dan file AAR library akan di-bundle ke dalam APK pada waktu build.

Namun, jika ingin membagikan file AAR secara terpisah, Anda dapat menemukannya
dalam project-name/module-name/build/outputs/aar/ dan dapat membuatnya lagi dengan
mengklik Build > Make Project.

Catatan: Untuk mempelajari manajemen dependensi selengkapnya, baca Menggunakan


manajemen dependensi yang peka terhadap varian.

Memilih resource yang akan dijadikan publik

Semua resource dalam library secara default bersifat publik. Untuk menjadikan semua
resource agar bersifat pribadi secara implisit, Anda harus mendefinisikan setidaknya satu
atribut tertentu sebagai publik. Resource menyertakan semua file dalam direktori res/ Anda,
misalnya gambar. Untuk mencegah agar pengguna library Anda tidak mengakses resource
yang hanya dimaksudkan bagi penggunaan internal, Anda harus menggunakan mekanisme
pengelompokan pribadi otomatis ini dengan menyatakan satu atau beberapa resource publik.
Selain itu, Anda dapat menjadikan semua resource bersifat pribadi dengan menambahkan
tag <public /> kosong, yang tidak menandai apa pun sebagai publik dan menjadikan resource
lainnya (semua resource) bersifat pribadi.

Untuk mendeklarasikan resource publik, tambahkan deklarasi <public> ke


file public.xml library Anda. Jika belum menambahkan resource publik, Anda perlu membuat
file public.xml dalam direktori res/values/ pada library.

Kode contoh berikut ini membuat dua resource string publik dengan
nama mylib_app_name dan mylib_public_string.

<resources>
<public name="mylib_app_name" type="string"/>
<public name="mylib_public_string" type="string"/>
</resources>

Anda harus menjadikan semua resource yang Anda inginkan bersifat publik agar tetap terlihat
oleh developer yang menggunakan library Anda.

Menjadikan atribut bersifat pribadi secara implisit tidak hanya mencegah pengguna library
mendapat saran penyelesaian kode dari resource library internal, tetapi juga memungkinkan
Anda mengganti nama atau menghapus resource pribadi tanpa memutus klien library Anda.
Resource pribadi difilter dari penyelesaian kode, dan Lint akan memperingatkan Anda ketika
mencoba mereferensikan resource pribadi.

Saat mem-build library, plugin Android Gradle mendapatkan definisi resource publik dan
mengekstraknya ke dalam file public.txt, yang kemudian dikemas dalam file AAR.

Pertimbangan pengembangan untuk modul library

Karena Anda mengembangkan modul library dan aplikasi dependen, harap pahami perilaku
dan batasan berikut.

Setelah Anda menambahkan referensi untuk modul library ke modul aplikasi Android, Anda
dapat menyetel prioritas relatifnya. Pada waktu proses build, library akan digabungkan
dengan aplikasi satu per satu, mulai dari prioritas paling rendah ke yang paling tinggi.

 Konflik penggabungan resource


Fitur build akan menggabungkan resource dari modul library bersama resource dari modul
aplikasi dependen. Jika ID resource yang diberikan telah didefinisikan dalam kedua modul,
resource dari aplikasi akan digunakan.
Jika terjadi konflik di antara beberapa library AAR, resource dari library yang tercantum
pertama kali dalam daftar dependensi (ke arah atas blok dependencies) akan digunakan.
Untuk menghindari konflik resource pada ID resource umum, pertimbangkan penggunaan
awalan atau skema penamaan konsisten lainnya yang unik untuk modul (atau unik untuk
semua modul project).
 Dalam build multi-modul, dependensi JAR dianggap sebagai dependensi transitif
Ketika Anda menambahkan dependensi JAR ke project library yang menghasilkan AAR,
JAR akan diproses oleh modul library dan dikemas dengan AAR miliknya.
Namun, jika project Anda menyertakan modul library yang digunakan oleh modul aplikasi,
modul aplikasi akan memperlakukan dependensi JAR lokal library sebagai dependensi
transitif. Dalam hal ini, JAR lokal diproses oleh modul aplikasi yang menggunakannya,
bukan oleh modul library. Cara ini berguna untuk mempercepat build bertahap yang
disebabkan karena perubahan pada kode modul library.
Setiap konflik resource Java yang disebabkan oleh dependensi JAR lokal harus diselesaikan
dalam modul aplikasi yang menggunakan library.
 Modul library dapat bergantung pada library JAR eksternal
Anda dapat mengembangkan modul library yang bergantung pada library eksternal.
(misalnya, library eksternal Maps). Dalam hal ini, aplikasi dependen harus mem-build untuk
target yang menyertakan library eksternal (misalnya, Add-on API Google). Perlu diketahui
juga bahwa kedua modul library dan aplikasi dependen harus menyatakan library eksternal di
file manifesnya, dalam elemen <uses-library>.
 minSdkVersion modul aplikasi harus sama dengan atau lebih besar dari versi yang
didefinisikan oleh library
Library dikompilasi sebagai bagian dari modul aplikasi dependen sehingga API yang
digunakan dalam modul library harus kompatibel dengan versi platform yang didukung oleh
modul aplikasi.
 Setiap modul library membuat class R sendiri
Jika Anda mem-build modul aplikasi dependen, modul library akan dikompilasi ke dalam file
AAR, kemudian ditambahkan ke modul aplikasi. Oleh karena itu, setiap library memiliki
class R sendiri yang diberi nama sesuai dengan nama paket library. Class R yang dihasilkan
dari modul utama dan modul library dibuat dalam semua paket yang dibutuhkan, termasuk
paket modul utama dan paket library.
 Modul library dapat menyertakan file konfigurasi ProGuard sendiri
Jika Anda memiliki project library yang digunakan untuk mem-build dan menerbitkan AAR,
Anda dapat menambahkan file konfigurasi ProGuard ke konfigurasi build library dan plugin
Android Gradle akan menerapkan aturan ProGuard yang telah ditentukan. Fitur build akan
menyematkan file ini dalam file AAR yang dihasilkan untuk modul library. Jika Anda
menambahkan library ke modul aplikasi, file ProGuard library akan ditambahkan ke file
konfigurasi ProGuard (proguard.txt) pada modul aplikasi.
Dengan menyematkan file ProGuard dalam modul library, berarti Anda memastikan bahwa
modul aplikasi yang bergantung pada library tidak harus mengupdate file ProGuard-nya
secara manual agar dapat menggunakan library Anda. Jika ProGuard dijalankan pada modul
aplikasi Android, ProGuard akan menggunakan direktif dari modul aplikasi dan library
sehingga Anda tidak perlu menjalankan ProGuard pada library itu sendiri.
Untuk menambahkan aturan ProGuard ke project library, Anda harus menentukan nama file
dengan properti consumerProguardFiles, di dalam blok defaultConfig file build.gradle library
Anda. Misalnya, cuplikan berikut akan menyetel lib-proguard-rules.txt sebagai file
konfigurasi ProGuard library:

android {
defaultConfig {
consumerProguardFiles 'lib-proguard-rules.txt'
}
...
}

Namun, jika modul library Anda adalah bagian dari build multi-modul yang mengompilasi
menjadi APK dan tidak menghasilkan AAR, Anda harus menjalankan ProGuard hanya pada
modul aplikasi yang menggunakan library. Untuk mempelajari lebih lanjut aturan ProGuard
dan penggunaannya, baca menciutkan kode dan resource Anda.
 Menguji modul library sama dengan menguji aplikasi
Perbedaan utamanya adalah library dan dependensinya secara otomatis disertakan sebagai
dependensi dari APK uji. Hal ini berarti APK uji tidak hanya menyertakan kode sendiri,
tetapi juga AAR library dan semua dependensinya. Karena tidak ada "aplikasi yang sedang
diuji", tugas androidTest hanya akan menginstal (dan meng-uninstal) APK pengujian.
Saat menggabungkan beberapa file manifes, Gradle akan mengikuti urutan prioritas default
dan menggabungkan manifes library ke manifes utama APK pengujian.

Anatomi file AAR

Ekstensi file untuk file AAR .aar, lalu jenis artefak Maven juga harus berupa aar. Filenya
sendiri berupa file zip yang berisi entri wajib berikut:

 /AndroidManifest.xml
 /classes.jar
 /res/
 /R.txt
 /public.txt

Sebagai tambahan, file AAR dapat menyertakan satu atau beberapa entri opsional berikut:

 /assets/
 /libs/name.jar
 /jni/abi_name/name.so (dengan abi_name adalah salah satu dari ABI yang
didukung Android)
 /proguard.txt
 /lint.jar
 /api.jar

Anda mungkin juga menyukai