如何使用阿里百川hotfix热修复功能(二)

来源:互联网 发布:手机密码下载软件 编辑:程序博客网 时间:2024/06/04 19:47
   前面我讲到了如何接入阿里百川热修复的准备工作  如何使用阿里百川hotfix热修复功能(一)    

       如果申请通过了,应该就是这样的,显示已开通:

  

    点击进入后台,可以看到,会自动生成Android 和iOS 两个版本的appId。appId我们在后面集成会用到。点击管理,可以看到生成的rsa密钥:

  



这样,我们就可以开始集成了:

   1. android studio集成方式:

添加maven仓库地址:打开项目找到app的build.gradle文件,添加如下配置:


添加gradle坐标版本依赖:


这里因为我使用了友盟推送,所以会有utdid类重复异常, 应该是其它阿里系SDK也依赖了utdid这个SDK, 此时去掉compile 'com.alibaba.sdk.android.plugins.jar:alisdk-utdid:0.0.1'依赖即可

如果远程依赖失败,可以使用官方demo提供的jar进行使用:

sdk&demo下载:http://baichuan.taobao.com/docs/doc.htm?spm=a3c0d.7629140.0.0.NlDYS7&treeId=234&articleId=105517&docType=1


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"/>
3.配置AndroidManifest文件

将你之前申请的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"/>
4.设置混淆配置

-keepclass*extendsjava.lang.annotation.Annotation
-keepclasseswithmembernamesclass* {
    native<methods>;
}
-keepclasscom.alipay.euler.andfix.**{
    *;
}
-keepclasscom.taobao.hotfix.aidl.**{*;}
-keepclasscom.ta.utdid2.device.**{*;}
-keepclasscom.taobao.hotfix.HotFixManager{
    public*;
}
ps:如果你的项目中使用到了armeabi-v7a, arm64-v8a文件,

请复制下载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();}

转载:http://blog.csdn.net/wsdbssxq/article/details/53287464

这里就算是接入完成了,是不是很简单。我们接下来就可以进行打补丁patch了。

进入上一篇:如何使用阿里百川hotfix热修复功能(一)

进入下一篇:如何使用阿里百川hotfix热修复功能(三)

0 0
原创粉丝点击