A partir de 27 de março de 2025, recomendamos usar android-latest-release em vez de aosp-main para criar e contribuir com o AOSP. Para mais informações, consulte Mudanças no AOSP.
Mantenha tudo organizado com as coleções
Salve e categorize o conteúdo com base nas suas preferências.
Para migrar uma implementação de VHAL HIDL para uma VHAL AIDL,
use a estrutura
implementação de referência da AIDL
para implementar a interface IVehicleHardware.
Se a implementação atual de HIDL também segue
a implementação de referência de HIDL,
o fornecedor implementou a classe VehicleHal. IVehicleHardware é
muito semelhante a VehicleHal.
HIDL VHAL
VHAL AIDL
getAllPropertyConfigs()
Igual ao hotel VehicleHal.listProperties()
getValues(callback, requests)
Pode chamar VehicleHal.get() para cada solicitação e pode chamar callbacks.
dump()
Igual ao hotel VehicleHal.dump()
checkHealth()
Pode devolver VehicleHal.get()
registerPropertyChangeCallback()
Semelhante à configuração VehicleHal.mOnHalEvent
Diferenças entre os tipos na AIDL
Ao migrar da VHAL da HIDL para a VHAL da AIDL, considere essas diferenças.
O HIDL gera um arquivo de cabeçalho (types.h) para todos os tipos gerados a partir de
types.hal. O AIDL gera um arquivo de cabeçalho para cada tipo. Por exemplo,
VehiclePropValue.h de VehiclePropValue.aidl.
Como resultado, é necessário incluir todos os arquivos de cabeçalho para os tipos necessários. Um arquivo auxiliar,
VehicleHalTypes.h na biblioteca VehicleHalUtils, contém a maioria
dos tipos comuns.
Em vez de ...
Uso
hidl_vec
std::vector
hidl_string
std::string
android::sp
std::shared_ptr
android::wp
std::weak_ptr
Todos os tipos definidos em types.hal são iguais no AIDL exceto:
SubscribeFlags foi removido porque não é usado, já que
onPropertySet foi removido
UserFlags agora é definido em UserInfo.aidl e precisa ser definido
como uma flag em vez de um tipo enumerado. Um campo de flag do usuário é um número inteiro que tem vários
UserInfo.USER_FLAG_XXX bits-ou juntos.
RawValue em VehiclePropValue foi renomeado como
RawPropValue
bytes em RawValue foi renomeado como byteValues.
O conteúdo e os exemplos de código nesta página estão sujeitos às licenças descritas na Licença de conteúdo. Java e OpenJDK são marcas registradas da Oracle e/ou suas afiliadas.
Última atualização 2025-07-27 UTC.
[[["Fácil de entender","easyToUnderstand","thumb-up"],["Meu problema foi resolvido","solvedMyProblem","thumb-up"],["Outro","otherUp","thumb-up"]],[["Não contém as informações de que eu preciso","missingTheInformationINeed","thumb-down"],["Muito complicado / etapas demais","tooComplicatedTooManySteps","thumb-down"],["Desatualizado","outOfDate","thumb-down"],["Problema na tradução","translationIssue","thumb-down"],["Problema com as amostras / o código","samplesCodeIssue","thumb-down"],["Outro","otherDown","thumb-down"]],["Última atualização 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`"]]