Android车机模拟器EVS服务启动失败:VINTF清单未找到问题排查
EVS服务启动失败(VINTF清单未找到)排查方向
验证VINTF清单的有效性
- 核对
manifest_android.hardware.automotive.evs@1.1-service.xml中android.hardware.automotive.evs.IEvsEnumerator/default的声明,确保接口版本、实例名称与代码引用完全一致 - 在构建环境中执行
vintf validate /path/to/manifest_android.hardware.automotive.evs@1.1-service.xml检查XML格式是否合法,排除语法错误 - 确认清单内
<hal>标签的name、transport、version字段与实际EVS HAL实现的配置匹配
- 核对
确认清单的打包与部署
- 检查构建脚本(如
common/car.mk或相关产品配置文件)是否通过PRODUCT_COPY_FILES将该清单正确复制到vendor/etc/vintf/manifest/路径,避免仅存在于源码目录未被打包进镜像 - 使用
adb pull /vendor/etc/vintf/manifest/manifest_android.hardware.automotive.evs@1.1-service.xml拉取设备上的文件,验证内容是否与源码一致,且文件权限为644(所有者可读可写,其他可读) - 查看构建日志中
vintf manifest merge相关输出,确认该清单被成功合并到系统全局VINTF清单中
- 检查构建脚本(如
排查EVS服务的启动流程
- 检查EVS服务的init启动脚本(如
android.hardware.automotive.evs@1.1-service.rc),确保service块的class、user、group配置正确,且exec命令指向正确的服务二进制文件,同时依赖servicemanager等必要服务 - 执行
adb logcat -s init查看init进程日志,确认EVS服务是否尝试启动,是否存在权限不足、依赖缺失等启动失败信息 - 检查SELinux策略,执行
adb dmesg | grep avc: denied查看是否有EVS服务相关的权限拒绝日志,若存在需补充对应的SELinux规则
- 检查EVS服务的init启动脚本(如
验证服务注册状态
- 执行
adb shell service list | grep evs检查android.hardware.automotive.evs.IEvsEnumerator/default是否已注册到servicemanager,未注册则说明服务启动失败或注册逻辑有误 - 查看EVS服务的专属日志(若有自定义日志标签),确认服务初始化过程中是否有异常导致注册失败,比如HAL加载失败、资源获取错误等
- 执行
确认镜像构建与加载正确性
- 确认构建时选择的是
sdk_car_x86_64-userdebug目标,且构建过程中未跳过EVS相关模块的编译,查看构建日志排除编译错误 - 验证模拟器加载的是最新构建的镜像,可通过
emulator -wipe-data清除旧缓存后重新启动模拟器,确保新配置生效
- 确认构建时选择的是
内容的提问来源于stack exchange,提问作者Csaba Purszki
相关产品推荐
相关产品推荐

