必赢亚洲手机app下载


2017天赋潜能上学年苹果电脑

创设性子桌面图标

Apk增量更新

前言

有关APK更新的技艺比较多,例如:增量更新、插件式开发、热修复、TucsonN、静默安装。

上边简单介绍一下:

 

图片 1

 

 

怎么是增量更新?

 

增量更新正是固有app的基本功上只更新产生变化的地点,其他保持原样。

与原先每趟换代都要下载完整apk包的做法相比,这样做的补益总之:每趟变更的地方总是相比较少,因而更新包的容量就会小很多。

 

增量更新的流水生产线

 

1.APP检查和测试最新版本:把当下版本告诉服务端,服务端进行判断。

就算有新本子,服务端须要对当下版本的APK与最新版本的APK进行三次差分,爆发patch差分文件。(只怕新本子的APK上传播服务端的时候就已经差分好了)

2.APP在后台下载差分文件,举行理文件件的MD5校验,在该地开始展览合并(跟当地的data目录上边包车型地铁APK文件合并),合并出最新的APK之后,提醒用户安装。

3.增量更新的尾声指标:省流量地翻新宿主APK。

差分的拍卖相比较麻烦的地点正是要对准差异的选取市集渠道和许多例外版本进行差分。

小心:新本子有大概比旧版本小,差分只是把变化的一部分记录下来。

图片 2

 

劳务器端行为(后台工程师操作)

 

1.下载拆分和归并要用的第一方库(bsdiff、bzip2)

 

我们采用到的第③方库是:Binary
diff,简称bsdiff,那么些库专门用来兑现公文的差分和统一的,它的官网如下:

http://www.daemonology.net/bsdiff/

图片 3

 

在那里咱们得以点击文中的”here”下载源码,那是Linux源码。也能够下载Windows版本的源码,点击”Windows
port”。

建议Windows 下用sbsdiff4.3-win32-src编译

以此库引用了bzip2这么些库,官网如下:

http://www.bzip.org/

 

2.编写翻译第1方库源码生成dll动态库

 

为了便利演示,小编在Windows
10阳台下用VS2017编写翻译,真实意况服务器大都在Linux系统下运作,这么些大家去测试呢。

Windows 下生成dll动态库参考 Android NDK开发之旅10–JNI–JNI开发流程

图片 4

所用到能源

注意:com_haocai_bsdiff_BsDiff.h 是基于Java文件宣称获得的,步骤省略。

编写翻译进程中会有以下错误提醒

字符集难点

用了不安全和过时的函数

SDL检查不经过

以下是消除办法:

图片 5

图片 6

图片 7

配备字符集

 

忽视不安全和过时的函数警告

 

安装SDL检查格局

其它,可能报头文件找不到的错误,这有或者是编码难题,因为匈牙利人使用的苹果电脑跟Windows电脑的编写翻译不同发生的。能够由此Notepad++的转码效能拓展转码,全体转为UTF-8无BOM格式编码即可,Windows、Linux通用的。

大家项目性质之中的变化配置内部选取DLL,并且修改消除方案为您的处理器的附和平台,然后编写翻译,生成DLL动态库文件。

 

3.Java代码调用

 

开创Web项目,用来做APP的服务端。创立工具类专门用于发生差分包:

图片 8

内部JNI的达成如下(该兑现写在bsdiff.cpp中):

图片 9

通过钻探bsdiff的源码,我们发现bsdiff.cpp里面的main函数正是入口函数,防止歧义把函数名main改为bsdiff_main,然后经过JNI去调用。

图片 10

根据bsdiff.cpp中bsdiff_main函数方法中有以下重点语句

if (argc != 4) errx(1, “usage: %s oldfile newfile patchfile\n”,
argv[0]);

基于提示须要传入多少个参数:

    argv[0] = “bsdiff”;//这么些参数没用

    argv[1] = oldPath;//旧APK文件路径

    argv[2] = newPath;/新APK文件路径

    argv[3] = patchPath;//APK差分文件路径

下一场大家准备多个APK文件,不一致版本的,最好Java代码、财富都不均等。

写3个Java测试类生成差分包:

图片 11

图片 12

浮动结果如下图所示:

 

图片 13

apk.patch为浮动的差分包

注意:

test_new.apk、test_old.apk 要先放在目的目录

bsdiff.cpp中生成差分包的主次方法是异步的,所以生成完整的apk.patch只怕要等一下。apk.patch体量大小截至拉长,表示生成停止。

 

4.简短搭建后台JavaWeb供Android前端下载apk.patch差分包

 

参考 速龙lij idea创立javaWeb以及Servlet简单完结

图片 14

在浏览器中输入

http://localhost:8080/App\_Update\_Web/patchfile/apk.patch

图片 15

如图,提醒能够下载

 

服务器搭建完毕。

 

Android客户端表现

 

1.编写翻译合并要用的第一方库(bsdiff、bzip2)

 

对应的Java代码如下:

图片 16

在Android端,大家要求把bzip2以及bsdiff的公文拷贝到jni目录里面,同样的,大家只必要编写翻译二个bspatch.c源文件即可。

图片 17

 

ndk-build所须要的文本

鉴于Android手提式有线电话机本来就是Linux系统,由此大家平昔使用bsdiff的Linux版本的库即可。

跟服务器端一样,在这边大家把bspatch.c中的main函数改为bspatch_main,提供JNI调用:

图片 18

代码v1.0差分包合并大旨代码如下:

图片 19

图片 20

图片 21

图片 22

根本的逻辑在fileDownload方法中,大家先下载差分包,然后在本土合成,最终提示用户设置。

为了达到强烈的效劳,多少个本子能够增加和删除一些财富文件、修改Java代码、布局文件等。

瞩目:那里7.0大概会有标题,把路子揭发给其余app,需求FileProvider去完结(简单,这一个留给大家去做吗)。

源码下载:https://github.com/kpioneer123/DiffInstallApp

相关文章

No Comments, Be The First!
近期评论
    功能
    网站地图xml地图