美文网首页
JNI--MicrosoftWindows平台下使用bsdiff

JNI--MicrosoftWindows平台下使用bsdiff

作者: aruba | 来源:发表于2020-04-20 10:34 被阅读0次

    增量更新是很多大型企业常用的技术,目的是为了节省服务器流量来更新版本,运用范围也非常广泛,pc客户端,游戏,移动端应用,甚至服务器代码更新都可以使用。今天来介绍微软windows平台下如何使用增量更新

    对于服务器而言,增量更新一般是对旧版本文件和新版本文件进行差分,形成差分文件

    对于客户端而言,增量更新一般是拿到服务器的差分文件,和旧版本文件进行合并,形成新版本文件

    所以对于服务器开发者而言,只需要学习如何对文件进行差分即可

    使用增量更新需要用到第三方开源库

    1.bsdiff:http://www.daemonology.net/bsdiff/
    2.bzip:http://www.bzip.org/downloads.html(需要翻墙)

    这两个网站默认都只提供linux平台下,其中bsdiff依赖bzip。
    windows版可以使用:https://pan.baidu.com/s/1XB63VWuzGdJbNg1GGdW6qQ 提取码:406f
    下载解压后如下:
    bsdiff4.3-win32-src.png
    我们使用vs创建一个新的工程,并新增两个文件夹,include存放.h文件,src存放c和cpp文件
    将bsdiff中的文件拷贝到相应目录
    include.png src.png
    在vs的头文件和源文件中分别右击添加现有项后,我这边是64位平台,所以选择64位(看具体是32位还是64位)编译
    接下来配置头文件目录,在右击->属性->c/c++->附加包含目录中选择编辑
    新建一个,然后点击右边的...图标,选择目录
    重新生成下解决方案,发现了几个报错:
    _CRT_SECURE_NO_WARNINGS只是一个警告,我们在继续来到属性->c/c++->预编译器->预编译定义中新增_CRT_SECURE_NO_WARNINGS
    重新生成解决方案,有新的报错:
    这个问题把SDL检查关闭就可以了
    最后我们只要生成拆分文件,所以把bspatch.cpp移除,最后成功生成exe文件
    查看bsdiff中的mian方法,执行exe需要传入三个参数,第一个是旧文件路径,第二个是新文件路径,第三个是生成的差分文件路径
    if(argc!=4) errx(1,"usage: %s oldfile newfile patchfile\n",argv[0]);
    
    这边有两个apk,然后我们在命令行中执行差分
    最后结果:
    生成的差分包大小要比全量更新小的多,达到省流量的目的
    当然如果服务器端是使用Java,只需要添加windows平台jni支持,使用native方法调用第三方库中的c/c++代码就可以了。

    相关文章

      网友评论

          本文标题:JNI--MicrosoftWindows平台下使用bsdiff

          本文链接:https://www.haomeiwen.com/subject/jebkihtx.html