Android增量更新(ndk开发生成动态库)
######1.写native方法######
public class PatchUtils {
//定义Native方法
/**
* 通过NDK合并得到新版本的apk文件
* @param oldApk 旧版本的apk文件路径
* @param newApk 合并的新版本apk文件路径
* @param patch 差分包路径
*/
public native static int patch(String oldApk,String newApk,String patch);
static{
System.loadLibrary("ApkPatchLib");
}
}
具体可以看 Android ndk开发
######2.生成.so动态库######
推荐使用Eclipse来生成动态库,AndroidStudio 太难折腾了,当然大神除外
生成动态库,bzip2下载下来会有很多文件只需要里面.c和.h文件放入jni目录中即可,其他可以删除
相关技术可以参考
Eclipse自动编译NDK/JNI
######3.将动态库放入项目中,我们就可以调用代码来生成新包了######
PatchUtils.patch(“old.apk”,"new.apk","***.patch");
###当然在生成新apk,我们要做一些判定,比如旧APK的签名和当前安装的apk签名是否一致,可以借助工具类SignUtils###
###以上是合成新apk的方法,下面说一下,如何获取拆分包###
我的是mac 环境 所以在终端 输入如下命令:brew install bsdiff
安装完毕后,使用如下命令
bsdiff demo_old.apk demo_new.apk demo.patch
其中demo.patch就是生成差分包