APP熱修復

APP熱修復的概念:app

  APP修復是針對修復app中的bug場景來定義的。當咱們已上線的app出現bug的時候,咱們想在用戶不知情的狀況下修復這個bug,那麼就會用到熱修復。框架

APP熱修復的實現原理:ide

  首先,生成新版本的apk與舊版本的apk的差別補丁包文件;測試

  其次,使用熱修復框架的Api在Application中去嘗試加載指定路徑的補丁差別包;gradle

  最後,只須要將補丁差別包寶貝到對應路徑,代開有bug的App,在Applcation建立的時候就會將補丁包文件加載到內存中而且替換對應的方法。this

經常使用的熱修復框架---阿里的AndFixspa

  使用步驟:code

  首先,在gradle文件中依賴AndFix類庫,而且在Application的onCreate方法中編寫加載patch文件的代碼:blog

//經反覆測試,0.5的版本不如0.4的版本穩定,所以咱們用穩定的版本
//compile 'com.alipay.euler:andfix:0.5.0@aar'
compile 'com.alipay.euler:andfix:0.5.0@aar'

  添加加載patch文件的代碼:ip

public class MyApp extends Application {
    @Override
    public void onCreate() {
        super.onCreate();
        PatchManager patchManager = new PatchManager(this);
        String appVersion = "1.0";//當前app的版本號
        patchManager.init(appVersion);
​
        //開始加載patch文件
        patchManager.loadPatch();
​
        File patchFile = new File(Environment.getExternalStorageDirectory(),"out.apatch");
        try {
            if(patchFile.exists()){
                //指定patch文件的路徑
                patchManager.addPatch(patchFile.getAbsolutePath());
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

  咱們將2個apk文件和簽名文件一同複製到AndFix-master\tools\apkpatch-1.0.3目錄下,使用apkpatch命令產生出patch文件,命令以下:

apkpatch -f fix.apk -t bug.apk -o bug_fix -k test.jks -p 111111 -a test -e 111111

  將patch文件放到指定的路徑下,運行帶有bug的應用,從新啓動application,就會自動覆蓋原來的帶有bug的代碼。

注:沒必要擔憂patch文件會被用戶誤刪,由於patch文件已經複製到了應用的包下。

 

熱修復只是用於bug層級的修復,阿里的AndFix只是用於方法的修復,不能對類和Android四大組件進行修復。並且熱修復具備不穩定性,並且沒法適配全部的手機。

相關文章
相關標籤/搜索