简介
主要借助gradle的productFlavors工具进行多渠道打包
实践
1. Android工程中App Module中的build.gradle文件添加pf[productFlavors]
android {//定义3个不同的产品[默认,红,蓝]
productFlavors{
common{}
red{}
blue{}
}
}
configurations {//定义3个产品不同的依赖
commonCompile
redCompile
blueCompile
}
2. 问题一 : 不同的包名&&版本号&&版本名称
android {
productFlavors{//为3个产品指定不同的配置
common{
applicationId "com.common"
versionCode 1000
versionName "1.0.0"
}
red{
applicationId "com.red"
versionCode 2000
versionName "2.0.0"
}
blue{
applicationId "com.blue"
versionCode 3000
versionName "3.0.0"
}
}
}
3. 问题二: 不同的资源替换
4. 问题三: 重名java文件替换
5. 问题四: 被[app]依赖的[library]如何确定编译的产品?
- 修改[app]的build.gradle文件
configurations {
commonCompile
redCompile
blueCompile
}
dependencies {//不同的产品依赖[library]中不同的文件&&资源
commonCompile project(path: ':picmodule', configuration: "common${rootProject.ext.BUILD_VARIANT}")
redCompile project(path: ':picmodule', configuration: "red${rootProject.ext.BUILD_VARIANT}")
blueCompile project(path: ':picmodule', configuration: "blue${rootProject.ext.BUILD_VARIANT}")
}
- 修改工程最外侧build.gradle文件
ext{
BUILD_VARIANT = "Debug"//配置buildType
}
-
[library]结构如下
6. 问题5: 如何多个产品依赖一个不分产品的[library]
- 修改[app]的build.gradle如下
dependencies {
// 引用本的项目
commonCompile project(':picmodule')
redCompile project(':picmodule')
blueCompile project(':picmodule')
}
- 删除[library]下red && blue 目录即可