Sophix 是阿里发布的技术 ,hotfix的升级版,接入方式是我用过最简单的,补丁由阿里云平台管理,有收费标准
集成
1注册 账号,并且进入热修复平台管理
阿里云
如果没有这个选项说明没开通,在产品服务下找到热修复并且开通,这里就不演示了,都是下一步操作。
1创建一个项目
获取Appid 并且进入管理获取appSecret和RSA密钥
2 android studio集成方式
在build.gradle中添加maven仓库地址和Sophix依赖
在Manifest添加需要的权限 和平台上添加应用的appid,appSecret,RSA密钥
在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补丁测试
初次运行
运行之后显示
修改代码--打包--生成补丁
4总结
1· Sophix集成简单,不需要配置繁琐的各种参数。
2· Sophix支持即时生效,做过两次测试第一次是更新一个吐息好像没关闭就生效了,第二次按上面的代码做的更新 关闭之后才生效的。
3· Sophix支持run instant,而tinker不支持。编译中不支持run instant,不能直接运行测试!
4· Sophix的补丁用阿里自身的SophixPatchTool工具打包生成,不是在AS中生成的,比较方便。