1.首选我们要去阿里云移动开放平台去注册自己的账号,在这里我就不做介绍了。
2.想了解阿里云热修复技术多么牛的可以查看这篇文章
震惊!阿里热更新框架 Sophix 背后隐藏的真相竟然是……
3.接下来我们言归正传介绍下sdk的接入由于我一直使用的是Android studio 所以对于eclipse的使用就不做过多介绍了。
A. 我们先要在移动控制台去创建自己的应用地址为 https://hotfix.console.aliyun.com/
B. 接下来我们要创建一个Android studio工程在工程的model的app的build.gradle中添加相应的依赖
首先要添加maven支持
repositories {
maven {
url "http://maven.aliyun.com/nexus/content/repositories/releases"
}
}
然后要添加库依赖
compile 'com.aliyun.ams:alicloud-android-hotfix:3.0.9'
C. 接下来需要设置我们的AndroidManifest.xml设置相应的权限以及参数
首先是权限
<!-- 网络权限 -->
<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" />
然后是我们的参数
<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密钥" />
(如果我们不想在xml中定义这些内容可以写到其他地方下面的步骤会介绍到)
D. 如果我们加了混淆的话可以添加如下混淆配置
#基线包使用,生成mapping.txt
-printmapping mapping.txt
#生成的mapping.txt在app/buidl/outputs/mapping/release路径下,移动到/app路径下
#修复后的项目使用,保证混淆结果一致
#-applymapping mapping.txt
#hotfix
-keep class com.taobao.sophix.**{*;}
-keep class com.ta.utdid2.device.**{*;}
#防止inline
-dontoptimize
E. 接下来需要在我们的application类中写入如下初始化代码(如果没有的话需要自己写个类继承application并在AndroidManifest.xml里面完成注册)
1.在attachBaseContext(Context base)方法中加入如下代码
// initialize最好放在attachBaseContext最前面
//setSecretMetaData(idSecret, appSecret, rsaSecret): <可选,推荐使用> 三个Secret分别对应AndroidManifest里面的三个,可以不在AndroidManifest设置而是用此函数来设置Secret。放到代码里面进行设置可以自定义混淆代码,更加安全,此函数的设置会覆盖AndroidManifest里面的设置,如果对应的值设为null,默认会在使用AndroidManifest里面的。
//setEnableDebug(isEnabled):设置是否为debug模式
//setUnsupportedModel(modelName, sdkVersionInt):<可选> 把不支持的设备加入黑名单,加入后不会进行热修复
SophixManager.getInstance().setContext(this)
.setAppVersion("1.0")//appVersion
.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
SophixManager.getInstance().killProcessSafely();
} else if (code == PatchStatus.CODE_LOAD_FAIL) {
// 内部引擎异常, 推荐此时清空本地补丁, 防止失败补丁重复加载
SophixManager.getInstance().cleanPatches();
} else {
// 其它错误信息, 查看PatchStatus类说明
}
}
}).initialize();
2.在 public void onCreate()方法中加入如下处理
// queryAndLoadNewPatch不可放在attachBaseContext 中,否则无网络权限,建议放在后面任意时刻,如onCreate中
//实时检查是否有热修复更新
SophixManager.getInstance().queryAndLoadNewPatch();
F. 通过以上处理代码部分就完成了 我们需要使用生成补丁的工具工具连接如下
https://help.aliyun.com/document_detail/53247.html?spm=5176.doc53240.6.548.kFzYkm
将两个apk包作对比生成差异文件。将文件上传到控制台。
G. 最后控制台上添加版本 ->上传补丁->点击查看详情->发布版本