Gradle 切换依赖

需求

针对于不同的渠道开发做不同的逻辑。不同的渠道不需要对方的依赖。

当前情况

持续集成、代码量、依赖的复杂程度。以及后续的开发维护。不希望进行多分支开发。

思考

gradle 可以针对不同的渠道选择不同的代码 ,并且可以指定依赖 。

实现

不同的依赖注定了代码会不同,gradle为我们指定了sourceSet。

我现在要维护两个渠道:flavorsaflavorsb

现在来修改app.gradle

productFlavors {
        flavorsa {}
        flavorsb {}
}

渠道我们已经建立,现在区分代码:

  1. app or base 的 module 中我们创建于main平级的文件夹flavorsaflavorsb
image.png

指定代码我们就单纯处理创建java即可,文件目录与main中相同。资源文件就创建res,其他同理。强调一下渠道的文件目录与文件名需要一致。

flavorsa/java/com/xxx/xxx/agent/FlavorsAgent.kt
flavorsb/java/com/xxx/xxx/agent/FlavorsAgent.kt

代码分离后,我们来分离一下依赖包。

dependencies {
    flavorsaApi project(':liba')
    flavorsbApi project(':libb')
}

我们可以看到不同的渠道通过不同的渠道Api即可进行区分,b渠道此时无法使用liba中的功能。a渠道同理。

使用方法:

定义接口IFlavorsAgentInterface。在FlavorsAgent写实现方法。通过java的多态性进行开发即可。

你可能感兴趣的:(Gradle 切换依赖)