Android OTA在线升级一(架构分析)

时间:2024-11-09 08:49:39

1、前言

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

    移动终端空中下载软件(FOTA) 主要应用的手机领域FOTA出现之前,手机制造商和移动网络运营商无法在手机最重要的1824个月的生命周期中有效地对软件进行升级。一旦用户需要对手机软件进行升级,他们经常迫不得已要带着手机到维修中心进行手机升级。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包进行签名

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

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

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