如何使用阿里百川hotfix熱修復功能(二)

         前面我講到了如何接入阿里百川熱修復的準備工作  如何使用阿里百川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();
}

這裏就算是接入完成了,是不是很簡單。我們接下來就可以進行打補丁patch了。

進入上一篇:如何使用阿里百川hotfix熱修復功能(二)

進入下一篇:如何使用阿里百川hotfix熱修復功能(三)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章