Donanım soyutlama katmanına genel bakış

Android 8.0 ve sonraki sürümlerde, alt düzey katmanlar yeni, daha modüler bir mimariyi benimsemek için yeniden yazılmıştır. Android 8.0 ve üstünü çalıştıran cihazlar, aşağıda listelenen birkaç istisna dışında HIDL'de yazılmış HAL'leri desteklemelidir. Bu HAL'ler bağlayıcı hale getirilebilir veya içinden geçebilir. Android 11'de AIDL'de yazılan HAL'ler de desteklenmektedir. Tüm AIDL HAL'ler bağlayıcıdır.

  • Bağlanmış HAL'ler . HAL arayüz tanımlama dilinde (HIDL) veya Android arayüz tanımlama dilinde (AIDL) ifade edilen HAL'ler. Bu HAL'ler, Android'in önceki sürümlerinde kullanılan hem geleneksel hem de eski HAL'lerin yerini alır. Bağlayıcı hale getirilmiş bir HAL'de, Android çerçevesi ve HAL'ler, bağlayıcı süreçler arası iletişim (IPC) çağrılarını kullanarak birbirleriyle iletişim kurar. Android 8.0 veya üzeri sürümlerle başlatılan tüm cihazlar yalnızca ciltlenmiş HAL'leri desteklemelidir.

  • Geçiş HAL'leri . HIDL ile sarılmış geleneksel veya Eski HAL'ler Bu HAL'ler mevcut HAL'leri sarar ve HAL'ye bağlayıcı ve aynı işlem (geçiş) modlarında hizmet verebilir. Android 8.0'a yükseltilen cihazlar geçiş HAL'lerini kullanabilir.

HAL modu gereksinimleri

Cihaz Geçiş Bağlanmış
Android 8.0 ile başlatın Geçişli HAL'lerde listelenen HAL'ler, geçişli olmalıdır. Diğer tüm HAL'ler bağlayıcıdır (satıcı uzantıları olan HAL'ler dahil).
Android 8.0'a yükseltme Geçişli HAL'lerde listelenen HAL'ler, geçişli olmalıdır. Bağlayıcı HAL'lerde listelenen HAL'ler ciltlenmelidir.
Satıcı görüntüsü tarafından sağlanan diğer tüm HAL'ler doğrudan geçişli VEYA bağlayıcı modda olabilir. Tamamen Treble uyumlu bir cihazda bunların hepsinin birleştirilmesi gerekir.

Bağlanmış HAL'ler

Android, başlatma cihazları veya yükseltme cihazları olmasına bakılmaksızın aşağıdaki HAL'lerin tüm Android cihazlarda ciltlenmesini gerektirir:

  • android.hardware.biometrics.fingerprint@2.1 . Artık Android 8.0'da olmayan fingerprintd yerini alır.
  • android.hardware.configstore@1.0 . Android 8.0'da yeni.
  • android.hardware.dumpstate@1.0 . Bu HAL tarafından sağlanan orijinal arayüz değiştirilemedi ve değiştirildi. Bu nedenle dumpstate_board belirli bir cihaza yeniden uygulanması gerekir (bu isteğe bağlı bir HAL'dir).
  • android.hardware.graphics.allocator@2.0 . Dosya tanımlayıcılarının güvenilen ve güvenilmeyen işlemler arasında paylaşılmasına gerek kalmaması için Android 8.0'da bağlayıcı hale getirilmesi gerekir.
  • android.hardware.radio@1.0 . Kendi sürecinde yaşayan rild tarafından sağlanan arayüzün yerini alır.
  • android.hardware.usb@1.0 . Android 8.0'da yeni.
  • android.hardware.wifi@1.0 . Android 8.0'daki yeni özellik, system_server yüklenen eski Wi-Fi HAL kitaplığının yerini alır
  • android.hardware.wifi.supplicant@1.0 . Mevcut wpa_supplicant süreci üzerinde bir HIDL arayüzü.

Geçiş HAL'leri

Android, başlatma cihazları veya yükseltme cihazları olmasına bakılmaksızın aşağıdaki HAL'lerin tüm Android cihazlarda geçiş modunda olmasını gerektirir:

  • android.hardware.graphics.mapper@1.0 . Belleği içinde yaşadığı süreçle eşleştirir.
  • android.hardware.renderscript@1.0 . Öğeleri aynı süreçte iletir ( openGL eşdeğer).

Yukarıda listelenmeyen tüm HAL'lerin başlatma cihazları için ciltlenmesi gerekir.

Aynı Süreç HAL'leri

Aynı İşlem HAL'leri (SP-HAL'ler) her zaman kullanıldıkları aynı işlemde açılır. Bunlar, HIDL'de ifade edilmeyen tüm HAL'lerin yanı sıra bağlayıcı olmayan bazılarını içerir. SP-HAL grubuna üyelik hiçbir istisna olmaksızın yalnızca Google tarafından kontrol edilir.

SP-HAL'ler aşağıdakileri içerir:

  • openGL
  • Vulkan
  • android.hidl.memory@1.0 (Android sistemi tarafından sağlanır, her zaman doğrudan geçiş yapılır)
  • android.hardware.graphics.mapper@1.0
  • android.hardware.renderscript@1.0