1 主要应用场景
1) 同一个应用的不同版本。 例如一个免费的版本和一个收费的专业版本。
2) 同一个应用需要打包成不同的apk以发布Google Play Store。点击此处查看更多详细信息。
3) 同一个应用需要打包成不同的apk以发布Google Play Store。、点击此处查看更多详细信息。
2 构建规则
2.1 默认配置(defaultConfig)
如果项目中没有定义flavor,则直接使用默认的flavor(defaultConfig) + BuildType。defaultConfig是没有名字的,所以生成的BuildVariant列表看起来就跟Build Type列表一样。
2.2 Product Flavor
Product Flavor + Build Type = Build Variant,根据排列组合的方式构建变种版本,每一种组合(包含Build Type和Product Flavor)就是一个Build Variant(构建变种版本)。例如:有Release和Debug两种Build Type,Flavor1和Flavor2两种变种版本,则可以构建2*2=4种变种版本(Flavor1Release、Flavor1Debug、Flavor2Release、Flavor2Debug)。
2.3 SourceSet
每个变种版本都可以有自己的sourceSet,如下图:
构建时对不同的sourceSet进行处理时,符合下面的股则:
1) 多个文件夹中的所有的源代码(src/*/java)都会合并起来生成一个输出。
2) 所有的Manifest文件都会合并成一个Manifest文件。类似于Build Type,允许Product Flavor可以拥有不同的组件和权限声明。
3) 所有使用的资源(Android res和assets)遵循的优先级为Build Type会覆盖Product Flavor,最终覆盖main sourceSet的资源。
4) 每一个Build Variant都会根据资源生成自己的R类(或者其它一些源代码)。Variant互相之间没有什么是共享的