android 升级带服务端,安卓应用升级服务端设计思路
原标题:安卓应用升级服务端设计思路
前言
去年支付宝集福卡活动玩出新花样,增加了一种花花卡,豪称全年帮你还花呗,一时火热。听到很多人在说要花花卡时,不准备玩集福卡的我准备再玩一把。进入页面功能点直接系统提示版本过低,使用此功能先更新应用程序。瞬间没有劲头了,还是让其他小伙伴多点中奖机会吧。
目前智能手机随处可见,功能越来越强大。手机的电话、短信功能逐步弱化,被各种APP 取代。一款智能手机中安装数十个APP很常见。日常生活、工作使用的APP 问题修复或者增加新功能 频繁更新,安装包逐步变大,下载时间长对用户来说是一种很糟糕的体验。所以现在各大应用市场基本都采用了增量更新的方式,减少数据传输量,提供用户体验。
主流的手机操作系统有安卓和IOS,应用都会开发这两个平台的版本。安卓应用存在很多发布渠道,也可以官网自行发布,存在很多操作空间。鉴于IOS app store 有比较建全的规则,本文关注安卓应用升级服务端设计。
服务端接口设计
用户在手机端进行操作触发服务端升级检测请求,或者服务端向客户端推送升级信息。这两种途径都需要服务端提供一个升级检查接口。客户端向服务端提供当前版本信息来检查获取是否需要更新以及更新包地址、更新内容等信息。在接口设计过程中需要注意以下几点:
1,检测升级请求内容包含包名称、当前版本号。
2,服务端检测后返回是否升级,如果升级,则必须有升级版本编码、升级版本、升级描述、升级包地址、包大小等。
3,如果有升级,服务端进行业务判断,是否强制升级。根据大小版本判断或者业务定义。
4,如果有升级,升级检测结果中需要有升级文件签名。客户端下载文件后和接口返回的签名进行比对,增加安全性控制。
5,升级包地址可进行封装处理,使用同一的路径 比如***/latest。涉及服务端临时跳转。
增量更新实现
增量更新就是将手机上已安装apk与服务器端最新apk进行对比,得到两个版本的差异文件及差分包,用户更新程序时,只需要下载差分包,并在本地使用差分包与已安装apk,合成新版apk,节省服务器和用户的流量。例如,当前手机中已安装微博V1,大小为12.8MB,现在微博发布了最新版V2,大小为15.4MB,我们对两个版本的apk文件差分比对之后,发现差异只有3M,那么用户就只需要要下载一个3M的差分包,使用旧版apk与这个差分包,合成得到一个新版本apk,提醒用户安装即可。
我们使用开源库bsdiff 生成差分文件。需要注意的是bsdiff 区分windows 和linux 版本。使用java开发,将使用到JNI调用bsdiff方法。.
总结
本文为服务端更新功能基础实现设计思路,不涉及客户端实现策略。虽然一个小功能,具体实现时候还是有很多细节需要注意,如接口的并发支撑、后台安装包生成、异步上传以及安装包下载等,有兴趣的小伙伴可以详细研究。返回搜狐,查看更多
责任编辑:
android 升级带服务端,安卓应用升级服务端设计思路相关推荐
- 传授“带权重的负载均衡实现算法”独家设计思路!
作者|孙玄/陈东 分布式系统中,大部分系统调用都会涉及到负载均衡,例如:客户端发往服务端的请求首先到达反向代理,然后反向代理再通过负载均衡算法将请求转发到业务系统:或者后端业务系统各模块间的调用前,也 ...
- 安卓手机游戏的识别码设计思路
通常安卓手机用作识别码的有IMEI.MAC.Android ID.但是这几个值在虚拟器上面都是可以改的,有些虚拟器的IMEI值就是空或者都是一样的,特别是到了后面的安卓版本,玩家是可以不允许APP获邓 ...
- 鸿蒙升级后能恢复安卓吗,升级了鸿蒙系统怎么卸载鸿蒙系统?升级了鸿蒙还能用安卓吗?...
华为鸿蒙2.0大家都报名升级更新了吗?全新的升级,给用户带来的体验感也是不错的,不过也有不少的小伙伴觉得这个系统的缺点还是不少的,那么升级了怎么卸载?还能用回安卓的系统吗?下面就和小编一起来看看. 升 ...
- android自带模拟器吗,安卓sdk自带模拟器的使用
一.Android开发环境搭建全程演示(jdk+eclipse+android sdk) http://hi.baidu.com/lvjava/blog/item/74a8480ee120e0c67a ...
- android 自带网络共享,安卓手机如何共享自身网络
安卓手机如何共享自身网络 我相信很多人都知道路由器跟电脑可以开启wifi,但是有些刚接触手机的人可能不知道其实手机可以共享wifi.那么安卓手机如何共享自身网络呢?下面就让jy135小编来告诉大家吧, ...
- 大学android五子棋课程目的,基于安卓开发的五子棋课程设计报告..docx
大庆师范学院 <ANDROID开发基础> 题目:基于安卓开发的五 子棋游戏 专业班级: 计算机科学与技术一班 设计者: KKKKKKKKKKKKKKKKKKK 指导老师:2016-2017 ...
- 微服务架构下的自动化测试全链路设计思路分析
背景 从 SOA 架构到现在大行其道的微服务架构,系统越拆越小,整体架构的复杂度也是直线上升,我们一直老生常谈的微服务架构下的技术难点及解决方案也日渐成熟(包括典型的数据一致性,系统调用带来的一致性问 ...
- android+p+华为手机,给1.9亿用户32款老机型进行安卓P升级 华为值吗?
大家在购买手机后,都希望在使用的全生命周期获得更好的软件升级服务,来提升用机体验,但是对老机型的系统软件升级需要投入大量的人力物力,一般手机厂商都不太愿意投入.但是我们也看到近两年国内一些厂商在升级安 ...
- 红米k30 android版本,Redmi K30至尊纪念版的三大升级,1999的安卓5G旗舰手机
原标题:Redmi K30至尊纪念版的三大升级,1999的安卓5G旗舰手机 前几天,雷军在小米十周年主题演讲时,发布了两款手机,分别是K30和小米10的至尊纪念版.今天我就随便聊聊,红米K30至尊纪念 ...
最新文章
- 历年计算机一级考试题库及答案,全国计算机一级考试试题库及答案
- python官网下载步骤linux-官方下载python源码,编译linux版本的python
- linux正则表达式_号称“天书”的正则表达式,要这么来讲,我小学三年级已经满分了
- IP协议详解---Linux学习笔记
- Oracle工具之--ASM与文件系统及跨网络传输文件
- web项目jsp中无法引入js问题
- c语言中分数的类型,用C语言编程平均分数
- python中_new_和_init_的区别_Python 中的__new__和__init__的区别
- 基于android对接百度地图搜索附近关键字列表展示并调用第三方地图应用打开导航(百度地图、高德地图)
- HTTPS那些事(三)攻击实例与防御(转载)
- StackGAN详解与实现(使用tensorflow2.x实现)——利用文本合成逼真的图像
- 特性Attibute定义和使用
- 2017.3.20-morning
- Zilliqa Scilla入门
- Python游戏编程入门(一)——初识Pygame
- oracle数据库赋权_Oracle数据库权限
- 2021-11-25 使用kali自带的SET工具制作钓鱼网站
- 基于MediaPipe API实现骨骼识别
- Win10电脑没有打开蓝牙的按钮怎么办?
- java程序模拟红篮球概率事件
热门文章
- 项目中要使用到动态规划该怎么应用,怎么说?
- RunJar是什么进程?
- 大剑无锋之HashMap全考点
- java基础---Math工具类
- java小编程-----读取文本文件csb.txt,统计字符个数,并把结果保存到result.txt
- C++ 流体效果的实现
- linux版本wannacry,Wannacry勒索软件解决方案
- java list 转数组_数组转List,一定要小心这个坑!
- ae灯光插件_AE教程|Particular粒子插件全面讲解介绍官方视频教程 「中文字幕」...
- 使用velocity