Od 27 marca 2025 r. zalecamy używanie android-latest-release zamiast aosp-main do kompilowania i wspołtworzenia AOSP. Więcej informacji znajdziesz w artykule o zmianach w AOSP.
Zadbaj o dobrą organizację dzięki kolekcji
Zapisuj i kategoryzuj treści zgodnie ze swoimi preferencjami.
Aby przenieść istniejące wdrożenie VHAL HIDL do wdrożenia VHAL AIDL, użyj struktury wzorcowego wdrożenia AIDL, aby zaimplementować interfejs IVehicleHardware.
Jeśli istniejąca implementacja HIDL jest zgodna z przykładową implementacją HIDL, oznacza to, że dostawca zaimplementował klasę VehicleHal. IVehicleHardware jest bardzo podobny do VehicleHal.
HIDL VHAL
AIDL VHAL
getAllPropertyConfigs()
Taka sama cena jak w hotelu VehicleHal.listProperties()
getValues(callback, requests)
Może wywoływać funkcję VehicleHal.get() w przypadku każdego żądania i może wywoływać funkcję wywołania zwrotnego.
dump()
Taka sama cena jak w hotelu VehicleHal.dump()
checkHealth()
Może zwrócić VehicleHal.get()
registerPropertyChangeCallback()
Podobne do ustawienia VehicleHal.mOnHalEvent
Różnice w typach w AIDL
Podczas migracji z HIDL VHAL na AIDL VHAL weź pod uwagę te różnice.
HIDL generuje jeden plik nagłówka (types.h) dla wszystkich typów wygenerowanych z types.hal. AIDL generuje jeden plik nagłówka dla każdego typu. Na przykład:VehiclePropValue.h z VehiclePropValue.aidl.
W rezultacie musisz uwzględnić wszystkie pliki nagłówka dla potrzebnych typów. Plik pomocniczy VehicleHalTypes.h w bibliotece VehicleHalUtils zawiera większość typów plików.
Zamiast
Użyj
hidl_vec
std::vector
hidl_string
std::string
android::sp
std::shared_ptr
android::wp
std::weak_ptr
Wszystkie typy zdefiniowane w types.hal są takie same w AIDL z wyjątkiem:
Element SubscribeFlags został usunięty, ponieważ nie jest używany, ponieważ element onPropertySet został usunięty
Wartość UserFlags jest teraz zdefiniowana w UserInfo.aidl i powinna być zdefiniowana jako flaga zamiast typu enum. Pole flagi użytkownika to liczba całkowita, która zawiera wiele bitowych operacji OR.UserInfo.USER_FLAG_XXX
Użytkownik RawValue w VehiclePropValue zmienił nazwę na RawPropValue
Użytkownik bytes w RawValue zmienił nazwę na byteValues
Treść strony i umieszczone na niej fragmenty kodu podlegają licencjom opisanym w Licencji na treści. Java i OpenJDK są znakami towarowymi lub zastrzeżonymi znakami towarowymi należącymi do firmy Oracle lub jej podmiotów stowarzyszonych.
Ostatnia aktualizacja: 2025-07-27 UTC.
[[["Łatwo zrozumieć","easyToUnderstand","thumb-up"],["Rozwiązało to mój problem","solvedMyProblem","thumb-up"],["Inne","otherUp","thumb-up"]],[["Brak potrzebnych mi informacji","missingTheInformationINeed","thumb-down"],["Zbyt skomplikowane / zbyt wiele czynności do wykonania","tooComplicatedTooManySteps","thumb-down"],["Nieaktualne treści","outOfDate","thumb-down"],["Problem z tłumaczeniem","translationIssue","thumb-down"],["Problem z przykładami/kodem","samplesCodeIssue","thumb-down"],["Inne","otherDown","thumb-down"]],["Ostatnia aktualizacja: 2025-07-27 UTC."],[],[],null,["# HIDL VHAL migration guide\n\nTo migrate an existing **HIDL** VHAL implementation to an **AIDL** VHAL,\nuse the\n[AIDL reference implementation](/docs/automotive/vhal/reference-implementation)\nstructure to implement the `IVehicleHardware` interface.\n\nIf the existing HIDL implementation also follows\n[HIDL reference implementation](https://android.googlesource.com/platform/hardware/interfaces/+/refs/heads/android16-release/automotive/vehicle/2.0/default/impl/vhal_v2_0),\nthe vendor has implemented the `VehicleHal` class. `IVehicleHardware` is\nvery similar to `VehicleHal`.\n| **Note:** AIDL uses different types than HIDL. Some types used in the HIDL implementation must be migrated. For detail, see [Type differences in AIDL](#aidl-diffs) below.\n\n| HIDL VHAL | AIDL VHAL |\n|------------------------------------|----------------------------------------------------------------------|\n| `getAllPropertyConfigs()` | Same as `VehicleHal.listProperties()` |\n| `getValues(callback, requests)` | Can call `VehicleHal.get()` for each request and can call callbacks. |\n| `dump()` | Same as `VehicleHal.dump()` |\n| `checkHealth()` | Can return `VehicleHal.get()` |\n| `registerPropertyChangeCallback()` | Similar to setting `VehicleHal.mOnHalEvent` |\n\nType differences in AIDL\n------------------------\n\nWhen migrating from the HIDL VHAL to the AIDL VHAL, consider these differences.\n\n1. HIDL generates one header file (`types.h`) for all types generated from `types.hal`. AIDL generates one header file for each type. For example, `VehiclePropValue.h` from `VehiclePropValue.aidl`.\n\n As a result, you must include all header files for the types you need. A helper file,\n `VehicleHalTypes.h` in the `VehicleHalUtils` library contains most of\n the common types.\n\n| Instead of ... | Use |\n|----------------|-------------------|\n| `hidl_vec` | `std::vector` |\n| `hidl_string` | `std::string` |\n| `android::sp` | `std::shared_ptr` |\n| `android::wp` | `std::weak_ptr` |\n\n2. All types defined in `types.hal` are the same in AIDL **except** for:\n - `SubscribeFlags` is removed as it's not used because `onPropertySet` is removed\n - `UserFlags` is now defined in `UserInfo.aidl` and should be defined as a flag instead of an enum. A user flag field is an integer that has multiple `UserInfo.USER_FLAG_XXX` bit-or together.\n - `RawValue` in `VehiclePropValue` is renamed as `RawPropValue`\n - `bytes` in `RawValue` is renamed as `byteValues`"]]