【Gradle】借助gradle的ProductFlavor实现多App间代码库复用

背景是什么?

image

lib A 和 lib A’ 拥有大部分相同的代码,小部分的产品特性差异,但是lib A是用在App 1 中,而lib A’是用在App 2上,如果分开维护两份代码拷贝,工作量将极为巨大。

如何代码复用

借助gradle提供的productFlavor来实现代码和资源的合并。基础知识可以参照之前写的一篇文档Gradle For Android Product flavors章节。

有Product flavors的知识基础,我们可以将source set拆分成如下:
image

  • main: 主要是各个产品特性所共有的资源和代码,当然和productFlavor重复了也不可怕,会被productFlavor的所覆盖。
  • productFlavorA: 包含属于其中一个App的具体产品特性资源及代码。其他的如 productFlavorB,productFlavorC…都是类似的。

gradle脚本配置

android {
    productFlavors {
        productFlavorA {
            compileSdkVersion 23
            buildToolsVersion "23.0.2"
            defaultConfig {
                minSdkVersion 18
                targetSdkVersion 23
                versionCode 500
                versionName "5.0.0"
            }
        }
        productFlavorB {
            compileSdkVersion 23
            buildToolsVersion "23.0.2"
            defaultConfig {
                minSdkVersion 19
                targetSdkVersion 23
                versionCode 1
                versionName "1.0"
            }
        }
    }
....
}
需要publishNonDefault,defaultPublishConfig配置?

参考之前写的wiki gradle管理发布

如果在不同的productFlavor中需要依赖不同的SDK呢?

productFlavor + compile 再跟上所依赖的库
参考之前写的wikiGradle For Android 的“依赖的概念”

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值