기존 HIDL VHAL 구현을 AIDL VHAL로 이전하려면 AIDL 참조 구현 구조를 사용하여 IVehicleHardware 인터페이스를 구현하세요.
기존 HIDL 구현도 HIDL 참조 구현을 따르는 경우 공급업체가 VehicleHal 클래스를 구현한 것입니다. IVehicleHardware는 VehicleHal과 매우 유사합니다.
HIDL VHAL
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.hal에서 생성된 모든 유형에 하나의 헤더 파일(types.h)을 생성합니다. AIDL은 유형마다 하나의 헤더 파일을 생성합니다. 예를 들어 VehiclePropValue.aidl의 VehiclePropValue.h입니다.
따라서 필요한 유형에 관한 모든 헤더 파일을 포함해야 합니다. VehicleHalUtils 라이브러리의 도우미 파일 VehicleHalTypes.h에는 일반 유형이 대부분 포함되어 있습니다.
대신
사용
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에 정의되며 enum이 아닌 플래그로 정의되어야 합니다. 사용자 플래그 필드는 여러 UserInfo.USER_FLAG_XXX 비트를 함께 포함하는 정수입니다.
VehiclePropValue의 RawValue가 RawPropValue로 이름이 변경되었습니다.
RawValue의 bytes가 byteValues로 이름이 변경되었습니다.
이 페이지에 나와 있는 콘텐츠와 코드 샘플에는 콘텐츠 라이선스에서 설명하는 라이선스가 적용됩니다. 자바 및 OpenJDK는 Oracle 및 Oracle 계열사의 상표 또는 등록 상표입니다.
최종 업데이트: 2025-07-27(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-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`"]]