简介

本篇是一个操作记录,非常清晰的阿里 hotfix 集成,希望能给大家节省一些时间
时间 2017-07-24 因为技术网站更新也很快,时间太久截图对应不上
hotfix 版本 2.0.9 因为2.x不兼容1.x 而且阿里已经在做3.x的公测了 因此直接集成3.x同学可以参考但是不能保证完全一致

请原谅我这冗余的介绍.
百川是阿里巴巴旗下的无线开放平台,基于世界级的后端服务和成熟的商业组件,
快速搭建App和提供卓越用户体验,开拓广告、商品、生活服务等无线新商业

1.1 百度搜索 阿里百川 第一个链接接入 也可以点击这里进入 阿里百川

Android 对接百川sdk 百川系统_集成


1.2 点击右上角登陆,可以用淘宝账号登陆哦

Android 对接百川sdk 百川系统_热修复_02


Android 对接百川sdk 百川系统_集成_03


1.3 登陆后点击立即参与进入控制台添加应用

Android 对接百川sdk 百川系统_HotFix_04


添加app界面如下

Android 对接百川sdk 百川系统_阿里_05


创建完成之后在应用管理标签下可以看到,就不截图了


1.4 开通阿里百川的服务
阿里百川提供了很多服务,推送,短信,热更新等,选择自己需要的进行开通(有些需要审核)
下面是我已经开通 HotFix 的界面

Android 对接百川sdk 百川系统_HotFix_06


Android 接入集成
1.5 点击 SDk下载–>技术文档进入集成

Android 对接百川sdk 百川系统_Android 对接百川sdk_07


里面的文档很详细,这里选择重要的记录一下获取sdk配置信息部分

<meta-data
android:name="com.taobao.android.hotfix.IDSECRET"
android:value="App ID" />
<meta-data
android:name="com.taobao.android.hotfix.APPSECRET"
android:value="App Secret" />
<meta-data
android:name="com.taobao.android.hotfix.RSASECRET"
android:value="RSA密钥" />

清单文件需要三个参数
这三个参数需要在 HotFix 管理平台获取
这三个参数需要在 HotFix 管理平台获取
这三个参数需要在 HotFix 管理平台获取

请注意区分百川控制台与HotFix管理后台,百川控制台内可以对百川账号信息等进行编辑更新,也集合了百川所有产品管理后台的入口,而HotFix管理后台只是其中一个。您可以通过百川控制台”选择应用——>我的产品后台——>阿里百川HotFix”前往HotFix管理后台,也可以直接输入网址 https://hotfix.taobao.com 前往。

Android 对接百川sdk 百川系统_阿里_08


1.5 Application 初始化

里面的文档也很详细,这里把实际代码贴一下

private void initHotFix() {
        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) {
                            // 表明补丁加载成功
                            System.out.println("成功");
                        } else if (code == PatchStatus.CODE_LOAD_RELAUNCH) {
                            // 表明新补丁生效需要重启. 开发者可提示用户或者强制重启;
                            // 建议: 用户可以监听进入后台事件, 然后应用自杀
                            System.out.println("表明新补丁生效需要重启");
                        } else if (code == PatchStatus.CODE_LOAD_FAIL) {
                            // 内部引擎异常, 推荐此时清空本地补丁, 防止失败补丁重复加载
                            SophixManager.getInstance().cleanPatches();
                            System.out.println("内部引擎异常");
                        } else {
                            // 其它错误信息, 查看PatchStatus类说明
                            System.out.println("其它错误信息"+mode);
                        }
                    }
                }).initialize();
        SophixManager.getInstance().queryAndLoadNewPatch();
    }

其中 appVersion 与你要更新的 app 的 build 文件中 versionName “1.0” 一致


1.6 生成补丁并发布

经过上面的步骤,我们的 app 代码已经配置好了.
没错就是只需要配置一下清单,然后调用初始化
其他的任务就是在阿里平台上操作了

首先要下载打补丁工具,2.x以后完成界面操作,告别命令行

Android 对接百川sdk 百川系统_热修复_09

下载后按照文档提示,设置好输出路径,选择新包和旧包,点击go就可以了

Android 对接百川sdk 百川系统_阿里_10


Android 对接百川sdk 百川系统_集成_11

生成的补丁会保存到你设置的路径中,名称是 sophix-patch.jar(或者类似是jar)
最终要把名字改为 baichuan-hotfix-patch.jar
最终要把名字改为 baichuan-hotfix-patch.jar
最终要把名字改为 baichuan-hotfix-patch.jar

有了补丁就可以发布了

进入 HotFix 管理平台 点击应用后面的管理

Android 对接百川sdk 百川系统_Android 对接百川sdk_12


新增版本号,我的是1.0

说明一:patch是针对客户端具体某个版本的,patch和具体版本绑定

eg. 应用当前版本号是1.1.0, 那么只能在后台查询到1.1.0版本对应发布的补丁, 而查询不到之前1.0.0旧版本发布的补丁.
说明二:针对某个具体版本发布的新补丁, 必须包含所有的bugfix, 而不能依赖补丁递增修复的方式, 因为应用仅可能加载一个补丁

eg. 针对1.0.0版本在后台发布了一个补丁版本号为1的补丁修复了bug1, 然后发现此时针对这个版本补丁1修复的不完全, 代码还有bug2, 在后台重新发布一个补丁版本号为2的补丁, 那么此时补丁2就必须同时包含bug1和bug2的修复才行, 而不是只包含bug2的修复(bug1就没被修复了)

Android 对接百川sdk 百川系统_阿里_13

新增完成后,点击版本后的 查看详情-到新界面再次点击上传补丁

Android 对接百川sdk 百川系统_集成_14


Android 对接百川sdk 百川系统_HotFix_15

注意:如果没有显示你的补丁(jar文件),需要把右下角文件格式改成所有

Android 对接百川sdk 百川系统_热修复_16

上传补丁成功后状态

Android 对接百川sdk 百川系统_热修复_17

到这里已经完成了99%,剩下的就是本地测试,然后发布了

点击查看详情(如上图)

进入下面界面

Android 对接百川sdk 百川系统_热修复_18

备注

发布完成后运行自己的程序,然后清理缓存重新启动,你的补丁就起作用了.若是没起作用的话就多重复几次.
补丁中最好有一些标记,例如修改某个界面的提示,否则全是非交互代码不易判断是否成功
阿里后台补丁发布设备数会明显延时,不作为成功与否参考
文章只是操作流程总结,若有错误还望同学指出