Android 根据构建风格从清单中删除权限
我有3种口味,每种都应该有不同的权限。 我的口味定义如下:Android 根据构建风格从清单中删除权限,android,permissions,manifest,Android,Permissions,Manifest,我有3种口味,每种都应该有不同的权限。 我的口味定义如下: allPermissions { dimension "permissions" manifestPlaceholders = [excludeCallLogPermission: "false", excludeSmsPermission: "false"] } noSmsPermission { dime
allPermissions {
dimension "permissions"
manifestPlaceholders = [excludeCallLogPermission: "false", excludeSmsPermission: "false"]
}
noSmsPermission {
dimension "permissions"
manifestPlaceholders = [excludeSmsPermission: "true"]
}
noSmsNoCallogPermission {
dimension "permissions"
manifestPlaceholders = [excludeCallLogPermission: "true", excludeSmsPermission: "true"]
}
在我的清单中,我有这样一个信息:
<uses-permission android:name="android.permission.READ_CALL_LOG"
tools:remove="${excludeCallLogPermission}"/>
<uses-permission android:name="android.permission.SEND_SMS"
tools:remove="${excludeSmsPermission}"/>enter code here
在这里输入代码
它不会给出任何错误和版本,但应用程序拥有上述2个权限,即使flavor将这两个设置都设置为false,因此它也无法工作
如果我尝试使用tools:node=“${excludeSmsPermission}”并将其值设置为remove,则会收到此警告
找到了一个可行的黑客解决方案
allPermissions {
dimension "permissions"
manifestPlaceholders = [extraPermission1: "android.permission.SEND_SMS", extraPermission2: "android.permission.READ_CALL_LOG"]
}
noSmsPermission {
dimension "permissions"
manifestPlaceholders = [extraPermission1: "android.permission.placeholder", extraPermission2: "android.permission.READ_CALL_LOG"]
}
noSmsNoCallogPermission {
dimension "permissions"
manifestPlaceholders = [extraPermission1: "android.permission.placeholder", extraPermission2: "android.permission.placeholder"]
}
及
对于每种风格,您必须定义一个包含不相似性的清单。遗憾的是,这种方法不适用于我的项目结构
<uses-permission android:name="${extraPermission1}"/>
<uses-permission android:name="${extraPermission2}"/>