简单记录下,我是在 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

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐