Tài liệu này mô tả tính năng băm giao diện HIDL, một cơ chế để ngăn chặn những thay đổi giao diện ngẫu nhiên và đảm bảo các thay đổi về giao diện được xem xét kỹ lưỡng. Cơ chế này là bắt buộc vì giao diện HIDL được tạo phiên bản, tức là sau khi phát hành giao diện, bạn không được thay đổi giao diện ngoại trừ trong cách bảo toàn giao diện nhị phân của ứng dụng (ABI) (chẳng hạn như ghi chú) sửa đổi).
Bố cục
Mọi thư mục gốc của gói (tức là ánh xạ android.hardware
tới
hardware/interfaces
hoặc vendor.foo
ánh xạ tới
vendor/foo/hardware/interfaces
) phải chứa
current.txt
liệt kê tất cả các tệp giao diện HIDL đã phát hành.
# 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
Lưu ý: Để giúp theo dõi những hàm băm nào
từ đó, Google sẽ tách các tệp HIDL current.txt
thành các tệp khác nhau
phần: Phần đầu tiên được Phát hành trong Android 8; phần tiếp theo
sẽ được phát hành trong Android 8 MR1. Bạn nên sử dụng
bố cục tương tự trong tệp current.txt
.
Hàm băm bằng hidl-gen
Bạn có thể thêm hàm băm vào tệp current.txt
theo cách thủ công hoặc bằng cách
đang sử dụng hidl-gen
. Đoạn mã sau đây cung cấp ví dụ về
các lệnh mà bạn có thể dùng với hidl-gen
để quản lý
Tệp current.txt
(các hàm băm đã được rút ngắn):
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
Cảnh báo: Đừng thay thế hàm băm cho một
phát hành trước đó. Khi thay đổi một giao diện như vậy, hãy thêm hàm băm mới
vào cuối tệp current.txt
. Để biết thông tin chi tiết, hãy tham khảo
Độ ổn định của ABI.
Mọi thư viện định nghĩa giao diện do hidl-gen
tạo
bao gồm các hàm băm có thể được truy xuất bằng cách gọi
IBase::getHashChain
Khi hidl-gen
biên dịch một
giao diện này sẽ kiểm tra tệp current.txt
trong thư mục gốc của
gói HAL để xem HAL đã được thay đổi hay chưa:
- Nếu không tìm thấy hàm băm cho HAL, giao diện sẽ được coi là chưa phát hành (trong phát triển) và thu thập dữ liệu.
- Nếu tìm thấy hàm băm, hệ thống sẽ kiểm tra hàm này so với giao diện hiện tại:
- Nếu giao diện khớp với hàm băm, thì quá trình biên dịch sẽ tiếp tục.
- Nếu giao diện không khớp với hàm băm, thì quá trình biên dịch sẽ tạm dừng vì điều này có nghĩa là giao diện được phát hành trước đó đang bị thay đổi.
- Để biết nội dung thay đổi cho khả năng duy trì ABI (xem
Độ ổn định của ABI), tệp
current.txt
phải được sửa đổi trước khi quá trình biên dịch có thể tiếp tục. - Tất cả các thay đổi khác phải được thực hiện trong quá trình nâng cấp phiên bản nhỏ hoặc lớn của .
- Để biết nội dung thay đổi cho khả năng duy trì ABI (xem
Độ ổn định của ABI), tệp
Độ ổn định của ABI
ABI bao gồm tệp nhị phân
liên kết/quy ước gọi điện, v.v. Nếu ABI hoặc API thay đổi, thì giao diện sẽ không
hoạt động lâu hơn với một system.img
chung được biên dịch bằng
giao diện chính thức.
Đảm bảo giao diện được tạo phiên bản và ABI ổn định rất quan trọng vì một số lý do:
- Đảm bảo rằng quá trình triển khai của bạn có thể vượt qua Bộ thử nghiệm nhà cung cấp (VTS), giúp bạn đi đúng hướng để có thể thực hiện các OTA chỉ hỗ trợ khung.
- Là OEM, giải pháp này cho phép bạn cung cấp Gói hỗ trợ bảng (BSP) dễ sử dụng và tuân thủ.
- Bảng này giúp bạn theo dõi những giao diện có thể được phát hành. Cân nhắc
current.txt
bản đồ của một thư mục giao diện cho phép bạn xem lịch sử và trạng thái của tất cả giao diện được cung cấp trong một thư mục gốc của gói.
Khi thêm hàm băm mới cho một giao diện đã có mục nhập trong
current.txt
, hãy nhớ chỉ thêm các hàm băm đại diện cho
các giao diện duy trì độ ổn định của ABI. Hãy xem xét các loại thay đổi sau:
Cho phép thay đổi |
|
---|---|
Không được phép thay đổi |
|