使用gradle构建Android应用程序时如何删除特定权限?

Posted

技术标签:

【中文标题】使用gradle构建Android应用程序时如何删除特定权限?【英文标题】:How to remove specific permission when build Android app with gradle? 【发布时间】:2015-10-15 11:15:11 【问题描述】:

最近 Google 自动将 Google 服务的许可合并到最终发布的 apk。 有人在这里问Why are permissions being automatically added to my androidManifest when including Google Play Services library

我的问题是不需要某些权限,并且我不希望在我的应用中获得某些敏感权限。那么如何删除 android.permission.ACCESS_COARSE_LOCATION 之类的权限呢? 使用 gradle build,我不想禁用 Manifest Merger。我读了一些可以配置合并以从外部库中删除权限的地方,但我找不到如何做到这一点。

【问题讨论】:

【参考方案1】:

将值为remove 的属性tools:node 添加到您的清单中:

<manifest ... xmlns:tools="http://schemas.android.com/tools">
    ...
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" tools:node="remove" />
    ...
</manifest>

见http://tools.android.com/tech-docs/new-build-system/user-guide/manifest-merger#TOC-tools:node-markers

不要忘记将 tools 命名空间添加到清单的根元素。

【讨论】:

以上是关于使用gradle构建Android应用程序时如何删除特定权限?的主要内容,如果未能解决你的问题,请参考以下文章

如何在构建服务器和工作站之间同步 Gradle/Android 版本代码

构建android gradle项目时如何禁用proguard生成dump.txt

如何在 Gradle 构建脚本(Android)中定义和使用常量?

使用 Gradle 构建 Android AAR

如何使用 Gradle 构建系统让 PhoneGap 项目在 Android Studio 中运行

如何根据构建变体使用 gradle 不同依赖模块的依赖项进行编译?