Skip to content

CentMeng/IncrementUpdate

Repository files navigation

增量更新

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就是生成差分包

ps:bsdiff 下载地址:bsdiff
bzip2 下载地址: bzip2

About

Android增量更新(ndk开发生成动态库)

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors