因为公司的app是医生端和患者端,在app开发中会很多模块是相似的只有一部分逻辑不同,比如登录模块,IM模块。
library使用productFlavors
在library的 build.gradle中如下配置,
|
|
定义一个维度为 type类型的,分android和patient,定义了appType,1为医生端,2为患者端,在library中可以使用如下来区分是哪个渠道,BuildConfig.appType,但是当很大一部分代码不一样的时候,可以在src目录下建立两个doctor和patient的包,这样在打包的时候就不会把对方渠道的代码打进去,可以减少app的体积。
|
|
app中使用
app是分两个的,在doctor的app下我们只想要doctor渠道,patient也是类型,但是我在doctor的app下面是不想要这两个渠道的,我只需要其中的一中而且是确定的,app下有自己的渠道,这种情况就是library中有,但是app中没有,这个时候可以使用missingDimensionStrategy选择策,在defaultConfig下,意思就是我当前app下没有和library相同渠道的时候,都采用你设置的渠道,这样不管app自己有什么渠道,都会采用library中你所选择的渠道。(还有很多其它场景可以使用matchingFallbacks属性来设置回退策略)
|
|
总结
这样login模块就不用维护两份代码,当出现bug的时候还要修改两份,这种办法非常适合两个高度相似的app。