使用阿裡百川HotFix

来源:http://www.cnblogs.com/ceet/archive/2017/07/05/7121107.html
-Advertisement-
Play Games

前言:首先要弄懂HotFix是幹嘛的,不然就別向下看了。這裡僅僅根據官方文檔的代碼書寫,親測可用,不做理論指導。 Android Studio集成: 添加maven倉庫地址: 添加gradle坐標版本依賴: 許可權說明: 配置AndroidManifest文件: 混淆配置: SDK介面配置: 版本說明 ...


前言:首先要弄懂HotFix是幹嘛的,不然就別向下看了。這裡僅僅根據官方文檔的代碼書寫,親測可用,不做理論指導。


Android Studio集成:

    添加maven倉庫地址:

  1. repositories {
  2.    maven {
  3.        url "http://repo.baichuan-android.taobao.com/content/groups/BaichuanRepositories"
  4.    }
  5. }

    添加gradle坐標版本依賴:

  1. dependencies {
  2.     compile 'com.taobao.android:alisdk-hotfix:2.0.9'
  3. }

    許可權說明:

  1. <! -- 網路許可權 -->
  2. <uses-permission android:name="android.permission.INTERNET" />
  3. <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
  4. <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
  5. <! -- 外部存儲讀許可權 -->
  6. <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>

    配置AndroidManifest文件:

  1. <meta-data
  2. android:name="com.taobao.android.hotfix.IDSECRET"
  3. android:value="App ID" />
  4. <meta-data
  5. android:name="com.taobao.android.hotfix.APPSECRET"
  6. android:value="App Secret" />
  7. <meta-data
  8. android:name="com.taobao.android.hotfix.RSASECRET"
  9. android:value="RSA密鑰" />

    混淆配置:

  1. #基線包使用,生成mapping.txt
  2. -printmapping mapping.txt
  3. #生成的mapping.txt在app/buidl/outputs/mapping/release路徑下,移動到/app路徑下
  4.  
  5. #修複後的項目使用,保證混淆結果一致
  6. #-applymapping mapping.txt
  7.  
  8. #hotfix
  9. -keep class com.taobao.sophix.**{*;}
  10. -keep class com.ta.utdid2.device.**{*;}

    SDK介面配置:

  1. package xin.ceet.com.tencentdemo;
  2.  
  3. import android.app.Application;
  4.  
  5. import com.taobao.sophix.PatchStatus;
  6. import com.taobao.sophix.SophixManager;
  7. import com.taobao.sophix.listener.PatchLoadStatusListener;
  8.  
  9. /**
  10.  * Created by asus on 2017/7/5.
  11.  */
  12.  
  13. public class MyApplication extends Application {
  14.     private String appVersion = "1.0.0";
  15.     @Override
  16.     public void onCreate() {
  17.         super.onCreate();
  18.         SophixManager.getInstance().setContext(this)
  19.                 .setAppVersion(appVersion)
  20.                 .setAesKey(null)
  21.                 .setEnableDebug(true)
  22.                 .setPatchLoadStatusStub(new PatchLoadStatusListener() {
  23.                     @Override
  24.                     public void onLoad(final int mode, final int code, final String info, final int handlePatchVersion) {
  25.                         // 補丁載入回調通知
  26.                         if (code == PatchStatus.CODE_LOAD_SUCCESS) {
  27.                             // 表明補丁載入成功
  28.                         } else if (code == PatchStatus.CODE_LOAD_RELAUNCH) {
  29.                             // 表明新補丁生效需要重啟. 開發者可提示用戶或者強制重啟;
  30.                             // 建議: 用戶可以監聽進入後臺事件, 然後應用自殺
  31.                         } else if (code == PatchStatus.CODE_LOAD_FAIL) {
  32.                             // 內部引擎異常, 推薦此時清空本地補丁, 防止失敗補丁重覆載入
  33.                             // SophixManager.getInstance().cleanPatches();
  34.                         } else {
  35.                             // 其它錯誤信息, 查看PatchStatus類說明
  36.                         }
  37.                     }
  38.                 }).initialize();
  39.         SophixManager.getInstance().queryAndLoadNewPatch();
  40.     }
  41.  
  42. }

    版本說明:

  1. 說明一:patch是針對客戶端具體某個版本的,patch和具體版本綁定
  2.  
  3. eg. 應用當前版本號是1.1.0, 那麼只能在後臺查詢到1.1.0版本對應發佈的補丁, 而查詢不到之前1.0.0舊版本發佈的補丁.
  4. 說明二:針對某個具體版本發佈的新補丁, 必須包含所有的bugfix, 而不能依賴補丁遞增修複的方式, 因為應用僅可能載入一個補丁
  5.  
  6. eg. 針對1.0.0版本在後臺發佈了一個補丁版本號為1的補丁修複了bug1, 然後發現此時針對這個版本補丁1修複的不完全, 代碼還有bug2, 在後臺重新發佈一個補丁版本號為2的補丁, 那麼此時補丁2就必須同時包含bug1bug2的修複才行, 而不是只包含bug2的修複(bug1就沒被修複了)

    


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 一,效果圖。 二,代碼。 ViewController.h ViewController.m ...
  • 1.Android開發環境 Android常用的開發環境包括兩個:Eclipse + ADT 和Android Studio,Android Studio作為google官方推出的開發環境自然有得天獨厚的優勢,所以推薦使用Android Studio進行開發。關於安裝我就不介紹了。 以後有空我會總結 ...
  • 1.許可權被分為了普通和危險兩種 2.打電話的Demo ...
  • 平臺 Ubuntu14.04 64 現象 在AndrodStudio中點擊模擬器的啟動按鈕後,模擬器界面彈出後,又立刻閃退。 解決 一、查看模擬器的信息 從上面可以看到模擬器的存放路徑以及名稱: 路徑:/home/pengdonglin/.android/avd/4_WVGA_Nexus_S_API ...
  • 大家好,今天想與大家一起分享的是Activity。我們平時接觸的最多的就是Activity了,作為四大組件中最為重要的老大,Activity究竟是如何啟動的呢?這篇文章將會從源碼的角度為大家進行全方位的解析,為了方便大家理解整個的過程,我會用流程圖的方式將整個過程串起來,希望對大家有所幫助。 ...
  • 這裡主要是對App Extension的一些介紹以及詳細給大家介紹一下Share Extension,後期會添加其他的Extension介紹。 ...
  • 構建新的項目時,在重新引入alipaySDK進行編譯之後出現了一個錯誤:找不到 #include<openssl/asn1.h> 這個文件 首先排除是SDK的問題以及代碼問題.在重新翻看了官方文檔以及網上的一些帖子之後大致推斷出問題出現的原因可能是由於文件路徑的變化導致了配置信息出現錯誤.所以我的解 ...
  • 相信會碰到很多類似的需求,一個列表控制項,然後控制項上方的一個頭部需要自定義,這樣就不好有時候也不能加在列表控制項的頭部了,那必須得嵌套一層scrollview了,沒毛病,那麼一般的列表控制項都是有上拉下拉的操作,而且一般也是在 github 上找尋一個收藏量高的 來做為一個全局通用的上下拉控制項,這裡問題就 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...