编译Android 13车载版时“Unknown qemu_device”错误的解决方法
编译AOSP CAR X86_64 Android 13失败解决与分支选择建议
问题描述
编译Android 13的AOSP CAR X86_64(Lunch 11)时,进度到98%失败,提示unknown type qemu_device。尝试android-13.0.0_r74和r69分支均未成功,未找到相关解决方案。
编译错误日志
build/make/core/soong_config.mk:209: warning: BOARD_PLAT_PUBLIC_SEPOLICY_DIR has been deprecated. Use SYSTEM_EXT_PUBLIC_SEPOLICY_DIRS instead. build/make/core/soong_config.mk:210: warning: BOARD_PLAT_PRIVATE_SEPOLICY_DIR has been deprecated. Use SYSTEM_EXT_PRIVATE_SEPOLICY_DIRS instead. ============================================ PLATFORM_VERSION_CODENAME=REL PLATFORM_VERSION=13 TARGET_PRODUCT=aosp_car_x86_64 TARGET_BUILD_VARIANT=userdebug TARGET_BUILD_TYPE=release TARGET_ARCH=x86_64 TARGET_ARCH_VARIANT=x86_64 TARGET_2ND_ARCH=x86 TARGET_2ND_ARCH_VARIANT=x86_64 HOST_ARCH=x86_64 HOST_2ND_ARCH=x86 HOST_OS=linux HOST_OS_EXTRA=Linux-6.2.0-26-generic-x86_64-Ubuntu-22.04.3-LTS HOST_CROSS_OS=windows HOST_CROSS_ARCH=x86 HOST_CROSS_2ND_ARCH=x86_64 HOST_BUILD_TYPE=release BUILD_ID=TQ3A.230605.012 OUT_DIR=out PRODUCT_SOONG_NAMESPACES=device/generic/goldfish device/generic/goldfish-opengl hardware/google/camera hardware/google/camera/devices/EmulatedCamera ============================================ build/make/core/build_id.mk was modified, regenerating... build/make/core/version_defaults.mk was modified, regenerating... [ 98% 1032/1048] including system/sepolicy/Android.mk ... system/sepolicy/Android.mk:57: warning: BOARD_PLAT_PUBLIC_SEPOLICY_DIR has been deprecated. Use SYSTEM_EXT_PUBLIC_SEPOLICY_DIRS instead. system/sepolicy/Android.mk:62: warning: BOARD_PLAT_PRIVATE_SEPOLICY_DIR has been deprecated. Use SYSTEM_EXT_PRIVATE_SEPOLICY_DIRS instead. [ 1% 1155/68889] //system/sepolicy:sepolicy_neverallows_vendor Neverallow check: sepolicy_neverallows_vendor FAILED: out/soong/.intermediates/system/sepolicy/sepolicy_neverallows_vendor/policy out/host/linux-x86/bin/checkpolicy -M -c 30 -o out/soong/.intermediates/system/sepolicy/sepolicy_neverallows_vendor/policy out/soong/.intermediates/system/sepolicy/sepolicy_neverallows_vendor.checkpolicy.conf/android_common/sepolicy_neverallows_vendor. checkpolicy.conf # hash of input list: 15871fa7f1904c26cfc726ea362c19ede7f225bff09f1871b1f7d5657882753a device/generic/car/emulator/usbpt/bluetooth/btusb/sepolicy/domain.te:2:ERROR 'unknown type qemu_device' at token ';' on line 78981: allow domain qemu_device:chr_file { { getattr open read ioctl lock map watch watch_reads } { open append write lock map } }; #line 1 "device/generic/car/emulator/usbpt/bluetooth/btusb/sepolicy/domain.te" checkpolicy: error(s) encountered while parsing configuration 09:14:22 ninja failed with: exit status 1 #### failed to build some targets (03:20 (mm:ss)) ####
编译错误解决步骤
错误根源是SEPolicy规则中引用了未定义的qemu_device类型,可通过以下两种方式修复:
方法1:替换为已存在的设备类型
- 打开文件
device/generic/car/emulator/usbpt/bluetooth/btusb/sepolicy/domain.te - 将第2行的
qemu_device替换为goldfish_device(X86_64模拟器环境下的标准设备类型),修改后规则如下:allow domain goldfish_device:chr_file { { getattr open read ioctl lock map watch watch_reads } { open append write lock map } }; - 重新执行编译命令:
make -j$(nproc)
方法2:定义缺失的设备类型
- 在同一sepolicy目录下创建
qemu_device.te文件,添加类型定义:type qemu_device, dev_type; - 修改该目录下的
file_contexts文件,添加设备节点的上下文映射(按需添加):/dev/qemu.* u:object_r:qemu_device:s0 - 重新执行编译命令
AOSP分支选择建议
- 稳定优先:优先选择
android-XX.0.0_rXX格式的发布分支,这类分支经过官方测试,稳定性高,适合生产或常规开发。 - 特性需求:若需要特定新特性,可选择
android-XX.1.0_rXX的维护更新分支,或master分支(注意master为开发分支,稳定性差,可能存在未修复bug)。 - 维护周期:每个Android版本分支有固定维护周期,选择时需确认目标分支是否仍在官方维护范围内,避免后续无法获取安全补丁。
版本发布说明查询方法
- 源码内置文件:查看分支下的
build/make/core/build_id.mk和build/make/core/version_defaults.mk,可获取版本号、BUILD_ID等核心信息。 - 变更记录:通过git命令查看分支提交历史,了解版本更新内容:
repo forall -c git log --oneline -n 20 - 框架配置:查看
frameworks/base/core/res/res/values/config.xml文件,可了解系统特性的配置变更。
内容的提问来源于stack exchange,提问作者HucKQC
相关产品推荐
相关产品推荐

