前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Android NDK开发-APK增量更新

Android NDK开发-APK增量更新

作者头像
用户1205080
发布2018-09-12 10:05:02
9570
发布2018-09-12 10:05:02
举报
文章被收录于专栏:编码前线编码前线

概述

现在的APP更新频率非常高,apk的大小也在不断的变大。如果每次新版本的更新,都让用户去下载一个完整的apk,这对于用户的耐心和流量都是巨大的消耗。特别是做应用市场的,如果没有增量更新,那么就要额外的付出高额的流量费用。

原理

将手机已安装的apk与服务端最新的apk进行二进制对比,得到差分包,用户更新程序时,只需要下载差分包,并在本地使用差分包与已安装的apk合并成新版的apk。

工具

bsdiff、bspatch

下载地址:http://www.daemonology.net/bsdiff/

编译源码:

Step1: make

出错信息:

Step2: 修改Makefile文件,将install:下面的ifendif各添加一个缩进:

Step3: make

错误信息:

Step4: 在bspath.c中添加#include <sys/types.h>

Step5: make

生成差分包

代码语言:javascript
复制
./bsdiff v1.0.0.apk v1.0.1.apk 1.0.0-to-1.0.1.patch 

合并差分包

代码语言:javascript
复制
./bspatch v1.0.0.apk new.apk 1.0.0-to-1.0.1.patch

对比文件是否一样:

在Android项目中使用bspatch

Step1:下载依赖库bzip的源码(官网域名过期),可以从我的GitHub项目中拷贝:

下载地址:https://github.com/xch168/BsPatchTest

Step2:将bzip库,导入到Android项目中;

Step3:将bsdiff中的bspatch.c文件导入到Android项目中,并将bspatch.c中的#include <bzlib.h>改成#include "bzip2/bzlib.h"

Step4:编写CMakeLists.txt

Step4:编写代码

Java层:

BsPatchUtil.java

调用:

C层:

bspatch-util.h:

bspatch-util.c

Step5:将通过bsdiff生成的差量包1.0.0-to-1.0.1.patchpush到手机sdcard目录

Step6:运行程序,点击”增量更新“

参考链接

  1. https://www.jianshu.com/p/99d986db4db8
  2. https://blog.csdn.net/lmj623565791/article/details/52761658
  3. http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2015/1222/3795.html
  4. https://blog.csdn.net/dd864140130/article/details/52928419
  5. https://www.cnblogs.com/lping/p/5833090.html
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-08-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 编码前线 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 概述
  • 原理
  • 工具
  • 生成差分包
  • 合并差分包
  • 在Android项目中使用bspatch
  • 参考链接
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档