Android AOSP13 汽车模拟器在 CAR_VENDOR_EXTENSION 权限请求(priv-app)后进入引导循环

问题描述 投票:0回答:1

在名为 VehiclePropertyTest 的供应商应用程序请求 CAR_VENDOR_EXTENSION 权限后,我的 Android AOSP 13 汽车模拟器 (sdk_car_x86_64-userdebug) 陷入启动循环。发现启动序列无法完成,因为 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}

创建了一个名为 VehiclePropertyTest 的供应商应用程序,它是一个 priv-app 并使用 CAR_VENDOR_EXTENSION 作为供应商特定属性(已添加到 aidl hal 中)。

在AndroidManifest.xml中添加以下权限

<uses-permission android:name="android.car.permission.CAR_VENDOR_EXTENSION"/>

故障排除尝试:

通过两种方式将 CAR_VENDOR_EXTENSION 添加到权限白名单:

  1. Android文档修改了对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>
    
  2. 创建自定义权限xml并将其添加到应用程序的Android.bp中的prebuilt_etc

privapp-permission-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,
}

然后

required: ["privapp-permission-vehiclepropertytest"],
里面 android_app{}

问题:

  1. 如何验证 CAR_VENDOR_EXTENSION 权限是否已正确添加到白名单?
  2. AOSP 13 中此权限是否存在已知的冲突或问题?

任何见解将不胜感激。预先感谢:)

android android-permissions android-source android-13 android-automotive
1个回答
0
投票

注意 - 我从未测试过这是否适用于您的情况的 priv 权限白名单。恕我直言,如果你想做这种系统相关的开发,最好从源代码构建你自己的模拟器,而不是在 Android Studio 上使用模拟器进行调整。

s.a.c文档中所述,priv权限白名单应位于产品、供应商或系统分区中。 (请查看文档以了解更多详细信息)

我认为您可以通过将模拟器更改为可写系统来添加权限白名单。您可以在终端中的 Android Studio 上启动模拟器 AVD,使其可写系统。 (我的情况是Mac)

export ANDROID_SDK_ROOT=~/Library/Android/sdk 
cd ~/Library/Android/sdk/emulator
./emulator -list-avds # check your AVD name
./emulator @avd_name -writable-system -no-snapshot

为 ADB 命令打开另一个终端

adb root
adb remount

现在,您可以修改供应商、产品、系统等系统分区中的文件。尝试按照 s.a.c 文档中的说明将您的包添加为 priv 权限白名单。

我认为您已经知道如何将供应商专用应用程序添加到正确的位置。之后,尝试重新启动模拟器。 (亚行重新启动)

© www.soinside.com 2019 - 2024. All rights reserved.