Google berkomitmen untuk mendorong terwujudnya keadilan ras bagi komunitas Kulit Hitam. Lihat caranya.

Arsitektur Android

Arsitektur sistem Android berisi komponen berikut:

Ringkasan arsitektur sistem Android
Gambar 1. Arsitektur sistem Android
  • Kerangka aplikasi . Kerangka 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 berguna tentang mengimplementasikan driver.
  • Binder IPC . Mekanisme Binder Inter-Process Communication (IPC) memungkinkan framework aplikasi melewati batas proses dan memanggil kode layanan sistem Android. Ini memungkinkan API kerangka kerja tingkat tinggi untuk berinteraksi dengan layanan sistem Android. Pada tingkat kerangka aplikasi, komunikasi ini disembunyikan dari pengembang dan hal-hal tampak "baru saja berfungsi".
  • Layanan sistem . Layanan sistem adalah modular, komponen terfokus seperti Window Manager, Search Service, atau Notification Manager. Fungsi yang diekspos oleh API kerangka aplikasi berkomunikasi dengan layanan sistem untuk mengakses perangkat keras yang mendasarinya. Android menyertakan dua kelompok layanan: sistem (seperti Window Manager dan Notification Manager) dan media (layanan yang terlibat dalam pemutaran dan perekaman media).
  • Lapisan abstraksi perangkat keras (HAL) . HAL menentukan antarmuka standar yang akan diterapkan 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 menjaga memori), kunci saat bangun (layanan sistem PowerManager ), driver Binder IPC, dan fitur penting lainnya. untuk platform tersemat seluler. Penambahan ini terutama untuk fungsionalitas sistem dan tidak mempengaruhi pengembangan driver. Anda dapat menggunakan kernel versi apa pun selama kernel tersebut mendukung fitur-fitur yang diperlukan (seperti driver binder). Namun, kami merekomendasikan penggunaan kernel Android versi terbaru. Untuk detailnya, lihat Membangun Kernel .

Bahasa definisi antarmuka HAL (HIDL)

Android 8.0 merancang ulang kerangka kerja OS Android (dalam proyek yang dikenal sebagai Treble ) untuk membuatnya lebih mudah, lebih cepat, dan lebih murah bagi produsen untuk memperbarui perangkat ke versi baru Android. Dalam arsitektur baru ini, bahasa definisi antarmuka HAL (HIDL, dilafalkan "hide-l") menentukan antarmuka antara HAL dan penggunanya, memungkinkan kerangka kerja Android diganti tanpa membangun kembali HAL.

HIDL memisahkan penerapan vendor (khusus perangkat, perangkat lunak tingkat lebih 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 HIDL saat ini adalah dalam penggunaan antarmuka vendor:

  • Di Android 7.x dan yang lebih lama, tidak ada antarmuka vendor resmi, jadi pembuat perangkat harus memperbarui sebagian besar kode Android untuk memindahkan perangkat ke versi Android yang lebih baru:

    Gambar 2. Lingkungan pembaruan Android lama
  • 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 mengirimkan rilis Android baru hanya dengan memperbarui kerangka kerja OS Android — tanpa pekerjaan tambahan yang diperlukan 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 penerusan implementasi vendor, antarmuka vendor divalidasi oleh Vendor Test Suite (VTS) , yang serupa 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 mengetahui detail tentang arsitektur Android, lihat bagian berikut:

  • Jenis HAL . Menjelaskan binderized, passthrough, Same-Process (SP), dan HAL lama.
  • HIDL (Umum) . Berisi informasi umum tentang antarmuka antara HAL dan penggunanya.
  • HIDL (C ++) . Berisi detail untuk membuat implementasi C ++ dari antarmuka HIDL.
  • HIDL (Java) . Berisi detail tentang antarmuka Java untuk antarmuka HIDL.
  • ConfigStore HAL . Menjelaskan API untuk mengakses item konfigurasi hanya baca yang digunakan untuk mengonfigurasi framework Android.
  • Hamparan Pohon Perangkat . Memberikan detail tentang penggunaan hamparan pohon perangkat (DTO) di Android.
  • Vendor Native Development Kit (VNDK) . Menjelaskan kumpulan pustaka eksklusif vendor untuk mengimplementasikan HAL vendor.
  • Objek Antarmuka Vendor (VINTF) . Menjelaskan objek yang mengumpulkan informasi relevan tentang perangkat dan membuat informasi tersebut tersedia melalui API yang dapat dikueri.
  • 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 Pemangku Kepentingan yang Didistribusikan Secara Global . Makalah ini gratis untuk anggota ACM dan non-anggota dapat membeli atau membaca abstrak.