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

Menerapkan USB HAL

Rilis Android 8.0 memindahkan penanganan perintah USB dari skrip init ke daemon USB asli untuk konfigurasi yang lebih baik dan keandalan kode. Untuk konfigurasi fungsi Gadget, skrip init (pemicu properti) digunakan untuk menjalankan operasi gadget khusus perangkat.

Dalam rilis sebelumnya, konfigurasi khusus perangkat ini dicapai melalui skrip init khusus perangkat (menggunakan pemicu properti). Pindah ke desain Hardware Abstraction Layer (HAL) menghasilkan implementasi yang jauh lebih bersih yang memecahkan masalah ini:

  1. Operasi seperti menulis ke node sysfs kernel bisa gagal tetapi tidak disebarkan kembali ke kode kerangka kerja yang menyetel pemicu properti. Akibatnya, kerangka kerja salah mengasumsikan operasi telah berhasil meskipun secara diam-diam gagal.
  2. Skrip init memiliki jumlah operasi terbatas yang dapat dijalankan.

HAL dan Treble

Skrip init khusus perangkat digunakan sebagai pengganti lapisan HAL untuk melakukan operasi USB khusus perangkat. USB (melalui ADB) adalah antarmuka utama untuk men-debug masalah sistem. Memiliki daemon asli untuk menjalankan konfigurasi USB menghilangkan ketergantungan pada kode framework, jadi meskipun framework rusak, USB harus tetap berjalan.

Di bawah model Treble yang juga diperkenalkan di Android 8.0, semua HAL diisolasi dari layanan Sistem dan harus dijalankan di daemon aslinya sendiri. Ini menghilangkan kebutuhan untuk memiliki daemon USB eksklusif karena lapisan HAL berfungsi ganda dengan baik sebagai daemon USB.

Implementasi HAL default menangani semua perangkat pra-Android 8.0. Oleh karena itu, tidak akan ada pekerjaan khusus perangkat untuk perangkat pra-Android 8.0. Android 8.0 menggunakan antarmuka HAL untuk menanyakan status port USB dan melakukan pertukaran peran data dan peran daya.

Penerapan

Antarmuka USB HAL baru perlu diterapkan di setiap perangkat yang diluncurkan di Android 8.0. Implementasi default harus menangani perangkat pra-Android 8.0. Implementasi default cukup jika perangkat menggunakan kelas dual_role_usb untuk melaporkan status port tipe-c. Perubahan sepele mungkin diperlukan dalam skrip USB khusus perangkat untuk mentransfer kepemilikan node typc-c ke sistem.