31
对于我的构建系统,我需要构建多个应用程序变体,每个变体请求不同的权限集。这怎么能用Gradle完成,而不需要调用一个单独的脚本?Gradle:如何自定义Android Manifest权限?
对于我的构建系统,我需要构建多个应用程序变体,每个变体请求不同的权限集。这怎么能用Gradle完成,而不需要调用一个单独的脚本?Gradle:如何自定义Android Manifest权限?
我只是设法通过我的gradle这个文件中有不同的口味,以做到这一点:
free {
packageName 'com.sample.free'
buildConfigField "boolean", "HAS_AD", "true"
}
paid {
packageName 'com.sample.paid'
buildConfigField "boolean", "HAS_AD", "false"
}
,然后我创建src下一个新的文件夹,名为“自由”,并根据该所谓的“水库”
一个文件夹src/
+ free/
| + res/
+ src/
和文件夹中创建一个新的文件“AndroidManifest.xml中”使用下面的代码:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.sample" >
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
</manifest>
据Gradle Plugin User Guide在Android工具项目网站:
构建类型相似,产品口味也通过自己的sourceSets贡献代码和 资源。
和
与所有sourcesets处理时,使用以下规则使用 建立一个单一APK:
- 所有的源代码(源/ */java的)用于一起作为生成单个输出的多个文件夹。
- 清单都合并成一个清单。这允许产品香料具有不同的组分和/或权限,类似于构建类型。
- 使用覆盖优先级使用所有资源(Android资源和资产),其中构建类型覆盖产品风味,其中 覆盖主源集。
- 每个Build Variant从资源生成自己的R类(或其他生成的源代码)。 变体之间没有任何共享。
这意味着您可以创建src下每种口味名称的文件夹,并把你的自定义文件在其中。如果所述文件是AndroidManifest gradle,则会将其与main中的清单合并。