Android Gralde补全计划 productFlavors多渠道打包(变体/多客户)
在工作中,偶尔需要面对不同客户进行需求上的细微调整,变体可以方便地完成这种调整。
本文以实践为主,部分理论知识已略过,参考理论知识补在了下面参考文档中。
其中单变体适合 单产品对应不同客户,多变体适合 单产品对应不同客户且单个客户地某个需求存在不同版本
如:音乐app 单变体 适合需要对皮肤进行不同调整的多客户
多变体 适合需要对皮肤进行不同调整的多客户,且其中A客户需要网络播放流媒体歌曲/完全本地播放歌曲 两种不同app模式
注意:
main和变体的java文件不能存在同名,个人使用习惯是main下存放base文件,在不同变体下调整对应的需求。
1 单变体
在app下build.gradle添加变体相关配置代码,变体以channel为例
// 产品变体名称,这里可以自行填写,channel为示例
flavorDimensions "channel"
// 创建产品变体
productFlavors {common {manifestPlaceholders = [CHANNEL: "common "]dimension = "channel"buildConfigField("String","CHANNEL","\"common \"")}meizu {manifestPlaceholders = [CHANNEL: "meizu "]dimension = "channel"buildConfigField("String","CHANNEL","\"meizu \"")}}
在Build Variants调整到不同变体,并src下新建-文件夹-新建对应渠道地java/resources等资源


2 多变体
在app下build.gradle添加变体相关配置代码,变体以channel和wifi为例
// 产品变体名称flavorDimensions "channel","wifi"// 创建产品变体productFlavors {common {manifestPlaceholders = [CHANNEL: "common "]dimension = "channel"buildConfigField("String","CHANNEL","\"common \"")}meizu {manifestPlaceholders = [CHANNEL: "meizu "]dimension = "channel"buildConfigField("String","CHANNEL","\"meizu \"")}haswifi {dimension = "wifi"}wificlose {dimension = "wifi"}}
此时在Build Variants切换时会出现channel和wifi组合的variant,对应选择需要的即可。
参考
1理论知识 flavorDimensions和productFlavors——安卓gradle
https://juejin.cn/post/6844903968204652551#heading-4
2 实践 通过productFlavors实现多渠道打包
https://juejin.cn/post/7198806651562229816
3 实践 Android Gradle中的productFlavors
https://blog.csdn.net/nihaomabmt/article/details/119320732
