网站首页 > 技术文章 正文
思想:
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
猜你喜欢
- 2024-10-27 NDK开发——FFmpeg视频解码 ffmpeg ndk
- 2024-10-27 Camera基本代码架构 camera calibrator
- 2024-10-27 android 功耗分析方法和优化(1) 功耗app
- 2024-10-27 Cocos Creator v2.3.2 发布了!全新 Launcher 效率飞起!
- 2024-10-27 如何androd动态注册编写计算器 淘宝动态评分计算器在线
- 2024-10-27 高通平台OV8856 Camera的bring up总结
- 2024-10-27 高通平台移植GC2145 Camera驱动 高通驱动安装
- 2024-10-27 《坎公骑冠剑》光炮Android Mk.99技能与背景故事
- 2024-10-27 ubuntu移植libwebp到Android平台 ubuntu移植到arm
- 2024-10-27 步步为营,十分钟学会 Native JNI(附带彩蛋)
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- oraclesql优化 (66)
- 类的加载机制 (75)
- feignclient (62)
- 一致性hash算法 (71)
- dockfile (66)
- 锁机制 (57)
- javaresponse (60)
- 查看hive版本 (59)
- phpworkerman (57)
- spark算子 (58)
- vue双向绑定的原理 (68)
- springbootget请求 (58)
- docker网络三种模式 (67)
- spring控制反转 (71)
- data:image/jpeg (69)
- base64 (69)
- java分页 (64)
- kibanadocker (60)
- qabstracttablemodel (62)
- java生成pdf文件 (69)
- deletelater (62)
- com.aspose.words (58)
- android.mk (62)
- qopengl (73)
- epoch_millis (61)
本文暂时没有评论,来添加一个吧(●'◡'●)