HAL Çeşitleri

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 sonraki sürümleri çalıştıran cihazlar, aşağıda listelenen birkaç istisna dışında HIDL'de yazılmış HAL'leri desteklemelidir. Bu HAL'ler ciltlenebilir veya geçiş olabilir. Android 11'de AIDL ile yazılmış HAL'ler de desteklenmektedir. Tüm AIDL HAL'leri bağlayıcıdır.

  • Bağlanmış HAL'ler. HAL arabirim tanımlama dilinde (HIDL) veya Android arabirim 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. Bir Binderized 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 sonraki 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 . Bu HAL'ler, mevcut HAL'leri sarar ve HAL'a ciltlenmiş ve aynı işlem (geçiş) modlarında hizmet verebilir. Android 8.0'a yükseltme yapan cihazlar, geçiş HAL'lerini kullanabilir.

HAL modu gereksinimleri

Cihaz geçiş ciltlenmiş
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 ciltlenir (satıcı uzantıları olan HAL'ler dahil).
Android 8.0'a yükseltin Geçişli HAL'lerde listelenen HAL'ler geçişli olmalıdır. Bağlanmış HAL'lerde listelenen HAL'ler ciltlenmiş olmalıdır.
Satıcı görüntüsü tarafından sağlanan diğer tüm HAL'ler geçişli VEYA birleştirilmiş modda olabilir. Tamamen Tiz uyumlu bir cihazda bunların hepsinin ciltlenmesi gerekir.

Bağlanmış HAL'ler

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

  • android.hardware.biometrics.fingerprint@2.1 . Artık Android 8.0'da olmayan fingerprintd değiştirir.
  • android.hardware.configstore@1.0 . Android 8.0'da yeni.
  • android.hardware.dumpstate@1.0 . Bu HAL tarafından sağlanan orijinal arayüz düzeltilemedi ve değiştirildi. Bu nedenle, dumpstate_board belirli bir aygıtta yeniden uygulanmalıdır (bu isteğe bağlı bir HAL'dir).
  • android.hardware.graphics.allocator@2.0 . Dosya tanımlayıcılarının güvenilir ve güvenilmeyen işlemler arasında paylaşılmasına gerek kalmaması için Android 8.0'da ciltlenmesi 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 yenilik, system_server yüklenen eski Wi-Fi HAL kitaplığının yerini alır.
  • android.hardware.wifi.supplicant@1.0 . Mevcut wpa_supplicant işlemi üzerinde bir HIDL arayüzü.

NOT : Android, her zaman ciltleştirilmiş modda olacak şu HIDL arabirimlerini sağlar: android.frameworks.* , android.system.* ve android.hidl.* (aşağıda açıklandığı gibi android.hidl.memory@1.0 hariç).

Geçiş HAL'leri

Android, başlatma cihazları veya yükseltme cihazları olmaları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şler.
  • android.hardware.renderscript@1.0 . Öğeleri aynı süreçte geçirir ( openGL eşdeğerdir).

Yukarıda listelenmeyen tüm HAL'ler, başlatma aygıtları için ciltlenmelidir.

Aynı İşlem HAL'leri

Aynı İşlem HAL'leri (SP-HAL'ler) her zaman kullanıldıkları işlemde açılır. HIDL'de ifade edilmeyen tüm HAL'leri ve ayrıca bağlayıcı olmayan bazı HAL'leri içerir. SP-HAL kümesindeki üyelik, istisna olmaksızın yalnızca Google tarafından kontrol edilir.

SP-HAL'ler şunları içerir:

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

Geleneksel ve eski HAL'ler

Geleneksel HAL'ler (Android 8.0'da kullanımdan kaldırılmıştır), belirli bir adlandırılmış ve sürümlendirilmiş uygulama ikili arabirimine (ABI) uyan arabirimlerdir. Android sistem arayüzlerinin çoğu ( kamera , ses , sensörler , vb.), donanım/libdonanım/içerme/donanım altında tanımlanan geleneksel HAL'ler biçimindedir.

Eski HAL'ler (Android 8.0'da da kullanımdan kaldırılmıştır), geleneksel HAL'lerden önce gelen arabirimlerdir. Birkaç önemli alt sistem (Wi-Fi, Radyo Arabirim Katmanı ve Bluetooth) eski HAL'lerdir. Eski bir HAL'ı tanımlamanın tek tip veya standart bir yolu olmasa da, Android 8.0'dan önceki ve geleneksel bir HAL olmayan her şey eski bir HAL'dir. Bazı eski HAL'lerin bölümleri libhardware_legacy içinde bulunurken, diğer bölümler kod tabanı boyunca serpiştirilmiştir.