Sophix热修复流程
一、环境搭建
1、gradle配置
在dependencies中加入 在gradle的repositories 中加入在这两个地方加入依赖就可以,eclipse情趣官网查看,这里就不赘述了。
2、代码配置
初始化这里需要注意,此方法最好放到你写的Application的attachBaseContext方法的最前面,这是sophix的初始化。
补丁拉取此方法放到Application的onCreate方法中,最好放到最后。此方法为上传了补丁后,程序拉取,下载补丁包。
二、打补丁
如上图,旧包和新包都必须是基础包。不能是加固之后的包,比如360加固等等。
旧包:为线上已有的有bug的包,需要修复的包。
新包:为已修复线上bug的包。注意,如果线上版本号上为1.2.2,那么新包和旧包的版本号都要为1.2.2。如果已经发布了一次补丁(即已修复过一次),比如叫补丁1,还要再次进行修复时,旧包应该是没有修复过的有bug的包,新包应该是包含了补丁1后,又做了修复后的包。
强制冷启动:勾选的话强制生成补丁包为需要冷启动才能修复的格式。默认不选的话,工具会根据代码变更情况自动选择。
不比较资源:打补丁时不比较资源的变化。
不比较SO库:打补丁时不比较SO库的变化。
设置里为高级设置,必须设置
此图不在赘述,就是签名以及签名密码等,做android的应该都懂。
然后点击GO,会生成一个sophix-patch.jar的文件,注意此文件名称不能修改。
三、阿里控制台
上次补丁之后,可以有灰度发布和全量发布,灰度发布可以设置发布到手机的数量,检测之后再全量发布。
发布后可以查看已经加载的设备数。上方二维码是本地测试,过程可以查看阿里官网。扫二维码可以直接加载补丁到设备,不用发布到用户,自己先测试。没有问题后在发布。
四、注意事项
1、旧包,新包,补丁的版本号等这些所有的版本号要一致,不然推送不到设备。
2、打补丁过程中,用到的旧包新包都要为没有360等加固过的包,不加固不等于不能签名,我们发布的程序肯定都需要签名。
3、经过本人测试,增加资源、删减或者增加方法、修改so包,都需要杀掉进程重启后才能生效。
4、发布补丁,最好先用测试工具,扫描二维码测试,然后发布灰度测试,然后全量发布。
5、上面初始化initSophix()方法中有几个回调状态,可处理可不处理,在需要重启生效的状态来时,最好根据情况杀掉进程。
五、链接:
阿里云官网 如果有问题的朋友们可以留言交流。