ANDROID 添加默认权限 及 添加jar到/system/framework使用

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)
        

二、给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)
        
  • 注意: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

五、源码流程

  • TODO

六、添加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
  • 30
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
要将自定义库jar添加Android系统的/system/framework目录下并允许APK调用,需要进行以下步骤: 1. 将自定义库jar包复制到Android源代码的/frameworks/base/libs/目录下。 2. 修改Android源代码的/frameworks/base/core/java/Android.mk文件,在LOCAL_JAVA_LIBRARIES变量中添加自定义库的名称。 例如,如果自定义库的名称是mylibrary.jar,修改后的LOCAL_JAVA_LIBRARIES变量应该是: ``` LOCAL_JAVA_LIBRARIES := core-libart bouncycastle apache-xml conscrypt mylibrary ``` 3. 修改Android源代码的/build/target/product/core.mk文件,在PRODUCT_BOOT_JARS变量中添加自定义库的名称。 例如,如果自定义库的名称是mylibrary.jar,修改后的PRODUCT_BOOT_JARS变量应该是: ``` PRODUCT_BOOT_JARS := $(call add-to-boot-jars,core-libart bouncycastle apache-xml conscrypt mylibrary) ``` 4. 编译Android源代码,并将编译后的系统镜像烧录到设备上。 5. 在APK中使用自定义库,需要在AndroidManifest.xml文件中添加以下权限: ``` <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> ``` 6. 在APK中使用自定义库,需要在build.gradle文件中添加以下依赖: ``` dependencies { implementation files('/system/framework/mylibrary.jar') } ``` 注意:由于/system/framework目录是系统级别的目录,因此需要具有root权限才能将自定义库jar包复制到该目录中。同时,修改Android源代码需要一定的编译和构建知识和经验,建议在熟悉Android源代码的情况下进行操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值