What
productFlavors是在gradle中配置多渠道的打包的工具。
Why
使用productFlavors区分不同的产品,定义不同的逻辑,使构建部分有差异的Android项目更加方便。
How
1.创建不同的产品
在app:
级别下的gradle文件中,加入productFlavors\
android {
compileSdkVersion 26
buildToolsVersion "26.0.0"
defaultConfig {
....
}
buildTypes {
....
}
sourceSets {
....
}
//创建productFlavors
productFlavors {
}
}
2.创建不同的产品,并为不同产品分配专有属性
在productFlavors
下创建产品product
与temp
productFlavors {
//新建产品product
product {
//程序包名
applicationId "study.ung.differentsource.product"
//不同渠道号
manifestPlaceholders = [UMC:"product-Complete"]
//versionName
versionName "1.0.0"
//versionCode
versionCode 1
}
//新建产品temp
temp {
//程序包名
applicationId "study.ung.differentsource.temp"
//不同渠道号
manifestPlaceholders = [UMC:"product-Temp"]
//versionName
versionName "2.1.1"
//versionCode
versionCode 2
}
//...Others
3.设置不同代码引用
如果项目中对不同产品区分不同的代码,比如服务器地址的区分,或者某些其他常量的区分。
1.先在src目录下简历对应的文件夹,比如java代码则建立,product/java,res文件夹则建立product/res
说明:当前选取的渠道文件夹颜色会与未选取的有差异
2.建立包名,建立Java类文件
注意:最好先切换到对应的产品类型,再建立包与类文件
3.在app-level下的gradle文件中设置sourceSets
//不同产品不同的文件
product {
java.srcDirs = ['src/product/java']
}
temp {
java.srcDirs = ['src/temp/java']
}
4.设置不同的产品引入不同的包
使用方式:产品名Compile “xxx.xxx.xx”
//不同产品引入不同的包
productCompile "com.android.support:appcompat-v7:26.+"
tempCompile "com.android.support.constraint:constraint-layout:1.0.2"