一种基于android系统的OTA升级方法及系统、android终端与流程

文档序号:11154532阅读:310来源:国知局
一种基于android系统的OTA升级方法及系统、android终端与制造工艺

本发明属于通信技术领域,尤其涉及一种基于android系统的OTA升级方法及系统、android终端。



背景技术:

OTA(Over-the-Air Technology,空中下载技术)是通过移动通信(GSM或CDMA)的空中接口对SIM卡数据及应用进行远程管理的技术。

Android系统提供的标准软件升级方法通常是OTA升级,其将升级内容以zip压缩包的形式通过脚本实现升级,目前OTA升级方式大致有以下几种:通过打patch方法对特定文件进行替换的增量升级;将全盘数据解压出覆盖的全量升级;基于底层block直接写入的block-base方法。

目前较常用的一种OTA升级方法为:通过minizip工具将zip压缩包中的文件依次解压到磁盘分区中,并对每个文件赋予相应的权限,但通过minizip工具将升级内容解压出来之后,赋予的时间戳是一个固定的数值,例如1217592000,换算成年月日的时间就是2008年8月1日,即OTA升级之后所有文件的时间戳均变为2008年8月1日,而android系统在升级之后判断应用程序是否需要更新的方法是基于时间戳和软件版本号来确定,只有其中一个条件满足即可进行更新,若按照规范每次有修改都递增版本号,按照此方法赋予固定的时间戳不会存在问题,升级后的数据会得到及时更新,但如忘记登记版本号或者同一个版本的软件使用了不同的签名,而升级的时间戳一样,这种情况下软件不能得到真正的更新,导致系统可能无法启动,进而给用户带来不便,降低用户体验。



技术实现要素:

本发明实施例提供了一种基于android系统的OTA升级方法及系统、、android终端,旨在解决现有技术中更新效率低给用户带来不便的问题。

本发明实施例是这样实现的,一种基于android系统的OTA升级方法,包括:

获取到升级包,所述升级包携带时间戳;

对所述升级包进行签名校验;

当校验合格时,对所述升级包进行解析,对解析后的每一升级脚本赋予所述时间戳,完成升级。

优选地,获取到升级包具体包括:

获取所述升级包;

将所获取的升级包以记录形式存储在恢复系统中。

优选地,所述获取到升级包之后、对所述升级包进行签名校验之前还包括:

读取所述升级包的路径;

挂载所述升级包的路径。

优选地,对所述升级包进行签名校验具体为:

判断所述升级包的签名是否与预设签名一致;

当签名一致时,校验合格;

当签名不一致时,校验不合格,停止进程。

优选地,当校验合格时,对所述升级包进行解析,对解析后的每一升级脚本赋予所述时间戳,完成升级具体包括:

从所述升级包中获取二进制更新程序;

获取所述升级包的时间戳;

基于所述二进制更新程序及所述升级包的路径创建对应的更新进程;

所述更新进程对所述升级包进行解析,对解析后的每一升级脚本赋予所述时间戳;

升级完成,向所述恢复系统反馈完成信息。

优选地,所述更新进程对所述升级包进行解析,对解析后的每一升级脚本赋予所述时间戳具体包括:

所述更新进程对所述升级包进行解压,获得解压后的一条以上升级脚本;

在执行每一条所述升级脚本的预设语句时设置所述时间戳;

确认当前任一升级脚本已被赋予所述时间戳,退出进程。

本发明还提供一种基于android系统的OTA升级系统,包括:

获取模块,用于获取到升级包,所述升级包携带时间戳;

校验模块,用于对所述升级包进行签名校验;

升级模块,用于当校验合格时,对所述升级包进行解析,对解析后的每一升级脚本赋予所述时间戳,完成升级。

优选地,所述OTA升级系统还包括:

路径读取模块,用于读取所述升级包的路径;

挂载模块,用于挂载所述升级包的路径。

优选地,所述升级模块具体包括:

程序获取单元,用于从所述升级包中获取二进制更新程序;

时间戳获取单元,用于获取所述升级包的时间戳;

创建单元,用于基于所述二进制更新程序及所述升级包的路径创建对应的更新进程;

赋予单元,用于对所述升级包进行解析,对解析后的每一升级脚本赋予所述时间戳;

反馈单元,用于在升级完成时,向所述恢复系统反馈完成信息。

本发明还提供一种android终端,包括OTA升级系统,所述OTA升级系统包括:

获取模块,用于获取到升级包,所述升级包携带时间戳;

校验模块,用于对所述升级包进行签名校验;

升级模块,用于当校验合格时,对所述升级包进行解析,对解析后的每一升级脚本赋予所述时间戳,完成升级。

在本发明实施例中,升级过程中,对升级包进行解析,对解析后的每一升级脚本赋予时间戳,保证每次升级之后的文件的时间戳与编译时的时间戳一致,提供升级效率,给用于带来便利,提供用户体验。

附图说明

图1是本发明第一实施例提供的一种基于android系统的OTA升级方法的流程图;

图2是本发明第一实施例提供的一种基于android系统的OTA升级方法的步骤S3的具体流程图;

图3是本发明第二实施例提供的一种基于android系统的OTA升级系统的结构图;

图4是本发明的第二实施例提供的一种基于android系统的OTA升级系统的升级模块3的具体结构图。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。

本发明实施例中,一种基于android系统的OTA升级方法,包括:获取到升级包,所述升级包携带时间戳;对所述升级包进行签名校验;当校验合格时,对所述升级包进行解析,对解析后的每一升级脚本赋予所述时间戳,完成升级。

为了说明本发明所述的技术方案,下面通过具体实施例来进行说明。

实施例一:

图1示出了本发明第一实施例提供的一种基于android系统的OTA升级方法的流程图,包括:

步骤S1、获取到升级包;

其中,该步骤S1包括:获取升级包,并将该升级包以记录形式存储在恢复系统(recovery)中,该升级包携带时间戳。

具体地,android系统中的升级应用获取到升级包后进入recovery,以文件记录的方式存储在/cache/recovery/command文件里。

步骤S2、对升级包进行签名校验;

具体地,需要对获取的升级包进行签名校验,判断升级包的签名与预设签名是否一致,当不一致时确认为校验失败,退出升级,结束进程,当一致时确认校验合格,转到步骤S3;

步骤S3,对升级包进行解析,对解析后的每一升级脚本赋予时间戳,完成升级。

在本发明的一个优选方案中,所述步骤S1之后,步骤S2之前还可包括:

步骤S4、读取升级包的路径;

步骤S5、挂载升级包的路径;

具体的,对存储升级包的存放区或者外设进行挂载操作。

优选地,如图2所示,为本发明第一实施例提供的一种基于android系统的OTA升级方法的步骤S3的具体流程图,上述步骤S3具体包括:

步骤S31、从升级包中获取二进制更新程序;

具体地,从升级包中抽取二进制更新程序(update-binary);

步骤S32、获取升级包的时间戳;

步骤S33、基于二进制更新程序及升级包的路径创建对应的更新进程;

具体地,通过fork方法创建更新进程,通过该更新进程将该二进制更新程序运行起来,并将升级包的路径作为fork的一个参数传递到所述更新进程中,使得恢复系统监听该更新程序,并于该更新程序进行交互,即在恢复系统下让该二进制更新程序运行起来。

步骤S34、更新进程对升级包进行解析,对解析后的每一升级脚本赋予时间戳;

具体地,对升级包进行解压,获得解压后的升级脚本,该升级脚本至少包括一条以上,解压之后执行每一条升级脚本,在执行每一条升级脚本时,运行到预设语句(package_extract_dir)时,设置上述时间戳,执行每一条脚本时都重复上述步骤,直到每一条升级脚本都被赋予时间戳后,退出进程。进一步地,更新进程会将升级包的升级脚本都解压出来,一条一条地解析,并执行对应的动作,在执行到脚本语句“package_extract_dir”时,将获取的时间戳传递给minizip,minizip在运行该脚本语句时,会将时间戳赋予解压出来的文件。待所有的升级脚本都执行完后,更新进程完成升级任务,将资源释放退出,转到步骤S35。

步骤S35、升级完成,向恢复系统反馈完成信息;

当升级完成后,向恢复系统反馈完成消息(即升级完成消息),恢复系统会重启,进入android系统,此时每一个文件都被赋予时间戳,实现文件升级。

本实施例中,升级过程中,对升级包进行解析,对解析后的每一升级脚本赋予时间戳,保证每次升级之后的文件的时间戳与编译时的时间戳一致,提供升级效率,给用于带来便利,提供用户体验。

实施例二:

图3示出了本发明第二实施例提供的一种基于android系统的OTA升级系统的结构图,包括:获取模块1、与所述获取模块1连接的校验模块2、与校验模块2连接的升级模块3,其中:

获取模块1,用于获取到升级包,所述升级包携带时间戳;

其中,该获取模块1包括获取单元及与其连接的存储单元:

获取单元,用于获取升级包;

存储单元,用于将所获取的升级包以记录形式存储在恢复系统中,该升级包携带对应的时间戳。

具体地,获取到升级包后进入recovery,以文件记录的方式存储在/cache/recovery/command文件里。

校验模块2,用于对所述升级包进行签名校验;

具体地,该校验模块2需要对获取的升级包进行签名校验,判断升级包的签名与预设签名是否一致,当不一致时确认为校验失败,退出升级,结束进程,当一致时确认校验合格,向升级模块3反馈。

升级模块3,用于当校验合格时,对所述升级包进行解析,对解析后的每一升级脚本赋予所述时间戳,完成升级。

具体地,对升级包进行解析,对解析后的每一升级脚本赋予时间戳,完成升级。

在本发明的一个优选方案中,该OTA升级系统还可包括:与获取模块1连接的路径读取模块4、与路径读取模块4连接的挂载模块5,其中:

路径读取模块4,用于读取升级包的路径;

挂载模块5,用于挂载升级包的路径。

具体的,对存储升级包的存放区或者外设进行挂载操作。

如图4所示,为本发明的第二实施例提供的一种基于android系统的文件的OTA升级系统的升级模块3的具体结构图,该升级模块3具体包括:程序获取单元31、与程序获取单元31连接的时间戳获取单元32、与时间戳获取单元32连接的创建单元33、与创建单元连接的赋予单元34、与赋予单元连接的反馈单元35;

程序获取单元31,用于从所述升级包中获取二进制更新程序;

具体地,从升级包中抽取二进制更新程序(update-binary);

时间戳获取单元32,用于获取所述升级包的时间戳;

创建单元33,用于基于所述二进制更新程序及所述升级包的路径创建对应的更新进程;

具体地,通过fork方法创建更新进程,通过该更新进程将该二进制更新程序运行起来,并将升级包的路径作为fork的一个参数传递到所述更新进程中,使得恢复系统监听该更新程序,并于该更新程序进行交互,即在恢复系统下让该二进制更新程序运行起来。

赋予单元34,用于对所述升级包进行解析,对解析后的每一升级脚本赋予所述时间戳;

具体地,赋予单元34即为更新进程,对升级包进行解压,获得解压后的升级脚本,该升级脚本至少包括一条以上;解压之后执行每一条升级脚本,在执行每一条升级脚本时,运行到预设语句(package_extract_dir)时,设置上述时间戳,执行每一条脚本时都重复上述步骤,直到每一条升级脚本都被赋予时间戳后,退出进程。进一步地,更新进程会将升级包的升级脚本都解压出来,一条一条地解析,并执行对应的动作,在执行到脚本语句“package_extract_dir”时,将获取的时间戳传递给minizip,minizip在运行该脚本语句时,会将时间戳赋予解压出来的文件。待所有的升级脚本都执行完后,更新进程完成升级任务,将资源释放退出,并反馈给反馈单元35。

反馈单元35,用于在升级完成时,向所述恢复系统反馈完成信息。

当升级完成后,向恢复系统反馈完成消息(即升级完成消息),恢复系统会重启,进入android系统,此时每一个文件都被赋予时间戳,实现文件升级。

本实施例中,在升级过程中,对升级包进行解析,对解析后的每一升级脚本赋予时间戳,保证每次升级之后的文件的时间戳与编译时的时间戳一致,提供升级效率,给用于带来便利,提供用户体验。

本发明还提供一种android终端,该android终端可为任何android移动终端,例如android手机、android电视等,此处对此不作限制,该android终端具有现有的android终端的基本功能及结构,该android终端还包括上述实施例所述的OTA升级系统,该OTA升级系统的具体结构及工作原理与上述实施例的描述基本一致,具体可参照上述实施例,此处不再赘述。

本发明中,升级过程中,对升级包进行解析,对解析后的每一升级脚本赋予时间戳,保证每次升级之后的文件的时间戳与编译时的时间戳一致,提供升级效率,给用于带来便利,提供用户体验。

本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。

专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1