增量更新

实现流程: 

1.需要生成一个差分包,然后放在服务器上,也可以动态让服务器生成

2.Android端下载差分包

3.合并差分包,并安装

服务器:

服务器分为Linux和Windows,Linux识别.so库,使用文件运行文件(Linux 可执行文件无后缀名)

Windows服务器:识别.dll动态库,使用.exe运行文件

Windows服务器实现:

需要去bspatch 官网:http://www.daemonology.net/bsdiff/   

下载差分和合并.c文件

增量更新_第1张图片

bisdiff.c  是差分文件  bspatch.c 是合并文件

然后在下载压缩.c文件,http://www.bzip.org/downloads.html 捣鼓半天没有下载下来,

给一个我找的资源:链接:https://pan.baidu.com/s/1GSprUyjjb_7ctLpjiNbQow 密码:7s62

资源里面:bsdiff4.3-win32-src下有bsdiff.exe 文件,直接可以通过这个文件生成差分包;

windows  服务器下命令:bsdiff.exe   old.apk  new.apk  pat.patch

这样就生成差分文件了,但是我不希望如此,通过自己编译源码生成.exe 和动态.dll文件

生成.exe 差分执行文件

1.首先准备资源文件

bsdiff4.3-win32-src 将文件下的.c  .cpp 和.h 文件

2.导入生成.exe

将准备好的资源分别导入Visual studio 头文件和资源文件,然后运行生成.exe 文件,.exe文件也可以用上面的命令生成差分包

生成.dll文件

1.为什么好处

windows服务器可以动态生成差分包,这样版本升级不需要每次手动生成差分包

2.步骤

1)需要在服务器引用,我这里就用一个测试java列子

增量更新_第2张图片

使用javah  命令生成 .h 文件 

增量更新_第3张图片

然后在Visual studio中引用

增量更新_第4张图片

因为是编译器找不到  jni 和jni_md 文件  这个是jdk 中include 文件中的资源需要手动复制过来 jni_md在win32里面

增量更新_第5张图片

动态库由于是.cpp文件 需要懂点c++ 和jni  当然如果不会,那只能看案列,靠测试了

增量更新_第6张图片

需要把main函数改成diff_mian  然后把需要的参数设置好,这个时候把配置调理器调成64位,

增量更新_第7张图片

然后生成解决方案,就可以把生成的.dll 文件复制到Window 服务器了

增量更新_第8张图片

这个时候服务器可以动态运行生成差分包

Linux 服务器生成差分包

1.准备资源

首先你要安装两个软件,很小很简单,Xftp 和Xshell ; Xftp上传资源,Xshell 连接服务器使用gcc命令;将bzip2-1.0.6里面的. c和.h文件和bsdiff-4.3文件下的bsdiff.c 上传到服务器

增量更新_第9张图片

2.使用Xshell 生成可执行文件

首先必须把所有文件里面的main方法改成不是main方法 ,bsdiff.c中的入口main函数留着,把引用改了#include "bzip2/bzlib.h"

命令:gcc -fPIC  blocksort.c bzip2recover.c bzlib_private.h decompress.c mk251.c bsdiff.c bzlib.c compress.c dlltest.c randtable.c unzcrash.c bzip2.c bzlib.h crctable.c huffman.c spewG.c  -o TimBsdiff

这个命令就生成可执行文件

3.生成差分包

 命令:./Timbsdiff appOld.apk appNew.apk apk.path

使用Xshell 生成.so文件  

1.准备资源 同上

2.要生成动态库,需要对应调用文件下生成.h 文件

这个步骤给个详细链接:https://blog.csdn.net/qfanmingyiq/article/details/70215295

和上面生成.dll文件有些像似,首先把资源文件放到Visual studio 中,然后把bsdiff.c 中main函数改成不是主函数diff_main(..),然后把对应引用的java文件生成Javah 生成.h 文件 ,在bsdiff.c中引用这个.h 文件 ,但是这个.h文件需要引用jni.h 由于等会要在Linux中生成.so 文件,平台是Linux这个jni 使用Android sdk中的ndk文件jni,

增量更新_第10张图片

3.编写jni

增量更新_第11张图片

4.使用命令生成.so 库

gcc *.c  fPIC -shared -o test.so

 

 

你可能感兴趣的:(JNI)