我现在面临以下问题:
我开发了应用'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
答案 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" />