android – 无法使用清单占位符删除权限

我正在尝试使用清单占位符来删除 AndroidManifest.xml中的uses-permission节点以获取发布版本,但没有运气.

的build.gradle

buildTypes {
    release {
        manifestPlaceholders.excludeDebugPermissions = "remove"
    }
    debug {
        manifestPlaceholders.excludeDebugPermissions = "merge"
    }
}

AndroidManifest.xml中

<uses-permission
    android:name="android.permission.SYstem_ALERT_WINDOW"
    tools:node="${excludeDebugPermissions}" />

它会产生如下错误

Error:Execution Failed for task ‘:app:processDebugManifest’.
No enum constant com.android.manifmerger.NodeOperationType.${EXCLUDE_DEBUG_PERMISSIONS}

但是在其他任何地方使用占位符都能正常工作(合并后的清单是正常的并且没有错误),例如

<uses-permission
    android:name="${excludeDebugPermissions}"
    tools:node="remove" />

所以我想工具:node属性不支持清单占位符,我可能会通过替换权限名称而不是节点标记(合并/删除)来破解它,但我希望尽可能避免使用它.

有什么建议吗?

解决方法

我发现解决此问题的最简单,最干净的方法是创建一个仅发布的AndroidManifest文件(app / src / release / AndroidManifest.xml),其中包含以下内容删除SYstem_ALERT_WINDOW权限:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools">
    <uses-permission android:name="android.permission.SYstem_ALERT_WINDOW" tools:node="remove"/>
</manifest>

相关文章

Android性能优化——之控件的优化 前面讲了图像的优化,接下...
前言 上一篇已经讲了如何实现textView中粗字体效果,里面主要...
最近项目重构,涉及到了数据库和文件下载,发现GreenDao这个...
WebView加载页面的两种方式 一、加载网络页面 加载网络页面,...
给APP全局设置字体主要分为两个方面来介绍 一、给原生界面设...
前言 最近UI大牛出了一版新的效果图,按照IOS的效果做的,页...