计算机系统应用教程网站

网站首页 > 技术文章 正文

Android 增量更新实现之一 android实时更新

btikc 2024-10-27 08:34:23 技术文章 7 ℃ 0 评论

思想:

1.服务器实现两个版本的差分包

2.手机启动时候下载差分包

3.手机将本地apk(getPackageResourcePath()本地路径)和差分包通过bspatch合并成新的apk

4.弹出提示框,用户点击安装,将安装新的apk

步骤:

1.服务器生产差分包的方法有很多种,简单列举下自己了解的实现方法:

a.http://www.daemonology.net/bsdiff/下载代码,编译成对应平台的链接库(linux->so,window->dll和mac->jnilib),然后通过java调用native方法,实现差分包的生成,可以打包成jar包,调用起来方便。这样服务器需要java环境。bsdiff依赖bzip,编译的时候需要引进去,地址http://www.bzip.org

b.linux和mac可以直接安装bsdiff命令,(window也可以,自己没去试过),有这个命令生成就简单了,服务器写个python脚本,或者直接命令行生成即可。实际项目中,由于每个版本都需要和最新版本有差分包,最好是有个后台管理,上传新版本的时候直接自动化生成每个版本的差分包。

2.手机启动时候后台下载差分包,这个太简单就不说了,可以开个service去下载,或者直接起线程。这两者区别就不用多解释了。

3.需要本地编辑bspatch动态链接库,这边可以选择eclipse或者android studio,我用的是eclipse。大概步骤如下:

a.http://www.daemonology.net/bsdiff/和http://www.bzip.org下载代码,因为bsdiff依赖bzip。

b.工程添加native支持,然后将下载好的代码拷贝到jni目录里面,如下图:

其中com_ayw_updateapp_BsPatch.h是对应Java层的native方法

bspatch.c文件引入 #include"bzip2-1.0.6/bzlib.h"同时Android.mk需要添加bzip的编译,如下图:

这时Build将在libs目录下生产对应的libspatch.so文件。下面就开始使用:

为了方便,从服务器下载就省略了,直接将差分包放在sdcard里面。7.0以后安装和之前有点不同,如果在7.0手机上试验,请替换安装apk的方法。

Demo的地址https://github.com/ZhangLiuCheng/UpdateApp.git

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表