热修复学习(1):Sophix

Sophix 是阿里发布的技术 ,hotfix的升级版,接入方式是我用过最简单的,补丁由阿里云平台管理,有收费标准

集成

1注册 账号,并且进入热修复平台管理
阿里云

热修复学习(1):Sophix_第1张图片
图片.png

如果没有这个选项说明没开通,在产品服务下找到热修复并且开通,这里就不演示了,都是下一步操作。
1创建一个项目
热修复学习(1):Sophix_第2张图片
图片.png

获取Appid 并且进入管理获取appSecret和RSA密钥
热修复学习(1):Sophix_第3张图片
图片.png

热修复学习(1):Sophix_第4张图片
图片.png

2 android studio集成方式
在build.gradle中添加maven仓库地址和Sophix依赖

热修复学习(1):Sophix_第5张图片
图片.png

在Manifest添加需要的权限 和平台上添加应用的appid,appSecret,RSA密钥
热修复学习(1):Sophix_第6张图片
图片.png

热修复学习(1):Sophix_第7张图片
图片.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补丁测试
初次运行

热修复学习(1):Sophix_第8张图片
image.png

运行之后显示
热修复学习(1):Sophix_第9张图片
image.png

修改代码--打包--生成补丁


热修复学习(1):Sophix_第10张图片
修改代码

热修复学习(1):Sophix_第11张图片
生成补丁

热修复学习(1):Sophix_第12张图片
添加版本

热修复学习(1):Sophix_第13张图片
上传补丁

热修复学习(1):Sophix_第14张图片
杀死app之后重启的效果

4总结
1· Sophix集成简单,不需要配置繁琐的各种参数。
2· Sophix支持即时生效,做过两次测试第一次是更新一个吐息好像没关闭就生效了,第二次按上面的代码做的更新 关闭之后才生效的。
3· Sophix支持run instant,而tinker不支持。编译中不支持run instant,不能直接运行测试!
4· Sophix的补丁用阿里自身的SophixPatchTool工具打包生成,不是在AS中生成的,比较方便。

热修复学习(1):Sophix_第15张图片
阿里热修复各版本的差异

热修复学习(1):Sophix
热修复学习(2):TinkerSDK
热修复学习(3):Tinker组件依赖

你可能感兴趣的:(热修复学习(1):Sophix)