1. 程式人生 > 實用技巧 >Android 原始碼中新增APK到system/priv-app下,無法開機

Android 原始碼中新增APK到system/priv-app下,無法開機

第一步:

adb logcat 取出log

11-02 10:34:59.306  5568  5568 D AndroidRuntime: Shutting down VM
11-02 10:34:59.306  5568  5568 E AndroidRuntime: *** FATAL EXCEPTION IN SYSTEM PROCESS: main
11-02 10:34:59.306  5568  5568 E AndroidRuntime: java.lang.IllegalStateException: Signature|privileged permissions not in privapp-permissions whitelist:
{com.xxx.app.activation (/system/priv-app/WarrantyValidation): android.permission.CHANGE_COMPONENT_ENABLED_STATE, com.xxx.app.activation (/system/priv-app/WarrantyValidation): android.permission.READ_PRIVILEGED_PHONE_STATE, com.xxx.app.activation (/system/priv-app/WarrantyValidation): android.permission.PACKAGE_USAGE_STATS}
11-02 10:34:59.306 5568 5568 E AndroidRuntime: at com.android.server.pm.permission.PermissionManagerService.systemReady(PermissionManagerService.java:4674) 11-02 10:34:59.306 5568 5568 E AndroidRuntime: at com.android.server.pm.permission.PermissionManagerService.access$500(PermissionManagerService.java:182
) 11-02 10:34:59.306 5568 5568 E AndroidRuntime: at com.android.server.pm.permission.PermissionManagerService$PermissionManagerServiceInternalImpl.systemReady(PermissionManagerService.java:4757) 11-02 10:34:59.306 5568 5568 E AndroidRuntime: at com.android.server.pm.PackageManagerService.systemReady(PackageManagerService.java:21707) 11-02 10:34:59.306 5568 5568 E AndroidRuntime: at com.android.server.SystemServer.startOtherServices(SystemServer.java:2236) 11-02 10:34:59.306 5568 5568 E AndroidRuntime: at com.android.server.SystemServer.run(SystemServer.java:623) 11-02 10:34:59.306 5568 5568 E AndroidRuntime: at com.android.server.SystemServer.main(SystemServer.java:429) 11-02 10:34:59.306 5568 5568 E AndroidRuntime: at java.lang.reflect.Method.invoke(Native Method) 11-02 10:34:59.306 5568 5568 E AndroidRuntime: at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:612) 11-02 10:34:59.306 5568 5568 E AndroidRuntime: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:975) 11-02 10:34:59.309 5568 5568 I PowerHalWrapper: <NotifyAppCrash> pack: ,pid: == myPid:5568 11-02 10:34:59.310 5568 5568 I DropBoxManagerService: add tag=system_server_crash isTagEnabled=true flags=0x2 11-02 10:34:59.314 5568 5568 W AES : Exception Log handling... 11-02 10:34:59.315 5568 5568 D AES : ExceptionLog: notify aed, process:system_server pid:5568 cause:system_server_crash

從log中可以看出是沒有新增許可權導致的問題。

第二步

新增許可權,檔案地址:frameworks/base/data/etc/privapp-permissions-platform.xml

</permissions>
.......................... <privapp-permissions package="com.xxx.app.activation"> <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/> <uses-permission android:name="android.permission.READ_PHONE_STATE"/> <uses-permission android:name="android.permission.FOREGROUND_SERVICE"/> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/> <uses-permission android:name="android.permission.INTERNET"/> <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE"/> </privapp-permissions> </permissions>

這些許可權都是這個應用在AndroidManifest.xml中申請的許可權。