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\"")
}
}
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****************************************
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*********************************************
}
4、AndroidManifest文件占位符
使用manifestPlaceholders可以根据不同的渠道差异化配置AndroidManifest.xml中的app名称、图标、数据等
5、BuildConfig常量差异化配置
此处已lib中设置举例,app中同样使用
渠道切换
渠道批量导出
AS正常导出app流程,配置好签名信息和导出文件夹后,最后一步选择渠道