Начиная с 27 марта 2025 г. мы рекомендуем использовать android-latest-release вместо aosp-main для создания и участия в AOSP. Дополнительные сведения см. в разделе Изменения в AOSP .
Оптимизируйте свои подборки
Сохраняйте и классифицируйте контент в соответствии со своими настройками.
Чтобы перенести существующую реализацию HIDL VHAL в AIDL VHAL, используйте структуру эталонной реализации AIDL для реализации интерфейса IVehicleHardware .
Если существующая реализация HIDL также следует эталонной реализации HIDL , поставщик реализовал класс VehicleHal . IVehicleHardware очень похож на VehicleHal .
ХИДЛ ВХАЛ
AIDL VHAL
getAllPropertyConfigs()
То же, что и VehicleHal.listProperties()
getValues(callback, requests)
Может вызывать VehicleHal.get() для каждого запроса и может вызывать обратные вызовы.
dump()
То же, что и VehicleHal.dump()
checkHealth()
Может вернуть VehicleHal.get()
registerPropertyChangeCallback()
Аналогично настройке VehicleHal.mOnHalEvent
Различия типов в AIDL
При переходе с HIDL VHAL на AIDL VHAL учитывайте эти различия.
HIDL генерирует один заголовочный файл ( types.h ) для всех типов, сгенерированных из types.hal . AIDL генерирует один заголовочный файл для каждого типа. Например, VehiclePropValue.h из VehiclePropValue.aidl .
В результате вы должны включить все файлы заголовков для нужных вам типов. Вспомогательный файл VehicleHalTypes.h в библиотеке VehicleHalUtils содержит большинство распространенных типов.
Вместо ...
Использовать
hidl_vec
std::vector
hidl_string
std::string
android::sp
std::shared_ptr
android::wp
std::weak_ptr
Все типы, определенные в types.hal , идентичны в AIDL, за исключением :
SubscribeFlags удален, так как он не используется, так как onPropertySet удален
UserFlags теперь определен в UserInfo.aidl и должен быть определен как флаг вместо перечисления. Поле флага пользователя — это целое число, которое имеет несколько битов UserInfo.USER_FLAG_XXX вместе.
RawValue в VehiclePropValue переименован в RawPropValue
bytes в RawValue переименованы в byteValues
,
Чтобы перенести существующую реализацию HIDL VHAL в AIDL VHAL, используйте структуру эталонной реализации AIDL для реализации интерфейса IVehicleHardware .
Если существующая реализация HIDL также следует эталонной реализации HIDL , поставщик реализовал класс VehicleHal . IVehicleHardware очень похож на VehicleHal .
ХИДЛ ВХАЛ
AIDL VHAL
getAllPropertyConfigs()
То же, что и VehicleHal.listProperties()
getValues(callback, requests)
Может вызывать VehicleHal.get() для каждого запроса и может вызывать обратные вызовы.
dump()
То же, что и VehicleHal.dump()
checkHealth()
Может вернуть VehicleHal.get()
registerPropertyChangeCallback()
Аналогично настройке VehicleHal.mOnHalEvent
Различия типов в AIDL
При переходе с HIDL VHAL на AIDL VHAL учитывайте эти различия.
HIDL генерирует один заголовочный файл ( types.h ) для всех типов, сгенерированных из types.hal . AIDL генерирует один заголовочный файл для каждого типа. Например, VehiclePropValue.h из VehiclePropValue.aidl .
В результате вы должны включить все файлы заголовков для нужных вам типов. Вспомогательный файл VehicleHalTypes.h в библиотеке VehicleHalUtils содержит большинство распространенных типов.
Вместо ...
Использовать
hidl_vec
std::vector
hidl_string
std::string
android::sp
std::shared_ptr
android::wp
std::weak_ptr
Все типы, определенные в types.hal , идентичны в AIDL, за исключением :
SubscribeFlags удален, так как он не используется, так как onPropertySet удален
UserFlags теперь определен в UserInfo.aidl и должен быть определен как флаг вместо перечисления. Поле флага пользователя — это целое число, которое имеет несколько битов UserInfo.USER_FLAG_XXX вместе.
RawValue в VehiclePropValue переименован в RawPropValue
bytes в RawValue переименованы в byteValues
Контент и образцы кода на этой странице предоставлены по лицензиям. Java и OpenJDK – это зарегистрированные товарные знаки корпорации Oracle и ее аффилированных лиц.
Последнее обновление: 2025-07-29 UTC.
[[["Прост для понимания","easyToUnderstand","thumb-up"],["Помог мне решить мою проблему","solvedMyProblem","thumb-up"],["Другое","otherUp","thumb-up"]],[["Отсутствует нужная мне информация","missingTheInformationINeed","thumb-down"],["Слишком сложен/слишком много шагов","tooComplicatedTooManySteps","thumb-down"],["Устарел","outOfDate","thumb-down"],["Проблема с переводом текста","translationIssue","thumb-down"],["Проблемы образцов/кода","samplesCodeIssue","thumb-down"],["Другое","otherDown","thumb-down"]],["Последнее обновление: 2025-07-29 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`"]]