使用阿裏百川HotFix
阿新 • • 發佈:2017-07-05
string 加載 方式 asus eas idl 外部 posit use
前言:首先要弄懂HotFix是幹嘛的,不然就別向下看了。這裏僅僅根據官方文檔的代碼書寫,親測可用,不做理論指導。
Android Studio集成:
添加maven倉庫地址:
- repositories {
- maven {
- url "http://repo.baichuan-android.taobao.com/content/groups/BaichuanRepositories"
- }
- }
添加gradle坐標版本依賴:
- dependencies {
- compile ‘com.taobao.android:alisdk-hotfix:2.0.9‘
- }
權限說明:
- <! -- 網絡權限 -->
- <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"/>
配置AndroidManifest文件:
- <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密鑰" />
混淆配置:
- #基線包使用,生成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.**{*;}
SDK接口配置:
- package xin.ceet.com.tencentdemo;
- import android.app.Application;
- import com.taobao.sophix.PatchStatus;
- import com.taobao.sophix.SophixManager;
- import com.taobao.sophix.listener.PatchLoadStatusListener;
- /**
- * Created by asus on 2017/7/5.
- */
- public class MyApplication extends Application {
- private String appVersion = "1.0.0";
- @Override
- public void onCreate() {
- super.onCreate();
- SophixManager.getInstance().setContext(this)
- .setAppVersion(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) {
- // 表明新補丁生效需要重啟. 開發者可提示用戶或者強制重啟;
- // 建議: 用戶可以監聽進入後臺事件, 然後應用自殺
- } else if (code == PatchStatus.CODE_LOAD_FAIL) {
- // 內部引擎異常, 推薦此時清空本地補丁, 防止失敗補丁重復加載
- // SophixManager.getInstance().cleanPatches();
- } else {
- // 其它錯誤信息, 查看PatchStatus類說明
- }
- }
- }).initialize();
- SophixManager.getInstance().queryAndLoadNewPatch();
- }
- }
版本說明:
- 說明一:patch是針對客戶端具體某個版本的,patch和具體版本綁定
- eg. 應用當前版本號是1.1.0, 那麽只能在後臺查詢到1.1.0版本對應發布的補丁, 而查詢不到之前1.0.0舊版本發布的補丁.
- 說明二:針對某個具體版本發布的新補丁, 必須包含所有的bugfix, 而不能依賴補丁遞增修復的方式, 因為應用僅可能加載一個補丁
- eg. 針對1.0.0版本在後臺發布了一個補丁版本號為1的補丁修復了bug1, 然後發現此時針對這個版本補丁1修復的不完全, 代碼還有bug2, 在後臺重新發布一個補丁版本號為2的補丁, 那麽此時補丁2就必須同時包含bug1和bug2的修復才行, 而不是只包含bug2的修復(bug1就沒被修復了)
使用阿裏百川HotFix