A partir del 27 de marzo de 2025, te recomendamos que uses android-latest-release en lugar de aosp-main para compilar y contribuir a AOSP. Para obtener más información, consulta Cambios en AOSP.
Organiza tus páginas con colecciones
Guarda y categoriza el contenido según tus preferencias.
Para migrar una implementación existente de VHAL de HIDL a una de AIDL, usa la estructura de la implementación de referencia de AIDL para implementar la interfaz IVehicleHardware.
Si la implementación de HIDL existente también sigue la implementación de referencia de HIDL, el proveedor implementó la clase VehicleHal. IVehicleHardware es muy similar a VehicleHal.
HIDL VHAL
VHAL de AIDL
getAllPropertyConfigs()
Igual que VehicleHal.listProperties()
getValues(callback, requests)
Puede llamar a VehicleHal.get() para cada solicitud y puede llamar a devoluciones de llamada.
dump()
Igual que VehicleHal.dump()
checkHealth()
Puede mostrar VehicleHal.get()
registerPropertyChangeCallback()
Similar a la configuración de VehicleHal.mOnHalEvent
Diferencias de tipos en AIDL
Cuando migres del VHAL de HIDL al VHAL de AIDL, ten en cuenta estas diferencias.
HIDL genera un archivo de encabezado (types.h) para todos los tipos generados a partir de types.hal. AIDL genera un archivo de encabezado para cada tipo. Por ejemplo, VehiclePropValue.h de VehiclePropValue.aidl.
Como resultado, debes incluir todos los archivos de encabezado para los tipos que necesitas. Un archivo de ayuda, VehicleHalTypes.h en la biblioteca VehicleHalUtils, contiene la mayoría de los tipos comunes.
En lugar de…
Usar
hidl_vec
std::vector
hidl_string
std::string
android::sp
std::shared_ptr
android::wp
std::weak_ptr
Todos los tipos definidos en types.hal son los mismos en AIDL excepto los siguientes:
Se quitó SubscribeFlags porque no se usa, ya que se quitó onPropertySet.
UserFlags ahora se define en UserInfo.aidl y debe definirse como una marca en lugar de una enumeración. Un campo de marca de usuario es un número entero que tiene varios UserInfo.USER_FLAG_XXX juntos.
Se cambió el nombre de RawValue en VehiclePropValue a RawPropValue.
Se cambió el nombre de bytes en RawValue por byteValues.
El contenido y las muestras de código que aparecen en esta página están sujetas a las licencias que se describen en la Licencia de Contenido. Java y OpenJDK son marcas registradas de Oracle o sus afiliados.
Última actualización: 2025-07-27 (UTC)
[[["Fácil de comprender","easyToUnderstand","thumb-up"],["Resolvió mi problema","solvedMyProblem","thumb-up"],["Otro","otherUp","thumb-up"]],[["Falta la información que necesito","missingTheInformationINeed","thumb-down"],["Muy complicado o demasiados pasos","tooComplicatedTooManySteps","thumb-down"],["Desactualizado","outOfDate","thumb-down"],["Problema de traducción","translationIssue","thumb-down"],["Problema con las muestras o los códigos","samplesCodeIssue","thumb-down"],["Otro","otherDown","thumb-down"]],["Última actualización: 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`"]]