实现android清单文件里某个权限动态配置

举例:<uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE" />
需求:debug有这个权限,release没有这个权限

一. 第一种是第三方库没有引入MANAGE_EXTERNAL_STORAGE权限,实现如下

app的AndroidManifest.xml
XML 复制代码
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="com.example.demo">
    <uses-permission android:name="${MANAGE_EXTERNAL_STORAGE}"
    tools:node="merge"/>

    <application.../>
</manifest>
app模块下build.gradle
Groovy 复制代码
android {
    ...
    buildTypes {
        debug {
            ...
            //debug提供真实权限
            manifestPlaceholders = [MANAGE_EXTERNAL_STORAGE: "android.permission.MANAGE_EXTERNAL_STORAGE"]
        }
        release {
            ...
            //release提供com.example.demo.permission占位,有值才能编译过
            manifestPlaceholders = [MANAGE_EXTERNAL_STORAGE: "com.example.demo.permission"]
        }
    }
}

二.第二种是第三方库已经引入了MANAGE_EXTERNAL_STORAGE权限,实现如下

app的AndroidManifest.xml
XML 复制代码
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="com.example.demo">
    <uses-permission android:name="${MANAGE_EXTERNAL_STORAGE}"
    tools:node="remove"/>

    <application.../>
</manifest>
app模块下build.gradle
Groovy 复制代码
android {
...
    buildTypes {
        debug {
            ...
            //debug提供com.example.demo.permission占位,有值才能编译过
            manifestPlaceholders = [MANAGE_EXTERNAL_STORAGE: "com.example.demo.permission"]
        }
        release {
            ...
            //release提供真实权限
            manifestPlaceholders = [MANAGE_EXTERNAL_STORAGE: "android.permission.MANAGE_EXTERNAL_STORAGE"]
        }
    }
}
相关推荐
技术小甜甜4 分钟前
[Godot游戏开发] 安卓平台游戏如何设置窗口与分辨率:Viewport、Window Override与自适应窗口解析
android·游戏·godot
我血条子呢9 分钟前
【Vue3组件示例】简单类甘特图组件
android·javascript·甘特图
c***21298 小时前
Springboot3学习(5、Druid使用及配置)
android·学习
修炼者9 小时前
【Android 进阶】别再强转 Context 了!手把手教你优雅解耦 View 与 Activity
android·android studio
x***01069 小时前
SpringSecurity+jwt实现权限认证功能
android·前端·后端
程序员江同学9 小时前
线下活动|2025 Kotlin 中文开发者大会北京分会场
android·kotlin
李坤林10 小时前
Android Vulkan 开启VK_GOOGLE_DISPLAY_TIMING 后,一个vsync 会释放两个imageBuffer现象分析
android·vulkan
Jerry10 小时前
Compose 状态思维
android
k***459911 小时前
MySQL----case的用法
android·数据库·mysql
r***869812 小时前
Plugin ‘mysql_native_password‘ is not loaded`
android·数据库·mysql