اعتبارًا من 27 آذار (مارس) 2025، ننصحك باستخدام android-latest-release بدلاً من aosp-main لإنشاء AOSP والمساهمة فيه. لمزيد من المعلومات، يُرجى الاطّلاع على التغييرات في AOSP.
تنظيم صفحاتك في مجموعات
يمكنك حفظ المحتوى وتصنيفه حسب إعداداتك المفضّلة.
لنقل عملية تنفيذ 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 ويجب تعريفه
كعلامة بدلاً من عنصر مصنّف. حقل علامة المستخدم هو عدد صحيح يتضمّن عدة
UserInfo.USER_FLAG_XXX عمليات ربط ثنائية معًا.
تمت إعادة تسمية RawValue في VehiclePropValue ليصبح
RawPropValue.
تمت إعادة تسمية bytes في RawValue ليصبح byteValues.
يخضع كل من المحتوى وعيّنات التعليمات البرمجية في هذه الصفحة للتراخيص الموضحّة في ترخيص استخدام المحتوى. إنّ Java وOpenJDK هما علامتان تجاريتان مسجَّلتان لشركة Oracle و/أو الشركات التابعة لها.
تاريخ التعديل الأخير: 2025-07-27 (حسب التوقيت العالمي المتفَّق عليه)
[[["يسهُل فهم المحتوى.","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 (حسب التوقيت العالمي المتفَّق عليه)"],[],[],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`"]]