1. 程式人生 > >Android增量更新

Android增量更新

1、生成差異包

使用bsdiff4.3生成差異包。

開啟cmd,進入到bsdiff4.3-win32工具所在位置
拆分差異包命令如下:
bsdiff 舊apk地址 新apk地址 生成差異包地址
E:\apk\bsdiff4.3-win32\bsdiff4.3-win32>bsdiff e:\apk\old.apk e:\apk\new.apk e:\a
pk\update.patch

2、Android中的使用

ibs資料夾下新建資料夾armeabi,並將libApkPatchLibrary.so檔案拷貝到該資料夾下。
libApkPatchLibrary.so下載

在Activity中進行增量包合成

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Runnable mRunnable = new Runnable() {

            @Override
            public
void run() { int patchResult = PatchUtils.patch(Environment.getExternalStorageDirectory()+"/apk/old.apk", Environment.getExternalStorageDirectory()+"/apk/new.apk", Environment.getExternalStorageDirectory()+"/apk/update.patch"); } }; Thread thread = new
Thread(mRunnable); thread.start(); } static { System.loadLibrary("ApkPatchLibrary"); } }
public class PatchUtils {

    /**
     * native方法 使用路徑為oldApkPath的apk與路徑為patchPath的補丁包,合成新的apk,並存儲於newApkPath
     * 
     * 返回:0,說明操作成功
     * 
     * @param oldApkPath 示例:/sdcard/old.apk
     * @param newApkPath 示例:/sdcard/new.apk
     * @param patchPath  示例:/sdcard/xx.patch
     * @return
     */
    public static native int patch(String oldApkPath, String newApkPath,
            String patchPath);
}