本文和大家分享的主要是android开发中,模块化多渠道编译相关内容,一起来看看吧,希望对大家有所帮助。
有赞微商城APP小组在搞模块化过程中需要把POS机相关的业务全部抽离出来,但是POS机的适配代码会散落在多个业务module 中,这才让我接触到了模块化过程中真正的多渠道编译。
闲话少说,开始步入正题,把解决方案分享给大家,希望小伙伴能少走弯路。
那么什么时候小伙伴会遇到我所遇到的问题呢?
1. 你的项目在模块化,业务代码抽到了独立的library中
2. 你的library代码中需要通过 BuildConfig.FLAVOR 区分业务,例如:
if (BuildConfig.FLAVOR.equals("weipos")) {
// weipos related source
} else {
//
}
3.
首先,我先把目前的解决方案放出来。
目前项目中,我们有很多渠道,这里主要关注一下项目中接入的POS机渠道 - iboxpay、sunmi、weipos,在我们的业务代码中,需要根据不同的flavor去区分实现不同的功能。
在主工程的 build.gradle 文件中,我们定义了如下几种flavor:
productFlavors {
def customFlavors = getCustomFlavors()
if (customFlavors instanceof List) {
customFlavors.each {
flavor ->
"$flavor"{
}
}
}
full {
buildConfigField"boolean","POS","false"
buildConfigField"String","DEVICE_TYPE","\"android\""
}
iboxpay {