You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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"/>

已尝试的排查操作

我尝试了两种方式添加权限白名单,但均未解决问题:

  1. 修改系统默认权限白名单文件: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>
  1. 创建自定义权限白名单文件,并通过应用的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"],
}

待解决问题

  1. 如何验证android.car.permission.CAR_VENDOR_EXTENSION权限是否已正确添加到白名单?
  2. 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无法读取到配置。

额外修复建议

  1. 修正标签拼写错误:第一种方法中<privapp-permssions>标签少了一个字母i,应改为<privapp-permissions>,重新编译系统后生效。
  2. 指定权限文件的分区:第二种方法中,需在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, // 添加此行指定分区
}
  1. 确认签名匹配:userdebug版本可使用debug签名,但如果是release版本,必须使用系统签名才能获取该权限。

内容的提问来源于stack exchange,提问作者Dutchman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 03:44:51