HAL Türleri

Android 8.0 ve sonraki sürümlerde, alt düzey katmanlar yeni, daha modüler bir mimari benimsemek için yeniden yazılı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 bağlayıcı veya doğrudan geçişli olabilir. Android 11'de, AIDL'de yazılan HAL'ler de desteklenmektedir. Tüm AIDL HAL'ler bağlayıcı hale getirilmiştir.

  • Bağlayıcı HAL'ler. HAL arayüz tanımlama dili (HIDL) veya Android arayüz tanımlama dili (AIDL) ile 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 Bağlayıcı 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 bağlayıcı hale getirilmiş HAL'leri desteklemelidir.
  • Geçiş HAL'leri. HIDL ile sarılmış geleneksel veya eski bir HAL . Bu HAL'ler mevcut HAL'leri sarar ve HAL'ye ciltlenmiş ve aynı işlem (geçiş) modlarında hizmet edebilir. 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ş HAL'lerinde listelenen HAL'ler doğrudan geçiş olmalıdır. Diğer tüm HAL'ler bağlayıcı hale getirilmiştir (satıcı uzantıları olan HAL'ler dahil).
Android 8.0'a yükseltin Geçiş HAL'lerinde listelenen HAL'ler doğrudan geçiş olmalıdır. Bağlayıcı HAL'lerde listelenen HAL'ler bağlayıcı hale getirilmelidir.
Satıcı görüntüsü tarafından sağlanan diğer tüm HAL'ler doğrudan geçiş VEYA ciltlenmiş modda olabilir. Tamamen Treble uyumlu bir cihazda, bunların tümü birleştirilmelidir.

Bağlayıcı HAL'ler

Android, başlatma cihazları veya yükseltme cihazları olup olmadığına bakılmaksızın tüm Android cihazlarda aşağıdaki HALS'ın birleştirilmesini 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'daki yenilikler.
  • 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 cihazda yeniden uygulanmalıdır (bu isteğe bağlı bir dumpstate_board ).
  • android.hardware.graphics.allocator@2.0 . Android 8.0'da bağlayıcı hale getirilmesi gerekir, böylece dosya tanımlayıcıların güvenilir ve güvenilmeyen süreçler arasında paylaşılması gerekmez.
  • android.hardware.radio@1.0 . Kendi sürecinde yaşayan rild tarafından sağlanan arayüzü değiştirir.
  • android.hardware.usb@1.0 . Android 8.0'daki yenilikler.
  • android.hardware.wifi@1.0 . Android system_server , 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 bağlayıcı modda olacak şu HIDL arayüzlerini sağlar: android.frameworks.* , Android.system android.system.* Ve android.hidl.* (Aşağıda açıklanan android.hidl.memory@1.0 hariç).

Geçiş HAL'leri

Android, ister başlatma cihazları isterse yükseltme cihazları olsun, tüm Android cihazlarda aşağıdaki HAL'lerin 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 openGL ( openGL eşdeğer).

Yukarıda listelenmeyen tüm HAL'ler, başlatma cihazları için bağlayıcı hale getirilmelidir.

Aynı Süreç HAL'leri

Aynı İşlem HAL'leri (SP-HAL'ler) her zaman kullanıldıkları işlemde açılır. HIDL olarak ifade edilmeyen tüm HAL'leri ve ayrıca bağlayıcı olmayan bazılarını içerirler. SP-HAL setine üyelik, istisnasız olarak 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 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ümü belirlenmiş uygulama ikili arayüzüne (ABI) uyan arayüzlerdir. Android sistem arayüzlerinin çoğu ( kamera , ses , sensörler , vb.), Donanım / libhardware / include / hardware altında tanımlanan geleneksel HAL'ler biçimindedir .

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