Bu belgede, HIDL arayüzüne karma oluşturma işlemi açıklanmaktadır. arayüz değişikliklerinin kapsamlı bir şekilde incelendiğinden emin olun. HIDL arayüzleri sürümlü olduğu için bu mekanizma gereklidir. Bu, bir arayüz kullanıma sunulduktan sonra, ikili uygulama arayüzünü (ABI) koruyan bir biçimde (örneğin, düzeltme) bakın.
Düzen
Her paket kök dizini (ör. android.hardware
Şununla eşleşen: hardware/interfaces
veya vendor.foo
vendor/foo/hardware/interfaces
), bir
Yayınlanan tüm HIDL arayüz dosyalarını listeleyen current.txt
dosyası.
# current.txt files support comments starting with a '#' character # this file, for instance, would be vendor/foo/hardware/interfaces/current.txt # Each line has a SHA-256 hash followed by the name of an interface. # They have been shortened in this doc for brevity but they are # 64 characters in length in an actual current.txt file. d4ed2f0e...995f9ec4 vendor.awesome.foo@1.0::IFoo # comments can also go here # types.hal files are also noted in current.txt files c84da9f5...f8ea2648 vendor.awesome.foo@1.0::types # Multiple hashes can be in the file for the same interface. This can be used # to note how ABI sustaining changes were made to the interface. # For instance, here is another hash for IFoo: # Fixes type where "FooCallback" was misspelled in comment on "FooStruct" 822998d7...74d63b8c vendor.awesome.foo@1.0::IFoo
Not: Hangi karmaların geldiğini takip etmenize yardımcı olması için
Google, HIDL current.txt
dosyalarını farklı
bölümler: İlk bölüm Android 8'de yayınlandı; sonraki bölüm
Android 8 MR1'de yayınlanacak. Şunu kesinlikle öneririz:
current.txt
dosyanızda benzer bir düzen olacak.
hidl-gen ile karma
current.txt
dosyasına manuel olarak veya
hidl-gen
kullanılıyor. Aşağıdaki kod snippet'i
yönetmek için hidl-gen
ile kullanabileceğiniz komutlar
current.txt
dosyası (karma işlemler kısaltılmıştır):
hidl-gen -L hash -r vendor.awesome:vendor/awesome/hardware/interfaces -r android.hardware:hardware/interfaces -r android.hidl:system/libhidl/transport vendor.awesome.nfc@1.0::types
9626fd18...f9d298a6 vendor.awesome.nfc@1.0::typeshidl-gen -L hash -r vendor.awesome:vendor/awesome/hardware/interfaces -r android.hardware:hardware/interfaces -r android.hidl:system/libhidl/transport vendor.awesome.nfc@1.0::INfc
07ac2dc9...11e3cf57 vendor.awesome.nfc@1.0::INfchidl-gen -L hash -r vendor.awesome:vendor/awesome/hardware/interfaces -r android.hardware:hardware/interfaces -r android.hidl:system/libhidl/transport vendor.awesome.nfc@1.0
9626fd18...f9d298a6 vendor.awesome.nfc@1.0::types 07ac2dc9...11e3cf57 vendor.awesome.nfc@1.0::INfc f2fe5442...72655de6 vendor.awesome.nfc@1.0::INfcClientCallbackhidl-gen -L hash -r vendor.awesome:vendor/awesome/hardware/interfaces -r android.hardware:hardware/interfaces -r android.hidl:system/libhidl/transport vendor.awesome.nfc@1.0 >> vendor/awesome/hardware/interfaces/current.txt
Uyarı:
tekrar kontrol edin. Bu tür bir arayüzü değiştirirken, yeni bir karma
current.txt
dosyasının sonuna ekleyin. Ayrıntılı bilgi için
ABI kararlılığı.
hidl-gen
tarafından oluşturulan her arayüz tanımı kitaplığı
şunu çağırarak alınabilecek karmaları içerir:
IBase::getHashChain
. hidl-gen
bir
arayüzünün kök dizinindeki current.txt
dosyasını kontrol eder
kontrol edin:
- HAL için karma bulunmazsa arayüz yayınlanmamış olarak kabul edilir ( ve derleme devam ediyor.
- Karmalar bulunursa mevcut arayüzle karşılaştırılarak kontrol edilir:
- Arayüz karma ile eşleşirse derleme devam eder.
- Arayüz bir karma ile eşleşmezse derleme durdurulur. Bu, daha önce sunulan bir arayüzün değiştirildiği anlamına gelir.
- ABI'yi koruyan bir değişiklik için (bkz.
ABI kararlılığı),
current.txt
dosyası derlemeye devam edebilmesi için değiştirilmesi gerekir. - Diğer tüm değişiklikler, kullanır.
- ABI'yi koruyan bir değişiklik için (bkz.
ABI kararlılığı),
ABI kararlılığı
ABI,
bağlantılar/arama kuralları/vb. ABI veya API değişirse arayüzde
ile derlenen genel bir system.img
ile çalışır
resmi arayüzler.
Arayüzlerin sürümlü olduğundan ve ABI'nin kararlı olduğundan emin olmak kritik önemdedir:
- Uygulamanızın, Tedarikçi Test Paketi'ni (VTS) geçmesini sağlar. Bu test paketi, Böylece yalnızca çerçeve niteliğindeki OTA'ları yapabilirsiniz.
- Bir OEM olarak, Google Cloud Platform'un sunduğu diğer olanaklardan yararlanan bir Yönetim Kurulu Destek Paketi (BSP) ve uyumlu hale getirebilirsiniz.
- Bu rapor, kullanıma sunulabilecek arayüzleri takip etmenize yardımcı olur. Dikkatlice
current.txt
arayüzleri dizininin haritasına bakın paket kökünde sağlanan tüm arayüzlerin geçmişi ve durumu
Şu dilde zaten giriş olan bir arayüze yeni bir karma eklerken:
current.txt
, yalnızca kodu temsil eden karmaları
ABI istikrarını koruyan arayüzler kullanır. Aşağıdaki değişiklik türlerini inceleyin:
Değişikliklere izin verildi |
|
---|---|
Değişikliklere izin verilmiyor |
|