permission
一、给拥有平台签名的应用默认添加权限
-
创建xml:default_whitelist_com.android.xxx.xml
-
<?xml version="1.0" encoding="utf-8"?> <exceptions> <!-- exception package 为要授予权限的app包名 --> <!-- permission name 为要授予权限的app默认授予的权限 --> <!-- permission的fixed表示授权后是否可以被非系统组件修改权限 --> <exception package="com.android.xxxtest"> <permission name="android.permission.INTERNET" fixed="false"/> <!-- <permission name="android.permission.WRITE_EXTERNAL_STORAGE" fixed="false"/>--> <permission name="android.permission.ACCESS_NETWORK_STATE" fixed="false"/> <!-- <permission name="android.permission.RECORD_AUDIO" fixed="false"/>--> <!-- <permission name="android.permission.READ_PHONE_STATE" fixed="false"/>--> <permission name="android.permission.ACCESS_WIFI_STATE" fixed="false"/> <!-- <permission name="Manifest.permission.CAMERA" fixed="false"/>--> <!-- <permission name="Manifest.permission.READ_PHONE_STATE" fixed="false"/>--> <!-- <permission name="Manifest.permission.RECORD_AUDIO" fixed="false"/>--> <!-- <permission name="Manifest.permission.ACCESS_COARSE_LOCATION" fixed="false"/>--> <!-- <permission name="Manifest.permission.ACCESS_FINE_LOCATION" fixed="false"/>--> <permission name="android.permission.CHANGE_WIFI_STATE" fixed="false"/> <!-- <permission name="android.permission.CAMERA" fixed="false"/>--> <permission name="android.permission.FLASHLIGHT" fixed="false"/> <permission name="android.permission.VIBRATE" fixed="false"/> <permission name="android.permission.FOREGROUND_SERVICE" fixed="false"/> <permission name="android.permission.WAKE_LOCK" fixed="false"/> <!-- <permission name="android.permission.MODIFY_AUDIO_SETTINGS" fixed="false"/>--> <permission name="android.permission.BROADCAST_STICKY" fixed="false"/> <!-- <permission name="android.permission.RECEIVE_BOOT_COMPLETED" fixed="false"/>--> <permission name="android.permission.INTERACT_ACROSS_USERS" fixed="false"/> <permission name="android.permission.GET_TASKS" fixed="false"/> <permission name="android.permission.CHANGE_CONFIGURATION" fixed="false"/> <permission name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" fixed="false"/> <permission name="android.permission.READ_EXTERNAL_STORAGE" fixed="false"/> <permission name="android.permission.WRITE_EXTERNAL_STORAGE" fixed="false"/> <permission name="android.permission.MANAGE_EXTERNAL_STORAGE" fixed="false"/> <permission name="android.permission_group.STORAGE" fixed="false"/> <permission name="android.permission.WRITE_MEDIA_STORAGE" fixed="false"/> <permission name="android.permission.CAMERA" fixed="false"/> <permission name="com.symbol.permission.IMAGER_CAMERA" fixed="false"/> <permission name="android.permission.RECORD_AUDIO" fixed="false"/> <permission name="android.permission.MODIFY_AUDIO_SETTINGS" fixed="false"/> <permission name="android.permission.RECEIVE_BOOT_COMPLETED" fixed="false"/> <permission name="android.permission.ACCESS_FINE_LOCATION" fixed="false"/> <permission name="android.permission.ACCESS_COARSE_LOCATION" fixed="false"/> <permission name="android.permission.READ_PHONE_STATE" fixed="false"/> <permission name="android.permission.READ_MEDIA_VIDEO" fixed="false"/> <permission name="android.permission.READ_MEDIA_AUDIO" fixed="false"/> </exception> </exceptions>
-
将xml文件配置到对应分区的permission文件夹
- bp:
-
prebuilt_etc { name: "default_whitelist_com.android.xxxtest", vendor: true, sub_dir: "default-permissions", src: "default_whitelist_com.android.xxxtest.xml", filename_from_src: true, }
-
- mk:
-
include $(CLEAR_VARS) LOCAL_MODULE := default_whitelist_com.tct.xxx.xml LOCAL_MODULE_CLASS := ETC LOCAL_SRC_FILES := default_whitelist_com.tct.xxx.xml LOCAL_MODULE_TAGS := optional LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR_ETC)/default-permissions include $(BUILD_PREBUILT)
-
- bp:
二、给priv-app 添加特许权限
- 创建xml com.android.xxxtest.xml
-
<?xml version="1.0" encoding="utf-8"?> <permissions> <privapp-permissions package="com.android.xxxtest"> <permission name="android.permission.ACCESS_FM_RADIO"/> <permission name="android.permission.WRITE_SECURE_SETTINGS"/> <permission name="android.permission.CALL_PRIVILEGED"/> <permission name="android.permission.BATTERY_STATS"/> <permission name="android.permission.WRITE_APN_SETTINGS"/> <permission name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/> <permission name="android.permission.WRITE_MEDIA_STORAGE"/> <permission name="android.permission.CAMERA"/> <permission name="com.symbol.permission.IMAGER_CAMERA"/> <permission name="android.permission.RECORD_AUDIO"/> <permission name="android.permission.MODIFY_AUDIO_SETTINGS"/> <permission name="android.permission.RECEIVE_BOOT_COMPLETED"/> <permission name="android.permission.ACCESS_FINE_LOCATION"/> <permission name="android.permission.ACCESS_COARSE_LOCATION"/> <permission name="android.permission.WRITE_EXTERNAL_STORAGE"/> <permission name="android.permission.READ_PHONE_STATE"/> <permission name="android.permission.MANAGE_EXTERNAL_STORAGE"/> </privapp-permissions> </permissions>
- 将xml文件配置到对应分区的permission文件夹
- bp:
-
prebuilt_etc { name: "privapp_whitelist_com.android.xxxtest", vendor: true, sub_dir: "permissions", src: "com.android.xxxtest.xml", filename_from_src: true, }
-
- mk:
-
include $(CLEAR_VARS) LOCAL_MODULE := com.tct.xxx.xml LOCAL_MODULE_CLASS := ETC LOCAL_SRC_FILES := com.tct.xxx.xml LOCAL_MODULE_TAGS := optional LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR_ETC)/permissions include $(BUILD_PREBUILT)
-
- bp:
- 注意:Android 10 以后priv-app 用到的特许权限必须在这个permission xml里配置否则开不了机。
三、adb查看权限
- adb shell dumpsys package permission <权限名>
- 查看使用这个权限的进程
- adb shell dumpsys package <包名>
- 查看对应apk的权限
四、官网
- https://source.android.google.cn/docs/core/permissions/runtime_perms?authuser=1
- https://developer.android.google.cn/training/permissions/usage-notes?authuser=1
五、源码流程
https://blog.csdn.net/qq_34250794/article/details/144412099
六、添加jar包到/system/framework/
- bp 文件
java_import {
name: "xxxxx_frameworkupdate_jar",
sdk_version: "current",
jars: ["com.xxxxx.xxxxxfwupdate.jar"],
installable: false,
}
java_library {
name: "com.xxxxx.xxxxxfwupdate",
installable: true,
sdk_version: "current",
static_libs: ["xxxxx_frameworkupdate_jar"], //zsg jar
required: [
"com.xxxxx.xxxxxfwupdate_permissions", //zsg xml
],
dex_preopt: {
enabled: false,
}
}
prebuilt_etc {
name: "com.xxxxx.xxxxxfwupdate_permissions",
sub_dir: "permissions",
src: "com.xxxxx.xxxxxfwupdate.xml",
filename_from_src: true,
}
- xml 文件 com.xxxxx.xxxxxfwupdate.xml
<?xml version="1.0" encoding="utf-8"?>
<permissions>
<library name="com.xxxxx.xxxxxfwupdate"
file="/system/framework/com.xxxxx.xxxxxfwupdate.jar"/>
</permissions>
- 在应用中使用 AndroidManifest.xml <application
<uses-library
android:name="com.xxxxx.xxxxxfwupdate"
android:required="true" />
- 当然要在AS编译首先需要这个jar包,但是只是compileOnly