以上问题有空再改,最近正在忙其他事情,公司项目也准备重构。 而且此项目主要是科普和学习热补丁技术,有兴趣的可以自行解决上述问题。
一个基于dex分包的热补丁框架,目前只支持gradle 1.5以上版本 具有以下特性:
项目演示
首先在build.gradle中有两个dsl需要进行配置。
这个是配置补丁包的签名文件,需要和Release签名打包时使用的一致,否则加载补丁的时候会校验失败,这也是为了安全性考虑,防止恶意注入代码。
storeFile,storePassword,keyAlias,keyPassword对应如下
build.gradle配置完毕后,只需要运行一次Release签名打包,然后修改代码,再次运行debug打包即可自动生成补丁了。
需要注意的是,如果在Release打包中开启了混淆,那么自动生成补丁的时候也需要将debug开启混淆,否则会将整个项目的所有类都打包成补丁包。
debug开启混淆方式如下
只有使用Release产出的apk,加载补丁的时候才会进行签名校验。
如果你手机上安装的是debug包,那么不会进行签名校验。
补丁包不能从sdcard中加载,因为android6.0后有运行时权限处理。从sdcard中加载只是为了方便测试和演示,一般情况下是建议放在私有目录中。