از 27 مارس 2025، توصیه می کنیم از android-latest-release به جای aosp-main برای ساختن و کمک به AOSP استفاده کنید. برای اطلاعات بیشتر، به تغییرات AOSP مراجعه کنید.
با مجموعهها، منظم بمانید
ذخیره و طبقهبندی محتوا براساس اولویتهای شما.
برای انتقال یک پیاده سازی HIDL VHAL موجود به یک AIDL VHAL، از ساختار پیاده سازی مرجع AIDL برای پیاده سازی رابط IVehicleHardware استفاده کنید.
اگر پیاده سازی HIDL موجود نیز از پیاده سازی مرجع HIDL پیروی کند، فروشنده کلاس VehicleHal را پیاده سازی کرده است. IVehicleHardware بسیار شبیه VehicleHal است.
HIDL VHAL
AIDL VHAL
getAllPropertyConfigs()
مانند VehicleHal.listProperties()
getValues(callback, requests)
می تواند برای هر درخواست VehicleHal.get() فراخوانی کند و می تواند callbacks را فراخوانی کند.
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 تعریف شده است و باید به جای enum به عنوان یک پرچم تعریف شود. یک فیلد پرچم کاربر یک عدد صحیح است که دارای چند بیت UserInfo.USER_FLAG_XXX با هم است.
RawValue در VehiclePropValue به RawPropValue تغییر نام داد
bytes در RawValue به byteValues تغییر نام داده می شوند
،
برای انتقال یک پیاده سازی HIDL VHAL موجود به یک AIDL VHAL، از ساختار پیاده سازی مرجع AIDL برای پیاده سازی رابط IVehicleHardware استفاده کنید.
اگر پیاده سازی HIDL موجود نیز از پیاده سازی مرجع HIDL پیروی کند، فروشنده کلاس VehicleHal را پیاده سازی کرده است. IVehicleHardware بسیار شبیه VehicleHal است.
HIDL VHAL
AIDL VHAL
getAllPropertyConfigs()
مانند VehicleHal.listProperties()
getValues(callback, requests)
می تواند برای هر درخواست VehicleHal.get() فراخوانی کند و می تواند callbacks را فراخوانی کند.
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 تعریف شده است و باید به جای enum به عنوان یک پرچم تعریف شود. یک فیلد پرچم کاربر یک عدد صحیح است که دارای چند بیت UserInfo.USER_FLAG_XXX با هم است.
RawValue در VehiclePropValue به RawPropValue تغییر نام داد
bytes در RawValue به byteValues تغییر نام داده می شوند
محتوا و نمونه کدها در این صفحه مشمول پروانههای توصیفشده در پروانه محتوا هستند. جاوا و OpenJDK علامتهای تجاری یا علامتهای تجاری ثبتشده Oracle و/یا وابستههای آن هستند.
تاریخ آخرین بهروزرسانی 2025-07-29 بهوقت ساعت هماهنگ جهانی.
[[["درک آسان","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 بهوقت ساعت هماهنگ جهانی."],[],[],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`"]]