And*_*ost 10 android android-manifest android-gradle-plugin
我正在尝试使用清单占位符来删除for发布版本中的uses-permission节点AndroidManifest.xml而没有运气.
的build.gradle
buildTypes {
release {
manifestPlaceholders.excludeDebugPermissions = "remove"
}
debug {
manifestPlaceholders.excludeDebugPermissions = "merge"
}
}
Run Code Online (Sandbox Code Playgroud)
AndroidManifest.xml中
<uses-permission
android:name="android.permission.SYSTEM_ALERT_WINDOW"
tools:node="${excludeDebugPermissions}" />
Run Code Online (Sandbox Code Playgroud)
它会产生如下错误:
错误:任务':app:processDebugManifest'的执行失败.没有枚举常量com.android.manifmerger.NodeOperationType.$ {EXCLUDE_DEBUG_PERMISSIONS}
但是在其他任何地方使用占位符都能正常工作(合并后的清单是正常的并且没有错误),例如
<uses-permission
android:name="${excludeDebugPermissions}"
tools:node="remove" />
Run Code Online (Sandbox Code Playgroud)
所以我认为该tools:node属性不支持清单占位符,我可能会通过替换权限名称而不是节点标记(merge/ remove)来破解它,但我希望尽可能避免使用它.
有什么建议吗?
为了回应您关于 React Native 的评论,我发现了这个: https: //github.com/facebook/react-native/issues/5886
解决方案是在您的构建类型中包含此内容,这与您当前拥有的略有不同:
buildTypes {
debug {
manifestPlaceholders = [excludeSystemAlertWindowPermission: "false"]
}
release {
manifestPlaceholders = [excludeSystemAlertWindowPermission: "true"]
}
}
Run Code Online (Sandbox Code Playgroud)
所以这将出现在你的清单中:
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" tools:remove="${excludeSystemAlertWindowPermission}"/>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1227 次 |
| 最近记录: |