VasDolly
VasDolly的出现是为了更便捷、更快速的生成多个渠道包。
一般的打多个渠道包的情况
Gradle Plugin
在AndroidManifest.xml中添加渠道信息占位符:
<meta-data android:name="InstallChannel" android:value="${InstallChannel}" />
通过Gradle Plugin支持的
productFlavors
标签,添加渠道信息:productFlavors{ "YingYongBao"{ manifestPlaceholders = [InstallChannel : "YingYongBao"] } "360"{ manifestPlaceholders = [InstallChannel : "360"] } }
这样,在编译时,gradle会将不同的渠道信息替换成AndroidManifest.xml中的占位符。
缺点:
- 每生成一个渠道包,都要重新执行一遍构建流程,效率太低,只适用于渠道较少的场景。
- Gradle会为每个渠道包生成一个不同的BuildConfig.java类,记录渠道信息,导致每个渠道包的DEX的CRC值都不同。(热修复可能会有问题)
ApkTool
通过ApkTool逆向解开APK,修改渠道信息,然后再重新打包。这种方式不需要重新构建新的渠道包,速度上相对gradle要快一点(但个人感觉也不一定吧~~)
缺点:
ApkTool工具不稳点,并且速度也不是很快