初衷
被线上BUG折磨的死去活来,自己做事有不细心,紧急修复的问题不是漏了这个就是多了那个。看到微信开源了TInker(源自DOTA2 地精修补匠),并且项目也在使用Bugly,所以就试着用一下,挺顺利且达到了想要的效果。写文档记录学习经历,以及整理使用方法。
对比
暂时只了解了阿里百川的HotFix和微信的Tinker。
HotFix更适用于线上的紧急BUG,因为它不需要重启应用就能够生效,缺点是不能新加类或资源。
Tinker则功能更为强大,功能强大的背后就意味着性能上的占用。Tinker基本可以完成小功能的发布,但是对手机配置就要求高一些,测试的手机只有50M左右就无法修复了,APK本身12M。
现在发现应用宝上必须使用加固工具,然而一旦使用了加固工具,tinker就无法工作了。
Tinker
与Bugly搭配后不再需要APP开发者自己实现后台,并且还可以选择下发规则,比如开发设备、系统版本,还支持补丁回滚。
正文
没怎么写过文章,所以废话还挺多,请见谅。
基准包:正常版本的APK包。
补丁包:修复基准包的BUG。
打基准包的步骤:
1 修改tinker-support.gradle文件中的tinkerId字段
2 在android studio中找到Gradle窗口,一般在右侧
3 等编译完成后,在app\build\bakApk\中找到对应时间的APK包,这个就是基准包了
打补丁包的步骤:
1 修改BUG
2 修改
3 修改旧APK文件夹名称
4 修改这几处文件与左侧一致,tinkerId 修改后缀为patch与基准包区别开
5 在gradle中选取红色的双击编译
6 登录bugly 选择发布新版补丁
7 选择红框中的补丁文件
8 如果基准包未进行联网上报,就会出现右侧的红色提示。
上传完后根据情况选择开发设备、全景设备、自定义
9 回滚补丁后会回滚之前已发布的补丁,并把安装过的程序还原到旧的状态。
疑问验证
1 是否支持打了补丁后继续打补丁?
支持、新的补丁也要用基准包的tinkerid。
2 看到阿里百川好像说可以兼容加固(使用加固前的基准包打补丁)tinker是否可以?
不行,
3 是否可以修改版本号?
不能
待考证的问题
是否必须保存原来的APK包才能对其进行补丁,(应该不用,但是还是要确认下)。
是否支持无线补丁循环?(以及无线循环的补丁,回滚问题)。