根据构建风格从清单中删除权限
Removing permissions from manifest depending on build flavor
我有 3 种口味,每种都应该有不同的权限。
我的口味定义如下:
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}" 并将其值设置为删除,我会收到此警告
找到了一个可行的 hackish 解决方案
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}"/>
我有 3 种口味,每种都应该有不同的权限。 我的口味定义如下:
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}" 并将其值设置为删除,我会收到此警告
找到了一个可行的 hackish 解决方案
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}"/>