Arsitektur sistem Android berisi komponen-komponen berikut:
- Kerangka aplikasi . Kerangka kerja aplikasi paling sering digunakan oleh pengembang aplikasi. Sebagai pengembang perangkat keras, Anda harus mengetahui API pengembang karena banyak yang memetakan langsung ke antarmuka HAL yang mendasarinya dan dapat memberikan informasi bermanfaat tentang pengimplementasian driver.
- IPC pengikat . Mekanisme Binder Inter-Process Communication (IPC) memungkinkan kerangka kerja aplikasi untuk melintasi batas proses dan memanggil kode layanan sistem Android. Ini memungkinkan API kerangka kerja tingkat tinggi untuk berinteraksi dengan layanan sistem Android. Pada tingkat kerangka kerja aplikasi, komunikasi ini disembunyikan dari pengembang dan semuanya tampak "berfungsi".
- Layanan sistem . Layanan sistem adalah komponen modular dan terfokus seperti Window Manager, Search Service, atau Notification Manager. Fungsionalitas yang diekspos oleh API kerangka aplikasi berkomunikasi dengan layanan sistem untuk mengakses perangkat keras yang mendasarinya. Android mencakup dua kelompok layanan: sistem (seperti Window Manager dan Notification Manager) dan media (layanan yang terlibat dalam media pemutaran dan perekaman).
- Lapisan abstraksi perangkat keras (HAL) . HAL mendefinisikan antarmuka standar untuk diimplementasikan oleh vendor perangkat keras, yang memungkinkan Android menjadi agnostik tentang implementasi driver tingkat yang lebih rendah. Menggunakan HAL memungkinkan Anda untuk mengimplementasikan fungsionalitas tanpa mempengaruhi atau memodifikasi sistem tingkat yang lebih tinggi. Implementasi HAL dikemas ke dalam modul dan dimuat oleh sistem Android pada waktu yang tepat. Untuk detailnya, lihat Hardware Abstraction Layer (HAL) .
- Kernel Linux . Mengembangkan driver perangkat Anda mirip dengan mengembangkan driver perangkat Linux pada umumnya. Android menggunakan versi kernel Linux dengan beberapa tambahan khusus seperti Low Memory Killer (sistem manajemen memori yang lebih agresif dalam melestarikan memori), wake locks (layanan sistem
PowerManager
), driver Binder IPC, dan fitur penting lainnya. untuk platform tertanam seluler. Penambahan ini terutama untuk fungsionalitas sistem dan tidak memengaruhi pengembangan driver. Anda dapat menggunakan versi kernel apa pun asalkan mendukung fitur yang diperlukan (seperti driver binder). Namun, kami menyarankan untuk menggunakan versi terbaru dari kernel Android. Untuk detailnya, lihat Membuat Kernel .
Bahasa definisi antarmuka HAL (AIDL/HIDL)
Android 8.0 mengarsitektur ulang kerangka kerja OS Android (dalam proyek yang dikenal sebagai Treble ) untuk mempermudah, lebih cepat, dan lebih murah bagi produsen untuk memperbarui perangkat ke versi baru Android. Dalam arsitektur baru ini, bahasa definisi antarmuka HAL (HIDL, diucapkan "hide-l") menentukan antarmuka antara HAL dan penggunanya, memungkinkan kerangka kerja Android diganti tanpa membangun kembali HAL. Di Android 10, fitur HIDL dimasukkan ke dalam AIDL. Sejak itu, HIDL tidak digunakan lagi dan hanya digunakan oleh subsistem yang belum dikonversi ke AIDL.
Treble memisahkan implementasi vendor (khusus perangkat, perangkat lunak tingkat rendah yang ditulis oleh produsen silikon) dari kerangka kerja OS Android melalui antarmuka vendor baru. Vendor atau pembuat SOC membuat HAL sekali dan menempatkannya di partisi /vendor
pada perangkat; kerangka kerja, di partisinya sendiri, kemudian dapat diganti dengan pembaruan over-the-air (OTA) tanpa mengkompilasi ulang HAL.
Perbedaan antara arsitektur Android lama dan arsitektur berbasis IDL saat ini adalah dalam penggunaan antarmuka vendor:
- Di Android 7.x dan sebelumnya, tidak ada antarmuka vendor formal, jadi pembuat perangkat harus memperbarui sebagian besar kode Android untuk memindahkan perangkat ke versi Android yang lebih baru:
Gambar 2. Lingkungan pembaruan Android lawas - Di Android 8.0 dan yang lebih tinggi, antarmuka vendor baru yang stabil menyediakan akses ke bagian khusus perangkat keras Android, sehingga pembuat perangkat dapat memberikan rilis Android baru hanya dengan memperbarui kerangka kerja OS Android—tanpa perlu pekerjaan tambahan dari produsen silikon:
Gambar 3. Lingkungan pembaruan Android saat ini
Semua perangkat baru yang diluncurkan dengan Android 8.0 dan lebih tinggi dapat memanfaatkan arsitektur baru. Untuk memastikan kompatibilitas ke depan implementasi vendor, antarmuka vendor divalidasi oleh Vendor Test Suite (VTS) , yang analog dengan Compatibility Test Suite (CTS) . Anda dapat menggunakan VTS untuk mengotomatiskan pengujian kernel HAL dan OS di arsitektur Android lama dan saat ini.
Sumber daya arsitektur
Untuk detail tentang arsitektur Android, lihat bagian berikut:
- Jenis HAL . Menjelaskan binderized, passthrough, Same-Process (SP), dan HAL warisan.
- AIDL . Dokumentasi tentang AIDL, apakah digunakan secara umum atau sebagai antarmuka HAL.
- HIDL (Umum) . Berisi informasi umum tentang antarmuka antara HAL dan penggunanya.
- HIDL (C++) . Berisi detail untuk membuat implementasi C++ dari antarmuka HIDL.
- HIDL (Jawa) . Berisi detail tentang frontend Java untuk antarmuka HIDL.
- ConfigStore HAL . Menjelaskan API untuk mengakses item konfigurasi hanya baca yang digunakan untuk mengonfigurasi kerangka kerja Android.
- Hamparan Pohon Perangkat . Memberikan detail tentang penggunaan hamparan pohon perangkat (DTO) di Android.
- Vendor Native Development Kit (VNDK) . Menjelaskan set perpustakaan vendor-eksklusif untuk mengimplementasikan HAL vendor.
- Objek Antarmuka Penjual (VINTF) . Menjelaskan objek yang mengumpulkan informasi relevan tentang perangkat dan membuat informasi tersebut tersedia melalui API yang dapat dimintai keterangan.
- SELinux untuk Android 8.0 . Detail perubahan dan penyesuaian SELinux.
Selain sumber daya di situs ini, anggota tim Treble menerbitkan Treble: Pembaruan Perangkat Lunak Cepat dengan Menciptakan Keseimbangan dalam Ekosistem Perangkat Lunak Aktif dari Pemangku Kepentingan yang Didistribusikan Secara Global . Makalah ini gratis untuk anggota ACM dan non-anggota dapat membeli atau membaca abstrak.