禁用依赖权限

时间:2015-01-17 08:33:55

标签: android android-manifest android-gradle

我现在面临以下问题:

我开发了应用'A',它使用权限1,2,3并使用第三方库'B'作为依赖项(使用maven& gradle添加)。

库“B”使用权限4和5.现在,在构建应用程序时,清单合并会将权限4和5添加到应用程序“A”。

如何防止这种情况,并且在最终清单中只拥有权限1,2和3?

我的第一个猜测是使用其中一个明显的合并标记:http://tools.android.com/tech-docs/new-build-system/user-guide/manifest-merger#TOC-Markers

2 个答案:

答案 0 :(得分:14)

您需要使用Selector

  

每个工具:节点或工具:attr声明可以通过增强   tools:selector属性,是关于是否的上下文信息   不应该将合并策略应用于当前较低的策略   优先级XML描述。例如,这在删除a时非常有用   只有来一个特定的图书馆才能获得许可   图书馆:

<permission
      android:name="permissionOne"
      tools:node="remove"
      tools:selector="com.example.lib1">

接下来将根据您的初始要求

<!--suppress AndroidDomInspection -->
<uses-permission
    tools:node="removeAll"/>

但请注意,所有其他<uses-permissions/>都将被删除。

答案 1 :(得分:2)

如您所知,所有库都有一个清单文件并将合并在一起。 您可以删除其中一个库中的权限:

tools:node="remove"

有关删除位置权限的示例:

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" tools:node="remove" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" tools:node="remove" />