本文转载自:http://blog.csdn.net/yanleizhouqing/article/details/50234213

1、前言

OTA(Over-the-Air Technology)空中下载技术。是通过移动通信(GSMCDMA)的空中接口对SIM卡数据及应用进行远程管理的技术。空中接口可以采用WAP、GPRS、CDMA1X及短消息技术。OTA技术的应用,使得移动通信不仅可以提供语音和数据服务,而且还能提供新业务下载。这样,应用及内容服务商可以不受平台的局限,不断开发出更具个性化的贴近用户需求的服务,如信息点播、互动娱乐、位置服务以及银行交易等。通过OTA空中下载技术,手机用户只要进行简单操作,就可以按照个人喜好把网络所提供的各种业务菜单利用OTA机制下载到手机中,并且还可以根据自己的意愿定制具体业务。

    移动终端空中下载软件(FOTA) 主要应用的手机领域。在FOTA出现之前,手机制造商和移动网络运营商无法在手机最重要的18至24个月的生命周期中有效地对软件进行升级。一旦用户需要对手机软件进行升级,他们经常迫不得已要带着手机到维修中心进行手机升级。FOTA使手机制造商能够通过无线网络将升级软件发送到用户的手机中从而对软件或是软件的某个部分进行升级。这样就省却了用户去销售网点或是服务中心而耽误得时间,方便了用户,也为手机制造商节约了成本。

“FOTA”(移动终端空中下载软件升级),这个由RED BEND公司开发并获得专利的技术vCurrent Mobile 移动终端空中下载软件升级(FOTA)解决方案,已经被越来越多的厂商应用到自己的产品之中。

通过空中下载的方式有效而可靠的对用户手中的手机进行升级。用这种方式,手机厂商能够更加快速地向市场推出具有新功能的手机并以此提高用户对其手机的满意度。Red Bend 软件公司的vCurrent Mobile技术可以生成极小的更新包对手机进行100%精确安全的更新从而节约了由此而产生的成本。与其它FOTA解决方案不同的是,vCurrent Mobile 生成的软件更新包不会妨碍原有的映像文件,从而使得更新过程简单而迅速。

FOTA的技术特点:

Ø  Red Bend的FOTA客户端支持标准的OMA DM服务器,兼容性好

Ø  中国移动的DM系统也采用Red Bend的技术

Ø  Red Bend的技术在DM领域处于领先

Ø  升级包采用差分包形式,减少下载浏览

Ø  客户端必须要Red Bend提供基础库

Red Bend软件公司是固件无线更新( FOTA )的领导者,根据独立市场研究公司Ovum的报告,截至2009年第四季度,Red Bend软件公司在FOTA手机市场占据了71 %的市场份额。该解决方案的精确性和安全性经过了数百万次验证,现已被行业顶级手机、调制解调器、M2M模块制造商广泛采用。LG电子,摩托罗拉,NEC,夏普,索尼爱立信等世界手机巨头利用RedBend公司的FOTA解决方案。

2 Android OTA

Android平台提供Google diff arithmetic差分机制,升级包支持整包(Full Image)和差分包(Differential Image)。OTA运行原理如下图:

图1 OTA运行原理图

上图所示的就是OTA运行的基本运行原理示意图。

Ø  OTA Server主要是对差分包的一个上传、下载以及版本的管理。

Ø  开发者通过差分包的制作工具制作出差分包,使用客户端进行上传和对版本的管理。

Ø  手机通过WIFI/GPRS网络进行连接下载,然后完成更新。

3 服务器侧差分包制作原理

差分包的制作工具是google提供的制作工具,是由一些脚本和差分包制作工具组成,分散在code源码之中。考虑到工具可能被修改或者调整,因此每次制作都需要从code中重新提取,用于制作前后两个版本之间的差分包,工具文件如下图所示。

1、recovery:这个目录是Make用来检查recovery的版本号

2、releasetools这个目录下提供的是制作OTA package的脚本工具

3、security这个目录是用来生成OTA包的签名

4、bin image的差分工具

5、framework是用来给apk包进行签名

提取原始版本和升级的整包作为制作差分包的原始包,提取后分别命名为org.zip和ota.zip。编写一个perl脚本,脚本通过下面的命令生成差分包。

Ø  /build/tools/releasetools/ota_from_target_files –n –i org    ota update.zip –制作差分包

差分包生成后,手机通过客户端与服务器通信后下载差分包进行升级。

最新文章

  1. 针对github权限导致hexo部署失败的解决方案
  2. VS中的活动debug和活动cpu
  3. MOOCULUS微积分-2: 数列与级数学习笔记 1. Sequences
  4. mysql if exist坑
  5. easyui combobox 中实现 checkbox
  6. Item 表单页面的 Select2 相关业务逻辑
  7. HDU 5950:Recursive sequence(矩阵快速幂)
  8. javaScript定义对象的方法
  9. Asianux的SSH登录问题,密码不正确解决
  10. 关于 三星 I9100 (水货)
  11. 关于NPC和NP-Hard问题
  12. 立波 iphone3gs越狱教程:成功把iphone3gs手机升级成ios6.1.3系统,完美越狱,解决no service和耗电量大的问题
  13. WP8.1程序开发中,如何加载本地文件资源或安装在程序包中的资源。
  14. hammer的初始化及移动端各种滑动
  15. Ajax的简单使用
  16. 获取验证码倒计时60s
  17. 2017-2018 ACM-ICPC, NEERC, Southern Subregional Contest
  18. 从flask视角理解angular(二)Blueprint VS Component
  19. Comparator 排序 ArrayList 实操练习
  20. RxJava学习;数据转换、线程切换;

热门文章

  1. CSS基础2——选择器
  2. Spring 中的Null-Safety
  3. python的requests初步使用
  4. Rocchio算法
  5. Dockerfile安装KOD可道云
  6. shiro自定义logout filter
  7. go的url解析
  8. php党 强烈推荐TIPI:深入理解PHP内核
  9. ubuntu study
  10. 转载:Python 包管理工具解惑