Donanım Soyutlama Katmanına (HAL) 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ılır. Android 8.0 ve üzerini ç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şli olabilir. Android 11'de, AIDL'de yazılan HAL'ler de desteklenir. Tüm AIDL HAL'leri ciltlenir.

  • 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. Binderized HAL'de, Android çerçevesi ve HAL'ler, ciltleyici süreçler arası iletişim (IPC) çağrılarını kullanarak birbirleriyle iletişim kurar. Android 8.0 veya sonraki sürümleriyle başlatılan tüm cihazlar, yalnızca bağlayıcı hale getirilmiş HAL'leri desteklemelidir.
  • Geçişli HAL'ler. HIDL sarmalı geleneksel veya eski HAL . Bu HAL'ler, mevcut HAL'leri sarar ve HAL'a ciltlenmiş ve aynı işlem (geçiş) modlarında hizmet edebilir. Android 8.0'a yükseltme yapan cihazlar, düz geçişli HAL'leri kullanabilir.

HAL modu gereksinimleri

Cihaz geçiş Bağlanmış
Android 8.0 ile başlatın Düz Geçiş HAL'lerinde listelenen HAL'ler geçiş olmalıdır. Diğer tüm HAL'ler ciltlenir (satıcı uzantıları olan HAL'ler dahil).
Android 8.0'a yükseltin Düz Geçiş HAL'lerinde listelenen HAL'ler geçiş olmalıdır. Bağlanmış 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 ciltleme modunda olabilir. Tamamen Tiz uyumlu bir cihazda, bunların tümü ciltlenmelidir.

Bağlanmış HAL'ler

Android, başlatma cihazları veya yükseltme cihazları olmalarından bağımsız olarak tüm Android cihazlarında aşağıdaki HALS'lerin 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 arabirim, şimlenemedi ve değiştirildi. Bu nedenle, dumpstate_board belirli bir cihazda yeniden uygulanmalıdır (bu, isteğe bağlı bir HAL'dir).
  • android.hardware.graphics.allocator@2.0 . Android 8.0'da ciltlenmesi gerekir, böylece dosya tanımlayıcılarının güvenilir ve güvenilmeyen işlemler 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'da yeni.
  • android.hardware.wifi@1.0 . Android 8.0'daki yenilikler, system_server içine 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 arabirimi.

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

Geçişli HAL'ler

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

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

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

Aynı İşlem HAL'leri

Aynı İşlem HAL'leri (SP-HAL'ler) her zaman kullanıldıkları aynı işlemde açılır. HIDL'de ifade edilmeyen tüm HAL'leri ve bağlayıcı olmayan bazılarını içerir. SP-HAL setindeki üyelik istisnasız 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şlidir)
  • 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 büyük bir kısmı ( kamera , ses , sensörler vb.), Hardware/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'ı tanımlamanın tek tip veya standartlaştırılmış bir yolu olmasa da, geleneksel bir HAL olmayan Android 8.0'dan önceki 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.