阿里云HotFix热修复应用

集成步骤:

  • 创建应用
    登录移动热修复控制台:https://hotfix.console.aliyun.com/,点击右上角创建App

    1. 在MHub控制台点击右上角创建产品,填入产品名称、行业分类和描述。产品创建
      这里写图片描述

2.点击创建应用按钮,填写APP名称、端类型、packageName/bundleId 完成应用创建
这里写图片描述

3.创建完成后点击左侧服务列表选择移动热修复,进入移动热修复控制台
这里写图片描述
里面有我们一会需要用到的信息 appKey、AppSecret、RSA密钥

  • android studio 集成

先在project的gradle里面添加:


allprojects {
    repositories {
        jcenter()
        maven {
            url "http://maven.aliyun.com/nexus/content/repositories/releases"
        }
    }
}

然后在module的gradle中添加:

  compile'com.aliyun.ams:alicloud-android-hotfix:3.1.3'
  • 创建一个Application,并在清单文件中声明
package com.hotfixdemo;

import android.app.Application;
import android.util.Log;

import com.taobao.sophix.PatchStatus;
import com.taobao.sophix.SophixManager;
import com.taobao.sophix.listener.PatchLoadStatusListener;

/**
 * Author:wang_sir
 * Time:2017/11/28 16:14
 * Description:This is MyApplication
 */
public class MyApplication extends Application {


    @Override
    public void onCreate() {
        super.onCreate();
        // initialize最好放在attachBaseContext最前面,初始化直接在Application类里面,切勿封装到其他类
        String appVersion = "0.0.0";
        try {
            appVersion = this.getPackageManager()
                    .getPackageInfo(this.getPackageName(), 0)
                    .versionName;
        } catch (Exception e) {
        }
        SophixManager.getInstance().setContext(this)
                .setAppVersion("appVersion")
                .setAesKey(null)
                .setEnableDebug(true)
                .setPatchLoadStatusStub(new PatchLoadStatusListener() {
                    @Override
                    public void onLoad(final int mode, final int code, final String info, final int handlePatchVersion) {

                        Log.e("TAG",code+"---------------------------------------");
                        // 补丁加载回调通知
                        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();
    }
}

注意:setAppVersion里面的版本号一定要和后台添加版本号一致,后台添加版本号如下图
这里写图片描述

  • 添加网络权限
 <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
  • 在清单文件中添加key
 <meta-data
            android:name="com.taobao.android.hotfix.IDSECRET"
            android:value="你在开发者平台获取的APPSID" />
        <meta-data
            android:name="com.taobao.android.hotfix.APPSECRET"
            android:value="你在开发者平台获取的APPSECRET" />
        <meta-data
            android:name="com.taobao.android.hotfix.RSASECRET"
            android:value="你在开发者平台获取的RSASECRET" />

这三个值在创建应用时有提到过,在后台里面能看到

至此我们的集成过程就已经完成了,下面进入调试使用阶段

  • 先在后台添加版本,添加版本号一定要和application中setAppVersion里面的版本号一致

  • 首先我们要创建一个old.apk(也就是有问题的apk)

  • 然后更改想要修改的代码,直接发布生成一个new.apk

  • 接下来我们就要使用阿里提供的生成补丁的工具了:
    Windows版本打包工具地址:
    http://ams-hotfix-repo.oss-cn-shanghai.aliyuncs.com/SophixPatchTool_windows.zip
    解压后,打开SophixPatchTool.exe
    这里写图片描述

将旧包和新包导入,点击设置,选择好补丁输出路径,点击GO!,等待生成的补丁包。
将补丁包上传到后台的版本中
这里写图片描述

一般在发布前官方都推荐本地测试,当然也可以不测试,直接发布。
调试工具地址:
http://ams-hotfix-repo.oss-cn-shanghai.aliyuncs.com/hotfix_debug_tool-release.apk
可以下载下来试试

自己写的测试的小demo已经托管到GitHub:https://github.com/DevelopWb/HotFix

猜你喜欢

转载自blog.csdn.net/csdn_mm/article/details/78657376