Foundation
Komponen Foundation atau fondasi, menyediakan fungsionalitas lintas sektor seperti kompatibilitas dengan versi sebelumnya, pengujian, dan dukungan bahasa Kotlin. Berikut bagian dari komponen fondasi:
Android KTX
Android KTX? Pernahkah kalian mendengarnya? Jika Anda menggunakan bahasa Kotlin, mungkin Android KTX familiar di telinga Anda.
Dengan menggunakan Android KTX, Anda bisa menulis kode Kotlin menjadi lebih ringkas dan idiomatis. Android KTX merupakan sekumpulan ekstensi Kotlin yang terdapat di dalam Android Jetpack.
Bagaimana menggunakannya? Ekstensi ini memanfaatkan beberapa fitur bahasa Kotlin yakni:
- Extension function
- Extension properties
- Lambdas
- Named parameters
- Parameter & default values
Contohnya, ketika Anda menggunakan SharedPreferences Anda perlu membuat sebuah editor terlebih dahulu sebelum Anda memodifikasi data Preferences tersebut. Anda juga harus melakukan apply atau commit untuk memperbarui perubahan saat proses editing sudah dilakukan, contohnya seperti ini:
sharedPreferences
.edit() // Membuat editor
.putBoolean("key", value)
.apply() // menyimpan data secara
asynchronous
Penggunaan Kotlin Lambdas sangat cocok untuk kasus di atas.
Kotlin Lamdas memungkinkan Anda untuk melakukan pendekatan yang lebih ringkas dengan mengirim blok kode untuk dieksekusi setelah editor dibuat, membiarkan kode tersebut diesksekusi dan membiarkan API SharedPreferences melakukan perubahan secara otomatis.
Berikut adalah contoh dari salah satu fungsi Android KTX Core, SharedPreferences.edit yang mana berguna untuk menambahkan fungsi edit ke SharedPrefereces. Fungsi tersebut menggunakan boolean flag (opsional) sebagai argumen pertama dan menunjukan apakah Anda akan melakukan atau menerapkan perubahannya atau tidak. Fungsi ini juga menerima perintah untuk melakukan editing.
Berikut adalah contoh penerapan SharedPreferences dalam bentuk lambda:
// SharedPreferences.edit extension function signature from Android KTX - Core
// inline fun SharedPreferences.edit(
// commit: Boolean = false,
// action: SharedPreferences.Editor.() -> Unit)
// Commit a new value asynchronously
sharedPreferences.edit { putBoolean("key", value) }
// Commit a new value synchronously
sharedPreferences.edit(commit = true) { putBoolean("key", value) }
Perhatikan kode di atas. Lebih ringkas bukan? Anda tidak perlu mengulang-ulang penulisan apply pada kode, bahkan hilang. Anda juga dapat memilih apakah akan melakukan atau menerapkan perubahan, atau tidak.
Tindakan lambda sendiri merupakan fungsi dari ekstensi anonim dalam SharedPrefereces.Editor yang mengembalikan Unit, seperti kode di atas. Inilah sebabnya di dalam blok kode, Anda dapat melakukan aksi secara langsung di SharedPreferences.Editor.
Ada banyak contoh lainnya dalam penggunaan Android KTX ini. Anda bisa kunjungi tautan ini untuk mempelajarinya lebih dalam.
AppCompat
AppCompat merupakan library yang menyediakan fitur tertentu dan dapat dimasukkan ke dalam aplikasi Anda secara independen. Jika Anda perhatikan, secara otomatis library ini sudah ada di dalam proyek Android Anda.
Tentu tanpa adanya AppCompat, Anda akan kesulitan dalam membuat aplikasi Android. Lalu apa saja contoh dari AppCompat? Contohnya yaitu library yang mendukung implementasi Action Bar. Di dalam library ini juga mendukung untuk Material Design. Anda bisa menambahkan kode berikut di build.gradle untuk menggunakan library AppCompat:
- implementation 'androidx.appcompat:appcompat:1.1.0'
Di dalam library AppCompat juga terdapat:
- ActionBar - mendukung implementasi Action Bar UI Pattern.
- AppCompatActivity - mampu menambahkan Activity dengan Action Bar di dalamnya dan dapat digunakan sebagai kelas dasar dari Activity.
- AppCompatDialog - mampu menambahkan kelas Dialog yang dapat digunakan sebagai kelas dasar untuk Dialog dengan tema AppCompat.
- SharedActionProvider - mempunyai dukungan perintah berbagi yang berstandar seperti mengirim email atau membagikan kiriman ke aplikasi sosial media.
Auto
Pernahkah kalian melihat sebuah mobil yang ada smart phone di dalamnya? Seperti gambar di bawah ini:
Auto merupakan komponen yang mampu membantu Anda dalam mengembangkan aplikasi untuk Android Auto.
Android Auto memungkinkan pengguna menikmati versi aplikasi yang dioptimalkan baik di ponsel mereka maupun dengan menghubungkan ponsel mereka ke kendaraan, tentunya kendaraan yang kompatibel untuk menampilkan langsung screen di konsol. Anda bisa mempelajari lebih dalam tentang Android Auto di sini.
Benchmark
Dengan menggunakan library Benchmark, Anda dapat secara cepat membandingkan kode Kotlin atau Java dari dalam Android Studio.
Library ini menangani warmup, mengukur kinerja kode Anda dan menampilkan hasil bechmarking ke console di dalam Android Studio.
Contohnya untuk melakukan scrolling RecyclerView, melihat performa dari sebuah query database dan lain-lain. Jika Anda belum mengimplementasikan AndroidX dalam proyek yang ingin Anda Benchmark, lihatlah tautan ini untuk melakukan migrasi ke AndroidX.
Anda juga bisa mempelajari bagaimana cara melakukan bechmark dengan mengunjungi tautan ini.
Multidex
Ketika aplikasi dan library yang ada di dalam proyek Android Studio melebihi 65.536 method, Anda akan menjumpai kegagalan sewaktu proses build yang menunjukkan aplikasi Anda telah mencapai batas arsitektur Android build:
- trouble writing output:
- Too many field references: 131000; max is 65536.
- You may try using --multi-dex option.
Versi yang lebih lama dari sistem build melaporkan kesalahan yang berbeda, namun indikasi masalahnya tetap sama:
- Conversion to Dalvik format failed:
- Unable to execute dex: method ID not in [0, 0xffff]: 65536
Kedua kondisi kesalahan ini menampilkan nomor umum: 65536. Nomor ini mewakili total maksimal referensi yang dapat dipanggil oleh kode dalam satuan file bytecode Dalvik Executable (DEX). Anda pasti penasaran bagaimana cara mengatasi eror tersebut kan?
Nah, Anda bisa mengaktifkan konfigurasi aplikasi yang dikenal sebagai Multidex, yang memungkinkan aplikasi Anda untuk membangun dan membaca beberapa berkas DEX.
Lalu bagaimana penerapannya? Lihat pada kode berikut pada build.gradle(module:App):
- android {
- defaultConfig {
- ...
- minSdkVersion 21
- targetSdkVersion 28
- multiDexEnabled true
- }
- ...
- }
Jika Anda menggunakan minSdkVersion di 21 atau ke atas, Anda hanya perlu mengatur multiDexEnable di posisi true. Mudah kan? Anda bisa mempelajari lebih dalam tentang MultiDex atau mengetahui penggunaan MultiDex di minSdkVersion 20 ke bawah, dengan mengunjungi tautan ini.
Security
Library Security, merupakan bagian dari Android Jetpack yang menyediakan best practice dalam mengimplementasi keamanan untuk membaca dan menulis data saat keadaan standby, serta pembuatan dan verifikasi sandi. Library Security menggunakan pola builder untuk memberikan pengaturan default yang aman. Tingkat keamanan yang diunggulkan adalah:
- Kekuatan keamaan, menyeimbangkan enkripsi terbaik dan kinerja yang baik. Tingkat keamanan ini sesuai untuk aplikasi konsumen, seperti aplikasi perbankan dan aplikasi chatting.
- Keamanan maksimum. Tingkat keamanan ini sesuai untuk aplikasi yang memerlukan hardware-backed keystore dan keberadaan pengguna, untuk menyediakan akses utama.
Key Management
Library Security menggunakan 2 cara untuk key management:
- Keyset: berisi satu atau lebih kunci untuk mengenkripsi sebuah berkas atau data shared preference. Keyset itu sendiri disimpan di SharedPreferences.
- Master Key: berisi semua engkripsi dari Keyset. Master Key disimpan menggunakan sistem Android keystore.
Bukalah tautan ini untuk mengetahui bagaimana melakukan konfigurasi keamanan yang disarankan, serta cara membaca dan menulis data yang terenkripsi dan disimpan dalam file atau shared preference yang mudah dan aman.
Test
Menguji aplikasi Anda adalah bagian integral dari proses pengembangan aplikasi. Dengan menjalankan tes terhadap aplikasi secara konsisten, Anda dapat memverifikasi kebenaran aplikasi Anda, perilaku fungsional, dan kegunaan sebelum Anda merilisnya ke publik. Pengujian juga memberi Anda keuntungan berikut:
- Ketika terjadi kesalahan akan semakin cepat mendapatkan feedback.
- Deteksi kegagalan sedini mungkin dalam siklus pengembangan aplikasi.
- Refactoring kode yang lebih aman, memungkinkan Anda mengoptimalkan kode tanpa khawatir tentang regressions.
- Kecepatan pengembangan aplikasi bisa dilakukan dengan stabil, serta membantu Anda meminimalkan hal teknis yang tertunda.
Fundamentals of testing - https://developer.android.com/images/training/testing/testing-workflow.png
Anda sudah mempelajari tentang Test di modul sebelumnya, Anda juga bisa baca tautan ini untuk mengenali lebih dalam tentang pengujian.
TV
Dengan ini, Anda dapat membangun aplikasi yang memungkinkan pengguna mampu merasakan konten immersive di layar yang lebih lebar.
Pengguna dapat menemukan rekomendasi konten Anda di layar beranda, dan library leanback yang menyediakan API untuk membantu Anda mempunyai pengalaman yang hebat dalam membangun aplikasi untuk kendali jarak jauh. Penasaran? Bukalah tautan berikut ini untuk mempelajari lebih dalam.
Wear OS by Google
Komponen terakhir dari Jetpack Fundation adalah Wear OS by Google. Komponen yang membantu mengembangkan aplikasi untuk Wear (Jam Pintar). Jam tangan pintar yang membuat Anda terhubung dengan kesehatan Anda, info yang dibutuhkan dari orang-orang di sekitar Anda, dan yang paling keren adalah Google Assistant. Silakan buka tautan ini untuk mempelajari bagaimana membuat aplikasi untuk Wear OS by Google.