禁用依赖权限

gw0*_*gw0 9 android android-manifest android-gradle-plugin

我现在面临以下问题:

我开发了应用程序'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

gio*_*gio 14

您需要使用Selector

每个工具:节点或工具:attr声明可以通过tools:selector属性进行扩充,该属性是关于合并策略是否应该应用于当前较低优先级XML描述的上下文信息.例如,仅当为某个特定库而不是任何库移除时才会删除权限:

<permission
      android:name="permissionOne"
      tools:node="remove"
      tools:selector="com.example.lib1">
Run Code Online (Sandbox Code Playgroud)

根据您的初始要求,它将是下一个

<!--suppress AndroidDomInspection -->
<uses-permission
    tools:node="removeAll"/>
Run Code Online (Sandbox Code Playgroud)

但请记住,所有其他<uses-permissions/>将被删除.


saj*_*asi 9

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

tools:node="remove"
Run Code Online (Sandbox Code Playgroud)

例如删除位置权限:

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" tools:node="remove" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" tools:node="remove" />
Run Code Online (Sandbox Code Playgroud)