AOSP13车机模拟器因CAR_VENDOR_EXTENSION权限陷入启动循环
AOSP 13车机模拟器priv-app权限白名单导致启动循环问题
问题场景
我的Android AOSP 13车机模拟器(sdk_car_x86_64-userdebug)中,名为VehiclePropertyTest的厂商应用请求android.car.permission.CAR_VENDOR_EXTENSION权限后,设备陷入启动循环。经排查,启动失败核心原因是priv-app权限白名单配置问题,相关报错日志如下:
02-01 19:28:30.814 2590 2590 W PackageManager: Privileged permission android.car.permission.CAR_VENDOR_EXTENSION for package com.example.vehiclepropertytest (/system_ext/priv-app/VehiclePropertyTest) not in privapp-permissions allowlist 02-01 19:28:33.067 2590 2590 W PackageManager: Privileged permission android.car.permission.CAR_VENDOR_EXTENSION for package com.example.vehiclepropertytest (/system_ext/priv-app/VehiclePropertyTest) not in privapp-permissions allowlist 02-01 19:28:33.068 2590 2590 E System : java.lang.IllegalStateException: Signature|privileged permissions not in privapp-permissions allowlist: {com.example.vehiclepropertytest (/system_ext/priv-app/VehiclePropertyTest): android.car.permission.CAR_VENDOR_EXTENSION} 02-01 19:28:33.068 2590 2590 E Zygote : java.lang.IllegalStateException: Signature|privileged permissions not in privapp-permissions allowlist: {com.example.vehiclepropertytest (/system_ext/priv-app/VehiclePropertyTest): android.car.permission.CAR_VENDOR_EXTENSION} 02-01 19:28:33.068 2590 2590 E AndroidRuntime: java.lang.IllegalStateException: Signature|privileged permissions not in privapp-permissions allowlist: {com.example.vehiclepropertytest (/system_ext/priv-app/VehiclePropertyTest): android.car.permission.CAR_VENDOR_EXTENSION}
该应用为priv-app,用于访问AIDL HAL中定义的厂商专属属性,已在AndroidManifest.xml中声明权限:
<uses-permission android:name="android.car.permission.CAR_VENDOR_EXTENSION"/>
已尝试的排查操作
我尝试了两种方式添加权限白名单,但均未解决问题:
- 修改系统默认权限白名单文件:
frameworks/base/data/etc/permissions/privapp-permissions-platform.xml,添加如下配置:
<!-- 注意:此处存在标签拼写错误 --> <privapp-permssions package="com.example.vehiclepropertytest"> <permission name="android.car.permission.CAR_VENDOR_EXTENSION"/> </privapp-permissions>
- 创建自定义权限白名单文件,并通过应用的
Android.bp打包:
- 自定义权限文件
privapp-permissions-vehiclepropertytest.xml:
<?xml version="1.0" encoding="utf-8"?> <permissions> <privapp-permissions package="com.example.vehiclepropertytest"> <permission name="android.car.permission.CAR_VENDOR_EXTENSION"/> </privapp-permissions> </permissions>
- 应用
Android.bp配置:
prebuilt_etc { name: "privapp-permission-vehiclepropertytest", src: "privapp-permissions-vehiclepropertytest.xml", sub_dir: "permissions", filename_from_src: true, } // 应用模块中添加依赖 android_app { // ...其他配置 required: ["privapp-permission-vehiclepropertytest"], }
待解决问题
- 如何验证
android.car.permission.CAR_VENDOR_EXTENSION权限是否已正确添加到白名单? - AOSP 13中该权限是否存在已知冲突或问题?
解决方案与解答
问题1:验证权限白名单的方法
检查系统镜像中的权限文件:通过
adb pull命令导出对应分区的权限文件,比如:- 如果是修改系统默认文件,执行:
adb pull /system/etc/permissions/privapp-permissions-platform.xml - 如果是自定义文件,执行:
adb pull /system_ext/etc/permissions/privapp-permissions-vehiclepropertytest.xml
打开文件后确认是否包含目标包名和权限的正确配置。
- 如果是修改系统默认文件,执行:
查看PackageManager权限状态:执行
adb shell dumpsys package com.example.vehiclepropertytest,在输出中查找权限相关内容,确认android.car.permission.CAR_VENDOR_EXTENSION是否被标记为granted,或是否存在白名单相关的警告信息。检查编译输出文件:在AOSP编译后的
out/target/product/sdk_car_x86_64目录下,找到对应分区的权限文件路径(如system/etc/permissions/或system_ext/etc/permissions/),确认配置已正确打包。
问题2:AOSP 13中CAR_VENDOR_EXTENSION权限的注意事项
- 该权限属于
signature|privileged级别,必须同时满足三个条件才能生效:应用是priv-app、应用签名与系统签名匹配(userdebug版本可使用debug签名)、权限已显式加入privapp-permissions白名单。 - AOSP 13对priv-app权限管控进一步严格,所有
signature|privileged权限必须显式添加到白名单,否则会触发启动失败(即用户遇到的启动循环),这是正常的权限管控机制,而非权限本身的冲突。 - 注意应用安装分区与权限文件分区的对应性:如果应用安装在
/system_ext/priv-app,对应的权限白名单文件必须放在/system_ext/etc/permissions目录下,否则PackageManager无法读取到配置。
额外修复建议
- 修正标签拼写错误:第一种方法中
<privapp-permssions>标签少了一个字母i,应改为<privapp-permissions>,重新编译系统后生效。 - 指定权限文件的分区:第二种方法中,需在
prebuilt_etc模块中添加system_ext_specific: true,,确保权限文件被打包到system_ext分区:
prebuilt_etc { name: "privapp-permission-vehiclepropertytest", src: "privapp-permissions-vehiclepropertytest.xml", sub_dir: "permissions", filename_from_src: true, system_ext_specific: true, // 添加此行指定分区 }
- 确认签名匹配:userdebug版本可使用debug签名,但如果是release版本,必须使用系统签名才能获取该权限。
内容的提问来源于stack exchange,提问作者Dutchman
相关产品推荐
相关产品推荐

