专栏名称: 郭霖
Android技术分享平台,每天都有优质技术文章推送。你还可以向公众号投稿,将自己总结的技术心得分享给大家。
目录
相关文章推荐
郭霖  ·  使用Hilt来协助封装网络请求 ·  4 天前  
郭霖  ·  Android ... ·  6 天前  
鸿洋  ·  一个大型 Android 项目的模块划分哲学 ·  4 天前  
鸿洋  ·  细嗅蔷薇,Gradle 系列之 Task 必知必会 ·  5 天前  
stormzhang  ·  来自李子柒的压迫感 ·  6 天前  
51好读  ›  专栏  ›  郭霖

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

郭霖  · 公众号  · android  · 2017-08-09 08:00

正文

今日科技快讯

近日爱奇艺将乐视告上了法庭并索赔500万元。因为乐视网运营的“乐视视频”公众号向用户推送标题为“和原版相比,《中国有嘻哈》简直就是中国小西瓜”的侵权文章。该文章末尾以“中国有嘻哈,不在《中国有嘻哈》”、“喜欢看的各位,你们接着看吧 《中国有黑幕》我是看不下去了”的指向性用词来作为文章的结语,对爱奇艺的节目进行商业诋毁。

作者简介

本篇来自 牟仯 的投稿, 分享了阿里出品的最新热更新技术,希望对大家有所帮助!

牟仯 的博客地址:

http://www.jianshu.com/u/405f676a0576

前言

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

http://zhuanlan.51cto.com/art/201706/542445.htm

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

集成

注册帐号&申请内测资格

阿里云(https://www.aliyun.com)注册开发者帐号,注册成功后进入控制台,添加移动热修复服务,如图:

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

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

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


之所以多说一句是因为我找这个 RSASECRET 找了半天都没找到在哪儿,还提交了个工单问是不是没有这个参数值了!创建应用还有什么不懂的,看阿里官方文档:

https://help.aliyun.com/document_detail/53238.html

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

环境集成

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

代码配置

首先,在 Manifest 中配置参数:

然后,重构 application 初始化 Sophix:

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

测试

补丁生成

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

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

签名打出第二个包,命名 second,现在我们就需要用到阿里的补丁工具:

SophixPatchTool

https://help.aliyun.com/document_detail/53247.html

下载运行 SophixPatchTool.exe,添加包:

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

高级设置是对比范围,设置是否强制冷启动,可忽略。

点击 Go 开始打补丁,日志会详细打印出补丁情况,也可导出日志。

补丁打完后,在输出目录里会有一个 sophix-patch.jar,这个就是我们需要的补丁包。

上传发布

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

上传成功后,依然在“查看详情”中发布。阿里建议我们在正式发布之前,使用测试工具

hotfixdebug

http://ams-hotfix-repo.oss-cn-shanghai.aliyuncs.com/hotfix_debug_tool-release.apk

调试成功后再发布。发布完成后,重新启动App,运行如图:

成功搞定!

总结

Sophix和Tinker,专业对比我还不好评价,只说两次不同集成给我的直观感受,总结如下:

优点:

  • Sophix 集成简单,不需要配置繁琐的各种参数。

  • Sophix 支持即时生效(事实上我第一次运行first版本后,直接就弹出了toast,而此时后台数据显示设备加载成功数为1,设备推送成功数为0)。

  • Sophix 支持 run instant,而 tinker 不支持。编译中不支持 run instant,速度大大降低!

  • Sophix 的补丁是基于阿里自身的 SophixPatchTool 打包生成,不是在AS中生成的,有种解耦的感觉,而且不需要备份太多的版本。

缺点:

  • 处于内测阶段,以后是否会免费未置可否(应该不会)

更多

每天学习累了,看些搞笑的段子放松一下吧。关注最具娱乐精神的公众号,每天都有好心情。

如果你有好的技术文章想和大家分享,欢迎向我的公众号投稿,投稿具体细节请在公众号主页点击“投稿”菜单查看。

欢迎长按下图 -> 识别图中二维码或者扫一扫关注我的公众号: