前面我讲到了如何接入阿里百川热修复的准备工作 如何使用阿里百川hotfix热修复功能(一)
如果申请通过了,应该就是这样的,显示已开通:
点击进入后台,可以看到,会自动生成android 和ios 两个版本的appId。appId我们在后面集成会用到。点击管理,可以看到生成的rsa密钥:
这样,我们就可以开始集成了:
1. android studio集成方式:
添加maven仓库地址:打开项目找到app的build.gradle文件,添加如下配置:
添加gradle坐标版本依赖:
compile 'com.alibaba.sdk.android.plugins.jar:alisdk-utdid:0.0.1'
依赖即可
如果远程依赖失败,可以使用官方demo提供的jar进行使用:
2.添加权限
<! -- 网络权限 -->
<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"
/>
将你之前申请的appsecret和rsa文件填入
<meta-data
android:name=
"com.taobao.android.hotfix.APPSECRET"
android:value=
"your-app-secret"
/>
<meta-data
android:name=
"com.taobao.android.hotfix.RSASECRET"
android:value=
"your-rsa-secret"
/>
-keep
class
*
extends
java.lang.annotation.Annotation
-keepclasseswithmembernames
class
* {
native
<methods>;
}
-keep
class
com.alipay.euler.andfix.**{
*;
}
-keep
class
com.taobao.hotfix.aidl.**{*;}
-keep
class
com.ta.utdid2.device.**{*;}
-keep
class
com.taobao.hotfix.HotFixManager{
public
*;
}
请复制下载SDK(SDK下载&版本更新记录里“SDK”项下载下来, 然后解压)加入so文件,不然会报错。
5.初始化
初始化应该尽可能的早. 强烈推荐在Application.onCreate()
中进行SDk初始化以及查询服务器是否有可用补丁的操作. 这里用到了appId:
private void initApp() { this.appId = "78962-1"; //替换掉自己应用的appId try { this.appVersion = this.getPackageManager().getPackageInfo(this.getPackageName(), 0).versionName; } catch (Exception e) { this.appVersion = "1.6"; } } private void initHotfix() { HotFixManager.getInstance().initialize(this, appVersion, appId, true, new PatchLoadStatusListener() { @Override public void onload(int mode, int code, String info, int handlePatchVersion) { // 补丁加载回调通知 if (code == PatchStatusCode.CODE_SUCCESS_LOAD) { /** code: 1 补丁加载成功 code: 6 服务端没有最新可用的补丁 code: 12 当前应用已经存在一个旧补丁, 应用重启尝试加载新补丁 code: 13 补丁加载失败, 导致的原因很多种, 比如UnsatisfiedLinkError等异常, 此时应该严格检查logcat异常日志 */ // TODO: 10/24/16 表明补丁加载成功 MyLog.e("补丁加载成功:code=",code+"--------"); } else if (code == PatchStatusCode.CODE_ERROR_NEEDRESTART) { // TODO: 10/24/16 表明新补丁生效需要重启. 业务方可自行实现逻辑, 提示用户或者强制重启, 建议: 用户可以监听进入后台事件, 然后应用自杀 MyLog.e("新补丁生效需要重启:code=",code+"--------"); } else { // TODO: 10/25/16 其它错误信息, 查看PatchStatusCode类说明 MyLog.e("补丁加载:code=",code+"--------"); } } }); /** * queryNewHotPatch()方法主要用于查询服务器是否有新的可用补丁, 如果查询到可用的话, 首先下载补丁到本地, 然后应用原本没有补丁, 那么第一个补丁会立刻加载应用已经存在一个补丁, 首先会把之前的补丁文件删除, 然后不立刻加载, 而是等待下次应用重启再加载该补丁 补丁在后台发布之后, 并不会主动下行推送到客户端, 需要手动调用queryNewHotPatch方法查询后台补丁是否可用. 只会下载补丁版本号比当前应用存在的补丁版本号高的补丁, 比如当前应用已经下载了版本号为5的补丁, 那么只有后台发布的补丁版本号>5才会重新下载. */ HotFixManager.getInstance().queryNewHotPatch(); }
这里就算是接入完成了,是不是很简单。我们接下来就可以进行打补丁patch了。
进入上一篇:如何使用阿里百川hotfix热修复功能(二)
进入下一篇:如何使用阿里百川hotfix热修复功能(三)