以自动更新功能为例,360、百度都要求集成各自的更新sdk,如何用同一套代码去解决。
1、建立两个module,分布将百度、360的sdk放进去。
2、在两个module下创建一个相同包名、类名的类
3、在同名类下实现同名方法,方法内实现各自逻辑。
第一个实现百度的逻辑
另一个同名类实现360的逻辑
现在两个module都封装好了相同的类跟方法,下一步就是根据渠道去打包调用不同的module了
4、在.gradle里根据不同渠道集成不同的module
import java.util.regex.Matcher import java.util.regex.Pattern def String getCurrentFlavor() { Gradle gradle = getGradle() String tskReqStr = gradle.getStartParameter().getTaskRequests().toString() Pattern pattern; if (tskReqStr.contains("assemble")) pattern = Pattern.compile("assemble(\\w+)(Release|Debug)") else pattern = Pattern.compile("generate(\\w+)(Release|Debug)") Matcher matcher = pattern.matcher(tskReqStr) if (matcher.find()) return matcher.group(1).toLowerCase() else { return ""; } } dependencies { def currentFlavor = getCurrentFlavor() //baidu、360都耍流氓,只能集成他们自家的自动更新sdk,不然审核不通过;360必须单独打包 if (currentFlavor.equals("_360")) { compile project(':antoupdate_360') } else { compile project(':autoupdate') } }