集成步骤:
创建应用
登录移动热修复控制台:https://hotfix.console.aliyun.com/,点击右上角创建App- 在MHub控制台点击右上角创建产品,填入产品名称、行业分类和描述。产品创建
- 在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