Android Q - Signature|privileged permissions not in privapp-permissions whitelist(卡在开机logo无法开机)
预置到priv-app目录下的应用,如需申请signature权限,需在frameworks/base/data/etc/privapppermissions-platform.xml中进行额外的声明。
简单记录下,我是在 launcher3 里进行修改,添加了几个权限后,替换应用正常运行,但是在重新编译软件时无法开机,Android studio 提示错误如下:
system_process E/AndroidRuntime: *** FATAL EXCEPTION IN SYSTEM PROCESS: main
java.lang.IllegalStateException: Signature|privileged permissions not in privapp-permissions whitelist: {com.android.launcher3: android.permission.BATTERY_STATS, com.android.launcher3: android.permission.MODIFY_PHONE_STATE, com.android.launcher3: android.permission.READ_PRIVILEGED_PHONE_STATE}
at com.android.server.pm.permission.PermissionManagerService.systemReady(PermissionManagerService.java:2963)
at com.android.server.pm.permission.PermissionManagerService.access$100(PermissionManagerService.java:122)
at com.android.server.pm.permission.PermissionManagerService$PermissionManagerServiceInternalImpl.systemReady(PermissionManagerService.java:3024)
at com.android.server.pm.PackageManagerService.systemReady(PackageManagerService.java:21845)
at com.android.server.SystemServer.startOtherServices(SystemServer.java:2110)
at com.android.server.SystemServer.run(SystemServer.java:530)
at com.android.server.SystemServer.main(SystemServer.java:367)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:503)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:914)
很明显这权限问题,向大佬请教下,他在预置三方应用时遇到过
预置到 priv-app 目录下的应用,如需申请 signature 权限,需在 frameworks/base/data/etc/privapppermissions-platform.xml 中进行额外的声明。 例如 facebook 需要申请 CHANGE_DEVICE_IDLE_TEMP_WHITELIST 若未添加申请会出现无法开机现象。
并且由于是 launcher,发现在 frameworks/base/data/etc/ 下有一个 com.android.launcher3.xml 文件,故直接在里面添加新加的权限。
diff --git a/data/etc/com.android.launcher3.xml b/data/etc/com.android.launcher3.xml
index 17d614e..1866ec0 100644
--- a/data/etc/com.android.launcher3.xml
+++ b/data/etc/com.android.launcher3.xml
@@ -20,5 +20,8 @@
<permission name="android.permission.CONTROL_REMOTE_APP_TRANSITION_ANIMATIONS"/>
<permission name="android.permission.GET_ACCOUNTS_PRIVILEGED"/>
<permission name="android.permission.WRITE_SECURE_SETTINGS"/>
+ <permission name="android.permission.BATTERY_STATS"/>
+ <permission name="android.permission.MODIFY_PHONE_STATE"/>
+ <permission name="android.permission.READ_PRIVILEGED_PHONE_STATE"/>
</privapp-permissions>
</permissions>
经过尝试发现,当前文件的修改不需要模块编译,只需单独替换添加(或修改)的xml文件,替换设备中以下路径文件
最后补充一下在展锐8581E上遇到的情况,原Dialer应用在A12上被替换为展讯的SprdDialer应用了,路径修改为 vendor/sprd/platform/frameworks/base/data/etc/com.android.dialer.xml
更多推荐
所有评论(0)