קל לארגן דפים בעזרת אוספים
אפשר לשמור ולסווג תוכן על סמך ההעדפות שלך.
כדי להעביר הטמעה קיימת של VHAL ב-HIDL ל-VHAL ב-AIDL, משתמשים במבנה של הטמעת העזר של 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.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
דוגמאות התוכן והקוד שבדף הזה כפופות לרישיונות המפורטים בקטע רישיון לתוכן. Java ו-OpenJDK הם סימנים מסחריים או סימנים מסחריים רשומים של חברת 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`"]]