1. 程式人生 > >android--------阿裏 Sophix移動熱修復

android--------阿裏 Sophix移動熱修復

後臺 val too otf 應用程序 pac pub exc get

移動熱修復(Mobile Hotfix)是阿裏雲提供的全平臺App熱修復服務方案。產品基於阿裏巴巴首創hotpatch技術,提供最細粒度熱修復能力,讓您無需等待實時修復應用線上問題。

移動熱修復提供的熱修復能力,讓您對應用程序的控制更加自由。您可以使用HotFix:

  • 緊急修復線上問題。
  • 快速發布新鮮功能。

產品優勢:(圖片來自阿裏雲)

技術分享圖片

阿裏雲接入文檔:https://help.aliyun.com/document_detail/53240.html?spm=a2c4g.11186623.6.546.ppnCPR

後臺創建應用得到應用相應信息(右鍵查看大圖像)

技術分享圖片

AndroidManifest.xml

中間的application節點下添加如下配置:

<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密鑰"
/>

Application代碼:

public class SophixStubApplication extends Application {
    public interface MsgDisplayListener {
        void handle(String msg);
    }

    public static MsgDisplayListener msgDisplayListener = null;
    public static StringBuilder cacheMsg = new StringBuilder();

    @Override
    
public void onCreate() { super.onCreate(); initHotfix(); } private void initHotfix() { String appVersion; try { appVersion = this.getPackageManager().getPackageInfo(this.getPackageName(), 0).versionName; Log.i("appVersion",appVersion); } catch (Exception e) { appVersion = "1.0.0"; } SophixManager.getInstance().setContext(this) .setAppVersion(appVersion) .setAesKey(null) //.setAesKey("0123456789123456") .setEnableDebug(true) .setPatchLoadStatusStub(new PatchLoadStatusListener() { @Override public void onLoad(final int mode, final int code, final String info, final int handlePatchVersion) { String msg = new StringBuilder("").append("Mode:").append(mode) .append(" Code:").append(code) .append(" Info:").append(info) .append(" HandlePatchVersion:").append(handlePatchVersion).toString(); if (msgDisplayListener != null) { msgDisplayListener.handle(msg); } else { cacheMsg.append("\n").append(msg); } } }).initialize(); } }

第一次運行,有bug的效果:

技術分享圖片

生成有bug的apk文件保存。

下載補丁生成工具和調試工具,其中調試工具是一個apk文件

技術分享圖片

修改bug代碼,運行生成 apk 文件。

現在有兩個apk文件了,一個老的apk文件(有bug),一個新的apk文件(無bug),然後用工具就會生成一個補丁文件

運行下載的 SophixPatchTool 程序,按照要求導入apk文件,如圖:(註:在設置中加入補丁生成文件路徑

技術分享圖片

生成的是一個 jar包

技術分享圖片

可以利用測試工具進行本地測試

這裏我們通過adb命令來將sophix-patch.jar文件上傳到手機本地內存目錄下,然後修復錯誤,

adb命令相關請看博客: http://www.cnblogs.com/zhangqie/p/8505252.html

技術分享圖片

結束應用,重啟得到效果:(文字和圖片都改變了)

技術分享圖片

也可以通過阿裏雲控制臺進行apk補丁修復

技術分享圖片

然後通過測試工具,連接應用---》二維碼掃描修復文件

技術分享圖片

官方Demo下載:https://github.com/aliyun/alicloud-android-demo/tree/master/hotfix_android_demo

android--------阿裏 Sophix移動熱修復