Mulai 27 Maret 2025, sebaiknya gunakan android-latest-release, bukan aosp-main, untuk mem-build dan berkontribusi pada AOSP. Untuk mengetahui informasi selengkapnya, lihat Perubahan pada AOSP.
Tetap teratur dengan koleksi
Simpan dan kategorikan konten berdasarkan preferensi Anda.
Untuk memigrasikan implementasi VHAL HIDL yang ada ke VHAL AIDL,
gunakan struktur
implementasi referensi AIDL
untuk mengimplementasikan antarmuka IVehicleHardware.
Jika implementasi HIDL yang ada juga mengikuti
implementasi referensi HIDL,
vendor telah menerapkan class VehicleHal. IVehicleHardware
sangat mirip dengan VehicleHal.
HIDL VHAL
AIDL VHAL
getAllPropertyConfigs()
Sama seperti VehicleHal.listProperties()
getValues(callback, requests)
Dapat memanggil VehicleHal.get() untuk setiap permintaan dan dapat memanggil callback.
dump()
Sama seperti VehicleHal.dump()
checkHealth()
Dapat menampilkan VehicleHal.get()
registerPropertyChangeCallback()
Serupa dengan menetapkan VehicleHal.mOnHalEvent
Perbedaan jenis di AIDL
Saat bermigrasi dari HIDL VHAL ke AIDL VHAL, pertimbangkan perbedaan ini.
HIDL menghasilkan satu file header (types.h) untuk semua jenis yang dihasilkan dari
types.hal. AIDL menghasilkan satu file header untuk setiap jenis. Misalnya,
VehiclePropValue.h dari VehiclePropValue.aidl.
Akibatnya, Anda harus menyertakan semua file header untuk jenis yang Anda perlukan. File bantuan,
VehicleHalTypes.h di library VehicleHalUtils berisi sebagian besar
jenis umum.
Daripada ...
Gunakan
hidl_vec
std::vector
hidl_string
std::string
android::sp
std::shared_ptr
android::wp
std::weak_ptr
Semua jenis yang ditentukan di types.hal sama di AIDL kecuali:
SubscribeFlags dihapus karena tidak digunakan karena
onPropertySet dihapus
UserFlags kini ditentukan di UserInfo.aidl dan harus ditentukan
sebagai flag, bukan enum. Kolom flag pengguna adalah bilangan bulat yang memiliki beberapa
UserInfo.USER_FLAG_XXX bit-or bersama.
RawValue di VehiclePropValue diganti namanya menjadi
RawPropValue
bytes di RawValue diganti namanya menjadi byteValues
Konten dan contoh kode di halaman ini tunduk kepada lisensi yang dijelaskan dalam Lisensi Konten. Java dan OpenJDK adalah merek dagang atau merek dagang terdaftar dari Oracle dan/atau afiliasinya.
Terakhir diperbarui pada 2025-07-27 UTC.
[[["Mudah dipahami","easyToUnderstand","thumb-up"],["Memecahkan masalah saya","solvedMyProblem","thumb-up"],["Lainnya","otherUp","thumb-up"]],[["Informasi yang saya butuhkan tidak ada","missingTheInformationINeed","thumb-down"],["Terlalu rumit/langkahnya terlalu banyak","tooComplicatedTooManySteps","thumb-down"],["Sudah usang","outOfDate","thumb-down"],["Masalah terjemahan","translationIssue","thumb-down"],["Masalah kode / contoh","samplesCodeIssue","thumb-down"],["Lainnya","otherDown","thumb-down"]],["Terakhir diperbarui pada 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`"]]