禁用依赖权限
Disable dependency permissions
我目前面临以下问题:
我开发了应用程序 'A',它使用权限 1、2、3 并使用第 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
您需要使用Selector
Each tools:node or tools:attr declaration can be augmented by a
tools:selector attribute which is contextual information on whether or
not the merging strategy should be applied to the current lower
priority XML description. For instance, this is useful when removing a
permission only if coming for one particular library as opposed to any
library:
<permission
android:name="permissionOne"
tools:node="remove"
tools:selector="com.example.lib1">
根据您的初步要求,它将是下一个
<!--suppress AndroidDomInspection -->
<uses-permission
tools:node="removeAll"/>
但请记住,所有其他 <uses-permissions/>
都将被删除。
如您所知,所有库都有一个清单文件并将合并在一起。
您可以通过以下方式删除某个库中的权限:
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" />
我目前面临以下问题:
我开发了应用程序 'A',它使用权限 1、2、3 并使用第 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
您需要使用Selector
Each tools:node or tools:attr declaration can be augmented by a tools:selector attribute which is contextual information on whether or not the merging strategy should be applied to the current lower priority XML description. For instance, this is useful when removing a permission only if coming for one particular library as opposed to any library:
<permission android:name="permissionOne" tools:node="remove" tools:selector="com.example.lib1">
根据您的初步要求,它将是下一个
<!--suppress AndroidDomInspection -->
<uses-permission
tools:node="removeAll"/>
但请记住,所有其他 <uses-permissions/>
都将被删除。
如您所知,所有库都有一个清单文件并将合并在一起。 您可以通过以下方式删除某个库中的权限:
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" />