Android adalah tumpukan perangkat lunak sumber terbuka berbasis Linux yang dibuat untuk berbagai perangkat dan faktor bentuk. Gambar 1 menunjukkan komponen utama platform Android.
![Tumpukan software Android](https://developer.android.com/static/guide/platform/images/android-stack_2x.png?authuser=6&hl=id)
Gambar 1. Tumpukan software Android.
Kernel Linux
Fondasi platform Android adalah kernel Linux. Sebagai contoh, Android Runtime (ART) bergantung pada Linux kernel untuk fungsionalitas dasar seperti threading dan pengelolaan memori tingkat rendah.
Menggunakan kernel Linux memungkinkan Android memanfaatkan fitur keamanan utama dan memungkinkan produsen perangkat mengembangkan driver hardware untuk kernel yang cukup dikenal.
Lapisan abstraksi hardware (HAL)
hardware abstraction layer (HAL) menyediakan antarmuka standar yang mengekspos kemampuan perangkat keras di perangkat ke API framework Java. HAL terdiri dari beberapa modul library, yang masing-masing mengimplementasikan antarmuka untuk jenis komponen hardware tertentu, seperti modul kamera atau Bluetooth. Jika API kerangka kerja melakukan panggilan untuk mengakses perangkat keras, sistem Android memuat modul pustaka untuk komponen perangkat keras tersebut.
runtime Android
Untuk perangkat yang menjalankan Android versi 5.0 (API level 21) atau lebih tinggi, setiap aplikasi
menjalankan proses masing-masing dengan instance Android Runtime
(ART) masing-masing. ART ditulis guna menjalankan beberapa virtual machine pada perangkat bermemori rendah
dengan mengeksekusi file format Dalvik Executable (DEX), yaitu format bytecode yang dirancang khusus untuk
Android yang dioptimalkan untuk footprint memori minimal. Alat build, seperti
d8
, mengompilasi
sumber Java ke dalam bytecode DEX, yang dapat berjalan di platform Android.
Beberapa fitur utama ART mencakup:
- Kompilasi mendahului waktu (AOT) dan tepat waktu (JIT)
- Pengumpulan sampah (GC) yang dioptimalkan
- Di Android 9 (API level 28) dan yang lebih tinggi, konversi file DEX paket aplikasi ke kode mesin yang lebih ringkas
- Dukungan debugging yang lebih baik, mencakup profiler penyampelan terpisah, pengecualian diagnostik mendetail dan laporan kerusakan dan kemampuan untuk mengatur titik pantau guna memantau bidang tertentu.
Sebelum ke Android versi 5.0 (API level 21), Dalvik adalah waktu proses Android. Jika aplikasi Anda berjalan dengan baik pada ART, aplikasi juga dapat berfungsi pada Dalvik, tetapi mungkin tidak sebaliknya.
Android juga menyertakan rangkaian library waktu proses inti yang menyediakan sebagian besar fungsionalitas bahasa pemrograman Java, termasuk beberapa fitur bahasa Java 8 yang digunakan oleh API framework Java.
Library C/C++ native
Banyak komponen dan layanan sistem Android inti, seperti ART dan HAL, di-build dari kode native yang memerlukan library native yang ditulis dalam C dan C++. Platform Android menyediakan API framework Java untuk mengekspos fungsi beberapa library native ini ke aplikasi. Misalnya, Anda bisa mengakses OpenGL ES melalui Java OpenGL API framework Android guna menambahkan dukungan untuk menggambar dan memanipulasi grafik 2D dan 3D pada aplikasi Anda.
Jika Anda mengembangkan aplikasi yang memerlukan kode C atau C++, Anda dapat menggunakan Android NDK untuk mengakses beberapa library platform native langsung dari kode native Anda.
framework Java API
Keseluruhan rangkaian fitur pada Android OS tersedia untuk Anda melalui API yang ditulis dalam bahasa Java. API ini membentuk elemen dasar yang harus Anda buat aplikasi Android dengan menyederhanakan penggunaan ulang inti, komponen dan layanan sistem modular, yang mencakup berikut ini:
- Sistem tampilan yang kaya dan diperluas, dapat Anda gunakan untuk membuat UI aplikasi, termasuk daftar, petak, kotak teks, tombol, dan bahkan browser web yang dapat disematkan
- Pengelola resource, yang memberikan akses ke resource non-kode seperti string, grafik, dan file tata letak yang dilokalkan
- Pengelola notifikasi yang memungkinkan semua aplikasi menampilkan notifikasi kustom di status bar
- Pengelola aktivitas yang mengelola siklus proses aplikasi dan memberikan data navigasi sebelumnya yang umum
- Penyedia konten yang memungkinkan aplikasi mengakses data dari aplikasi lain, seperti aplikasi Kontak, atau membagikan datanya sendiri
Developer memiliki akses penuh ke API framework yang digunakan oleh aplikasi sistem Android.
Aplikasi sistem
Android dilengkapi dengan serangkaian aplikasi inti untuk email, olah pesan SMS, kalender, browsing internet, kontak, dll. Aplikasi yang disertai dengan platform tidak memiliki status khusus pada aplikasi yang pengguna ingin instal. Jadi, aplikasi pihak ketiga dapat menjadi browser web default, pesan SMS, atau bahkan keyboard default pengguna. Beberapa pengecualian berlaku, seperti aplikasi Setelan sistem.
Aplikasi sistem berfungsi sebagai aplikasi untuk pengguna dan untuk memberikan kemampuan utama yang dapat diakses oleh developer dari aplikasi mereka sendiri. Misalnya, jika Anda ingin aplikasi mengirimkan pesan SMS, Anda tidak perlu mem-build fungsi tersebut sendiri. Anda dapat memanggil aplikasi SMS yang telah diinstal untuk mengirim pesan kepada penerima yang Anda tentukan.