Android增量更新
阿新 • • 發佈:2019-01-05
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);
}