Sophix-阿里第三代非侵入式热修复

本篇文章已授权微信公众号 guolin_blog (郭霖)独家发布

转载请请注明出处:http://www.jianshu.com/p/8ea4d653a53e

前言

上个月,阿里发布了旗下第三代的热修复:Sophix,在你阅读这篇文章之前,可以先看看这篇文章,相信你看完了会更加的有兴趣,阿里推出业界首个非侵入式热修复方案Sophix,颠覆移动端传统更新流程!。

我也是在集成使用tinker的时候发现了Sophix,tinker的傻瓜式应用虽说简单,但各种参数也麻烦,所以公司项目的客服端热更新,我想试一下Sophix。
好了,闲话不多说,我们来折腾折腾!

集成

1 注册帐号&申请内测资格

去阿里云注册开发则帐号,注册成功后进入控制台,添加移动热修复服务,如图:

Sophix-阿里第三代非侵入式热修复_第1张图片
图片.png

点击热修复服务后,会跳转到内测资格申请,一般来说,也就个把小时就能通过申请,如图:

Sophix-阿里第三代非侵入式热修复_第2张图片
图片.png

具体的申请我就不做详细的教程了,申请成功后“移动热修复”就会如图添加到控制台里的导航栏里:

Sophix-阿里第三代非侵入式热修复_第3张图片
图片.png

点击进入就可以创建app进行开发了,此处提醒一句, 创建app后你要回到“移动热修复”的根界面,系统会自动根据你app同时创建andrioid和IOS两个app,进入app后面的管理才能看到RSASECRET,如图:

Sophix-阿里第三代非侵入式热修复_第4张图片
图片.png

Sophix-阿里第三代非侵入式热修复_第5张图片
图片.png
之所以多说一句是因为我找这个RSASECRET找了半天都没找到在哪儿,还提交了个工单问是不是没有这个参数值了!创建应用还有什么不懂的,看 阿里官方文档

前期准备工作准备的差不多,就可以环境集成了

2 环境集成

如图,在项目app下的bulid.gradle中添加maven仓库地址和坐标版本依赖:


Sophix-阿里第三代非侵入式热修复_第6张图片
图片.png
3 代码配置

首先,在Manifest中配置参数:


Sophix-阿里第三代非侵入式热修复_第7张图片
图片.png

然后,重构application初始化Sophix:

Sophix-阿里第三代非侵入式热修复_第8张图片
图片.png

到此为止,所有的集成配置都完成了,可以开始测试了。

测试##

1 补丁生成

我们在主界面中写个Textview,让他显示“我是首次运行的”,签名打出第一包,命名first,安装运行显示:

Sophix-阿里第三代非侵入式热修复_第9张图片
图片.png
Sophix-阿里第三代非侵入式热修复_第10张图片
图片.png

然后我们对代码进行改动,弹出一个Toast。

Sophix-阿里第三代非侵入式热修复_第11张图片
图片.png

签名打出第二个包,命名second,现在我们就需要用到阿里的补丁工具 SophixPatchTool,
下载运行SophixPatchTool.exe,添加包:

Sophix-阿里第三代非侵入式热修复_第12张图片
图片.png

点击 设置进行签名配置,补丁输出路径:

Sophix-阿里第三代非侵入式热修复_第13张图片
图片.png

高级设置是对比范围,设置是否强制冷启动,可忽略。
Sophix-阿里第三代非侵入式热修复_第14张图片
图片.png

点击Go开始打补丁,日志会详细打印出补丁情况,也可导出日志。
补丁打完后,在输出目录里会有一个 sophix-patch.jar,这个就是我们需要的补丁包。

上传发布

先添加版本号,成功后在版本号后的“查看详情中”上传补丁:


Sophix-阿里第三代非侵入式热修复_第15张图片
图片.png

Sophix-阿里第三代非侵入式热修复_第16张图片
图片.png

上传成功后,依然在“查看详情”中发布。阿里建议我们在正式发布之前,使用测试工具 hotfixdebug调试成功后再发布。
发布完成后,重新启动App,运行如图,
Sophix-阿里第三代非侵入式热修复_第17张图片
图片.png

Sophix-阿里第三代非侵入式热修复_第18张图片
图片.png

成功搞定!#

总结

Sophix和Tinker,专业对比我还不好评价,只说两次不同集成给我的直观感受,总结如下:
优点:
  1· Sophix集成简单,不需要配置繁琐的各种参数。
  2· Sophix支持即时生效(事实上我第一次运行first版本后,直接就弹出了toast,而此时后台数据显示设备加载成功数为1,设备推送成功数为0)。
  3· Sophix支持run instant,而tinker不支持。编译中不支持run instant,速度大大降低!
  4· Sophix的补丁是基于阿里自身的SophixPatchTool打包生成,不是在AS中生成的,有种解耦的感觉,而且不需要备份太多的版本。

缺点:
  处于内测阶段,以后是否会免费未置可否(应该不会)
  PS:今天(2017-8-16),阿里自动电话服务,告知明天起,Sophix商业收费

相关链接

本文源码地址:github源码
阿里云平台:阿里云
Sophix官方文档:文档
补丁工具:SophixPatchTool
测试工具:hotfixdebug
阿里热修复技术全解析文档:深入理解Android热修复技术原理
Sophix技术交流群:584275290

碎碎念:
1 虽然说专业的事儿给专业的人去做,但是copy代码的时候还是要仔细,我copy AppID到manifest中,结果前面多了个空格,导致值无效,调试了小半会儿才发现问题,诸兄亦是如此,如果诸兄喜欢,给个喜欢!

2 至于Sophix这个名字,阿里的解释是来源于Sophic(明智的)+ FIX,一个更明智的热修复方案。但是阿里很多工具或者链接都是用fix起名而不是用hix,所以,我更喜欢喊他Sopfix!

你可能感兴趣的:(Sophix-阿里第三代非侵入式热修复)