Sophix 是阿里发布的技术 ,hotfix的升级版,接入方式是我用过最简单的,补丁由阿里云平台管理,有收费标准
集成
1注册 账号,并且进入热修复平台管理
阿里云
图片.png
如果没有这个选项说明没开通,在产品服务下找到热修复并且开通,这里就不演示了,都是下一步操作。
1创建一个项目
图片.png
获取Appid 并且进入管理获取appSecret和RSA密钥
图片.png
图片.png
2 android studio集成方式
在build.gradle中添加maven仓库地址和Sophix依赖
图片.png
在Manifest添加需要的权限 和平台上添加应用的appid,appSecret,RSA密钥
图片.png
图片.png
在application类中初始化sophix
public class App extends Application { @Override public void onCreate() { super.onCreate(); initSophix(); } private void initSophix(){ SophixManager.getInstance().setContext(this) .setAppVersion("1.0") .setAesKey(null) .setEnableDebug(true) .setPatchLoadStatusStub(new PatchLoadStatusListener() { @Override public void onLoad(final int mode, final int code, final String info, final int handlePatchVersion) { // 补丁加载回调通知 if (code == PatchStatus.CODE_LOAD_SUCCESS) { // 表明补丁加载成功 } else if (code == PatchStatus.CODE_LOAD_RELAUNCH) { // 表明新补丁生效需要重启. 开发者可提示用户或者强制重启; // 建议: 用户可以监听进入后台事件, 然后调用killProcessSafely自杀,以此加快应用补丁,详见1.3.2.3 //这里慎重选择强制关闭 ,容易产生闪退的错觉 } else { // 其它错误信息, 查看PatchStatus类说明 } } }).initialize();// queryAndLoadNewPatch不可放在attachBaseContext 中,否则无网络权限,建议放在后面任意时刻,如onCreate中 SophixManager.getInstance().queryAndLoadNewPatch(); } }
3补丁测试
初次运行
image.png
运行之后显示
image.png
修改代码--打包--生成补丁
修改代码
生成补丁
添加版本
上传补丁
杀死app之后重启的效果
4总结
1· Sophix集成简单,不需要配置繁琐的各种参数。
2· Sophix支持即时生效,做过两次测试第一次是更新一个吐息好像没关闭就生效了,第二次按上面的代码做的更新 关闭之后才生效的。
3· Sophix支持run instant,而tinker不支持。编译中不支持run instant,不能直接运行测试!
4· Sophix的补丁用阿里自身的SophixPatchTool工具打包生成,不是在AS中生成的,比较方便。
阿里热修复各版本的差异
作者:tmyzh
链接:https://www.jianshu.com/p/b6c492e745f5
点击查看更多内容
为 TA 点赞
评论
共同学习,写下你的评论
评论加载中...
作者其他优质文章
正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦