Android productFalvors 多渠道打包方案

简介

主要借助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. 问题二: 不同的资源替换
Android productFalvors 多渠道打包方案_第1张图片
39EA501C-D5F2-4316-BD07-A3E37CF9AC5E.png
4. 问题三: 重名java文件替换
Android productFalvors 多渠道打包方案_第2张图片
FCD92703-AD10-4A12-BBD3-4A026E77AEE1.png
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]结构如下


    Android productFalvors 多渠道打包方案_第3张图片
    555195F6-1033-4144-B30E-9B2B517705E1.png
6. 问题5: 如何多个产品依赖一个不分产品的[library]
  • 修改[app]的build.gradle如下
dependencies {

    // 引用本的项目
    commonCompile project(':picmodule')
    redCompile project(':picmodule')
    blueCompile project(':picmodule')

}
  • 删除[library]下red && blue 目录即可

你可能感兴趣的:(Android productFalvors 多渠道打包方案)