android develops上面关于渠道打包的介绍

https://developer.android.com/studio/build/build-variants?utm_source=android-studio#product-flavors

demo下载地址https://download.csdn.net/download/qi15211/11081809

渠道配置

本举例有app、Flavor1Lib、Flavor2Lib三个module,Flavor1Lib、Flavor2Lib作为lib,app引用Flavor1Lib、Flavor2Lib

1、lib配置

Flavor1Lib、Flavor2Lib中的配置相同,只是渠道名不一致

flavorDimensions "flavor"
publishNonDefault true
productFlavors {
    flavor1_1 {
        dimension "flavor"
        //buildConfig差异化赋值
        buildConfigField("String", "from", "\"flavor1_1\"")
    }
    flavor1_2 {
        dimension "flavor"
        buildConfigField("String", "from", "\"flavor1_2\"")
    }
}

android 渠道打包(productFlavors)

2、app配置

project中application的module中

//*************渠道打包配置*********************************************
flavorDimensions "flavor"
productFlavors {
    flavor1_1 {
        dimension "flavor"
        applicationId "com.zhou.demo.kotlinsdk.market11"
        manifestPlaceholders = [app_name: "flavor1_1"]
    }
    flavor1_2 {
        dimension "flavor"
        applicationId "com.zhou.demo.kotlinsdk.market12"
        manifestPlaceholders = [app_name: "flavor1_2"]
    }
    flavor2_1 {
        dimension "flavor"
        applicationId "com.zhou.demo.kotlinsdk.market21"
        manifestPlaceholders = [app_name: "flavor2_1"]
    }
    flavor2_2 {
        dimension "flavor"
        applicationId "com.zhou.demo.kotlinsdk.market22"
        manifestPlaceholders = [app_name: "flavor2_2"]
    }
}
//*****************************end****************************************

android 渠道打包(productFlavors)

3、渠道打包差异化代码

configurations {
    flavor1_1Api
    flavor1_2Api
    flavor2_1Api
    flavor2_2Api
}
//*******************************end**************************************
dependencies {
    //*************渠道打包配置,动态引用*********************************************
    flavor1_1Api project(':Flavor1Lib')
    flavor1_2Api project(':Flavor1Lib')
    flavor2_1Api project(':Flavor2Lib')
    flavor2_2Api project(':Flavor2Lib')
//    flavor1_1Api project(path: ':Flavor1Lib', configuration: 'flavor1_1Release')
//    flavor1_2Api project(path: ':Flavor1Lib', configuration: 'flavor1_2Release')
//    flavor2_1Api project(path: ':Flavor1Lib', configuration: 'flavor2_1Release')
//    flavor2_2Api project(path: ':Flavor1Lib', configuration: 'flavor2_2Release'
// ************************end*********************************************
}

android 渠道打包(productFlavors)

android 渠道打包(productFlavors)

4、AndroidManifest文件占位符

使用manifestPlaceholders可以根据不同的渠道差异化配置AndroidManifest.xml中的app名称、图标、数据等

android 渠道打包(productFlavors)

5、BuildConfig常量差异化配置

此处已lib中设置举例,app中同样使用

android 渠道打包(productFlavors)

渠道切换

android 渠道打包(productFlavors)

渠道批量导出

AS正常导出app流程,配置好签名信息和导出文件夹后,最后一步选择渠道

android 渠道打包(productFlavors)

相关文章: