我正在尝试基于 VHAL EVS 文档在 Android 内开发本机应用程序: https://source.android.com/docs/devices/automotive/camera-hal
我正在使用 x86_64 模拟器目标。午餐目标是 sdk_car_x86_64-userdebug,我使用 SDK 模拟器作为目标,我的 Android 版本是 13.0.0,版本 8。
我的第一个也是最困难的任务是在模拟器中启动并运行 evs 默认服务。理论上,所有代码都存在于 Android 源代码中,因此我将所需的服务添加到构建中:
diff --git a/common/car.mk b/common/car.mk
index cbcf55a..5897e90 100644
--- a/common/car.mk
+++ b/common/car.mk
@@ -18,6 +18,13 @@
PRODUCT_PACKAGES += \
android.hardware.automotive.vehicle@V1-emulator-service \
[email protected] \
+ [email protected] \
+ android.frameworks.automotive.telemetry-V1-ndk \
+ [email protected] \
+ android.hardware.automotive.evs-V1-ndk \
+ [email protected] \
+ android.hardware.automotive.evs-aidl-default-service \
+ evs_app \
android.hardware.audio.service-caremu
我构建目标(lunch sdk_car_x86_64-userdebug,mm -j8),准备模拟器(/device/generic/car/tools/test_pack_avd_img.sh),最后执行它,瞧,EVS 服务未运行。
让我们看看logcat:
02-13 10:47:31.364 236 236 I servicemanager: Could not find android.hardware.automotive.evs.IEvsEnumerator/default in the VINTF manifest.
02-13 10:47:31.365 933 933 E CarServiceJNI: android.hardware.automotive.evs.IEvsEnumerator/default is not available.
02-13 10:47:31.365 933 933 E CarServiceJNI: Failed to initialize a service context
02-13 10:47:31.365 933 933 E CAR.EVS : Transition failed: error = -1
02-13 10:47:32.366 933 933 D CAR.EVS : Trying to connect to the EVS HAL service.
02-13 10:47:32.366 933 933 I CAR.EVS : Transition requested: UNAVAILABLE -> INACTIVE
可能是什么问题?为什么servicemanager找不到vintf清单?我查了一下,vintf 清单可以在这里找到:/vendor/etc/vintf/manifest/[email protected]
你知道我该如何进步吗?
我尝试使用不同的午餐目标,但至少只有 sdk_car_x86_64 支持开箱即用的 Automative OS 模拟器。
您应该检查 evs hal 模块中是否有 hardware/interfaces/automotive/evs/aidl/impl/default/evs-default-service.xml ,如果没有,请从 aosp 源代码中复制它。如果存在,请检查您在清单 /vendor/etc/vintf/manifest/manifest.xml 中定位的 FCM,在该 FCM 版本中检查它是否需要 evs hal。
如果您的目标是aidl hal,也请删除这些
[email protected] \
android.hardware.automotive.evs-V1-ndk \
[email protected] \
我解决了这个问题。您可以执行以下步骤来解决此问题吗?在此处输入图像描述