Andfix運用實例

Andfix運用實例
    關於Android熱修復的文章有很多,原理也不少,這裏就不在累贅描述了。可以參考一下博主的原理解析:
http://blog.csdn.net/qxs965266509/article/details/49816007
http://blog.csdn.net/u011176685/article/details/50984638
http://www.jianshu.com/p/0f7665944be3
    等相關文章。
    這裏直接講述怎麼運用:
事先你得配置NDK環境;直接下載最新的NDK解壓到盤符,注意盤符最好不要帶中文或空格
1.如果你的IDE是Studio,那麼直接導入
如果是Eclipse 那麼導入 上面的 AndFix (這是一個library,作爲你項目的依賴使用)
2.在你的工程的Application中初始化:
import android.app.Application;
import android.os.Environment;
import android.util.Log;

import com.alipay.euler.andfix.patch.PatchManager;

import java.io.File;
import java.io.IOException;

/**
 * sample application
 *
 */
public class MainApplication extends Application {
    private final String TAG = "TAG_Andfix";

    private final String APATCH_PATH = "/out.apatch";

    private final String DIR = "apatch";//補丁文件夾
    /**
     * patch manager
     */
    private PatchManager mPatchManager;

    @Override
    public void onCreate() {
        super.onCreate();
        // 初始化patch管理類
        mPatchManager = new PatchManager(this);
        // 初始化patch版本
        mPatchManager.init("1.0");
        // 加載已經添加到PatchManger中的patch
        mPatchManager.loadPatch();
        
        // .apatch 文件路徑
        String patchFileString = Environment.getExternalStorageDirectory().getAbsolutePath() + APATCH_PATH;
        File apatchFile = new File(patchFileString);
        if(apatchFile.exists()){
            try {
                //加載補丁
                mPatchManager.addPatch(patchFileString);
                //複製且加載補丁成功後,刪除下載的補丁,補丁複製到 /data/data/appName/files/apatch/out.apatch
                File f = new File(this.getFilesDir(), DIR + APATCH_PATH);
                if (f.exists()) {
                    boolean result = apatchFile.delete();
                    if (result)
                        Log.e(TAG, patchFileString + ";複製補丁成功,刪除SD卡補丁成功");
                    else
                        Log.e(TAG, patchFileString + ";複製補丁成功,刪除SD卡補丁失敗");
                }
            } catch (IOException e) {
                Log.e(TAG, "打補丁出錯了");
                e.printStackTrace();
            }
        }else{
            Log.e(TAG, "補丁文件不存在");
        }    
    }
}
3.按照正常流程,打包第一版apk(old.apk)
4.修改有bug的部分,正常打包出第二版apk(new.apk)
5.將兩個APK和簽名文件一起復制到上圖中 apkpatch-1.0.3 文件目錄下
6.CMD執行命令 apkpatch -f new.apk -t old.apk -o in -k xxx.keystore -p 123456 -a 123456 -e 123456 -n out
命令的解釋:-f 新版APK路徑;-t 舊版APK路徑 -o 輸出目錄 -k 簽名文件路徑 -p 簽名文件密碼 -a 別名 -e 別名密碼 -n 輸出的apatch文件名稱
7.如果是分工協作,各自修復自己的模塊,可能會有多個.apatch,執行如下命令將多個文件合併:
apatch -m in -o out -k xxx.keystore -p 123456 -a 123456 -e 123456
8.將in(或者out)目錄下的生成的.apatch文件重命名爲 out.apatch
9.將 out.apatch 文件push或者客戶端下載到手機SD卡根目錄下
10.下載完成後,重啓APP即可

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