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);
}