Ab dem 27. März 2025 empfehlen wir, android-latest-release anstelle von aosp-main zu verwenden, um AOSP zu erstellen und Beiträge dazu zu leisten. Weitere Informationen finden Sie unter Änderungen am AOSP.
Mit Sammlungen den Überblick behalten
Sie können Inhalte basierend auf Ihren Einstellungen speichern und kategorisieren.
Wenn Sie eine vorhandene HIDL-VHAL-Implementierung zu einer AIDL-VHAL migrieren möchten, verwenden Sie die Struktur der AIDL-Referenzimplementierung, um die IVehicleHardware-Schnittstelle zu implementieren.
Wenn die vorhandene HIDL-Implementierung auch der HIDL-Referenzimplementierung entspricht, hat der Anbieter die VehicleHal-Klasse implementiert. IVehicleHardware ähnelt VehicleHal sehr.
HIDL VHAL
AIDL-VHAL
getAllPropertyConfigs()
Gleich wie bei VehicleHal.listProperties()
getValues(callback, requests)
Kann VehicleHal.get() für jede Anfrage und Callbacks aufrufen.
dump()
Gleich wie bei VehicleHal.dump()
checkHealth()
Kann VehicleHal.get() zurückgeben
registerPropertyChangeCallback()
Ähnlich wie Einstellung VehicleHal.mOnHalEvent
Typunterschiede in AIDL
Berücksichtigen Sie diese Unterschiede, wenn Sie von der HIDL-VHAL zur AIDL-VHAL migrieren.
HIDL generiert eine Headerdatei (types.h) für alle Typen, die aus types.hal generiert wurden. AIDL generiert eine Headerdatei für jeden Typ. Beispiel:VehiclePropValue.h von VehiclePropValue.aidl
Daher müssen Sie alle Headerdateien für die benötigten Typen einschließen. Die Hilfsdatei VehicleHalTypes.h in der VehicleHalUtils-Bibliothek enthält die meisten gängigen Typen.
Anstatt ...
Verwenden
hidl_vec
std::vector
hidl_string
std::string
android::sp
std::shared_ptr
android::wp
std::weak_ptr
Alle in types.hal definierten Typen sind in AIDL identisch, außer:
SubscribeFlags wird entfernt, da es nicht verwendet wird, weil onPropertySet entfernt wurde
UserFlags ist jetzt in UserInfo.aidl definiert und sollte als Flag statt als Enum definiert werden. Ein Nutzerflag-Feld ist eine Ganzzahl, die mehrere UserInfo.USER_FLAG_XXX-Bit-OR-Werte enthält.
RawValue in VehiclePropValue wird in RawPropValue umbenannt.
bytes in RawValue wird in byteValues umbenannt
Alle Inhalte und Codebeispiele auf dieser Seite unterliegen den Lizenzen wie im Abschnitt Inhaltslizenz beschrieben. Java und OpenJDK sind Marken oder eingetragene Marken von Oracle und/oder seinen Tochtergesellschaften.
Zuletzt aktualisiert: 2025-07-27 (UTC).
[[["Leicht verständlich","easyToUnderstand","thumb-up"],["Mein Problem wurde gelöst","solvedMyProblem","thumb-up"],["Sonstiges","otherUp","thumb-up"]],[["Benötigte Informationen nicht gefunden","missingTheInformationINeed","thumb-down"],["Zu umständlich/zu viele Schritte","tooComplicatedTooManySteps","thumb-down"],["Nicht mehr aktuell","outOfDate","thumb-down"],["Problem mit der Übersetzung","translationIssue","thumb-down"],["Problem mit Beispielen/Code","samplesCodeIssue","thumb-down"],["Sonstiges","otherDown","thumb-down"]],["Zuletzt aktualisiert: 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`"]]