首页> 中国专利> 移动终端开源操作系统基于软件包的在线自动更新方法

移动终端开源操作系统基于软件包的在线自动更新方法

摘要

一种移动终端开源操作系统基于软件包的在线自动更新方法,涉及移动终端软件领域,所述方法适用于移动终端开源操作系统,可以实现系统软件以包为单位的远程自动更新,方便操作系统安全漏洞的修复安装。方法包括两个方面:服务器端自动完成软件包构造和发布,负责从开源站点获取操作系统所有源代码、自动划分并构造合适的软件包、根据源代码的版本信息和依赖关系确定软件包的更新信息、利用网络方式发布软件包;移动终端是软件包的获取和使用方,通过客户端软件自动检查更新信息,并以软件包为单位下载并更新系统,达到自动在线更新的目的。本发明具有易于大规模部署、自动化程度高、易于使用等特点。

著录项

  • 公开/公告号CN102118500A

    专利类型发明专利

  • 公开/公告日2011-07-06

    原文格式PDF

  • 申请/专利权人 清华大学;

    申请/专利号CN201010621838.4

  • 发明设计人 董渊;王生原;张伟达;

    申请日2010-12-27

  • 分类号H04M1/725(20060101);H04L29/08(20060101);G06F9/445(20060101);

  • 代理机构11246 北京众合诚成知识产权代理有限公司;

  • 代理人朱琨

  • 地址 100084 北京市100084-82信箱

  • 入库时间 2023-12-18 02:51:52

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2013-08-21

    授权

    授权

  • 2011-08-24

    实质审查的生效 IPC(主分类):H04M1/725 申请日:20101227

    实质审查的生效

  • 2011-07-06

    公开

    公开

说明书

技术领域

本发明涉及移动通信领域,特别涉及一种移动终端开源操作系统的自动在线更新方法。

背景技术

在中国,互联网和移动设备的发展相互影响,形成强大的普及浪潮。以智能手机、上网本为代表的移动终端在激烈的竞争中迅猛发展。根据CNNIC第26次互联网调查报告称,截止2010年6月全国有2.77亿手机上网用户,占网民总体的近66.0%。随着手机网民的增长,出现了逐渐增大的只使用手机上网的群体,这一群体在2010年中已经占到网民整体的11.7%。

以安卓(Android)系统为代表的移动终端开源操作系统的使用比例和影响能力在不断扩大。该系统一开始就是用开源、开放的开发方式,受到业界和学术界的广泛关注,自从发布以来,Android的版本基本上每半年一个台阶地向前发展。其平台的开放性也吸引了大量的第三方开发者进行应用程序开发,BlackDuck报告显示2009年新增开源项目903个,而面向Android的项目就有224个,占25%之多,相比之下,iPhone和Windows Mobile于2009年分别创建76和75个开源项目。Gartner公司2010年中的咨询报告中预测,Android系统将在2010年度成为仅次于Nokia Symbian系统的全球第二大移动终端操作系统,并将于2014年跃居全球第一。

在这种情况下,操作系统的升级、维护管理成为重要问题。随着现代软件的发展,人们渐渐意识到,软件是服务,而不仅仅是一个产品。

软件系统需要一个持续更新的机制。现代软件非常复杂,任何系统或多或少都会存在缺陷,而操作系统作为最重要最复杂的一环,问题尤为突出。互联网的发展对网络的安全性产生了正反两方面的影响:一方面,用户受到攻击的可能性加大;另一方面,用户也更容易获得系统更新副本。

软件系统应该为用户提供持续的可更新的服务,以使每一个用户都能感受到软件更新带来的好处。现代软件体现出的是一种服务而不仅仅是一个产品,开发者不断地为软件系统增强功能和提升性能。如果最终用户无法体验这种进步,用户可能会转而选择其他的产品。这就是为什么与传统软件相比,及时更新的网站、Web服务显得更有吸引力的原因之一。

移动终端开源操作系统的系统更新非常有必要:

·安全更新:没有安全更新,软件漏洞很容易让移动终端设备病毒泛滥。

·软件错误:恼人的软件错误能很快地修复和发布到用户的手机当中。

·功能更新:开源移动终端操作系统是一个快速进步的系统,每个用户都希望能安装上新的发布版本,系统更新机制为此提供了基本支持。

·性能更新:开源移动终端操作系统是开放的平台,系统性能、功耗将会快速改进,有了这些更新机制,就可以方便地体验到别人的研究成果。

在包管理系统出现以前,软件系统的更新往往意味着系统管理员以其他方式下载补丁并重新编译源代码,覆盖原有软件。

开源的Linux操作系统具有良好的包管理机制。很多Linux发行版都包含一个专门的包管理器,Linux的包管理器起源于Debian和Slackware出现的时代,这两个系统都属于仍在更新的最古老的Linux发行版。Debian包管理系统有几层,底层为dpkg,dpkg的前端可以是dselect、apt等各种软件,它们的出现极大地丰富了dpkg的功能。最近非常流行的Ubuntu基于Debian,也使用dpkg/apt,其他发行版如RedHat,OpenSUSE等也都各有自己的一套包管理系统,分别叫做rpm/yum和yust。

但与Linux发行版的众多包管理系统相比,Windows的机制有所不同。Windows控制面板中的软件包管理提供已安装软件的卸载入口,它和WindowsUpdate一起能为系统提供很好的可更新的服务。首先它仅仅关注Windows操作系统或者是其他微软产品如IE、Microsoft的更新;其次WindowsUpdate并没有包的概念,它从微软网站上获取最新的系统补丁列表,并逐个安装。

部分应用软件也提供了可更新的机制,如Eclipse、Firefox等。但这种更新往往是插件式的,与包管理系统也有很大差别,例如Firefox的附加组件网站上提供了大量的免费扩展。这种更新的好处是跨操作系统(或者说跨包管理系统),对Windows等的无包管理器系统的也是一种功能的补充。

本发明中软件包管理系统的定义为:类似Linux包管理系统,主要负责管理操作系统层面的软件包。软件更新仅仅是包管理系统的功能之一,除此之外,软件包管理系统的其他主要功能有:

·管理系统中每一个软件包的安装、卸载生命周期。

·管理系统中软件包的依赖关系,根据依赖关系自动安装和卸载软件包。

·管理软件包的冲突,并向用户报告。

·同步软件包源的最新状态,并建议用户更新。

·管理软件包,保证来源可靠、下载和安装完整,并在出现错误时回滚。

·为用户提供方便索引、可搜索的软件列表。

安卓等移动终端开源操作系统目前只支持应用层的软件包管理方面,并不能满足操作系统层面的软件更新需求。用户能够通过互联网访问AndroidMarket下载软件包,下载到的软件包为apk格式,由Android系统中自带的AndroidPackageManager负责安装和卸载。然而Android系统分成4个层次,Linux内核、C/C++库、应用框架、应用层,AndroidPackageManager只能管理位于应用层的软件,并不能更新其他三个层次(统称为系统层)的软件。通常情况下Android设备的其他层次只能通过下载系统镜像、刷写Flash的方式更新。

本发明给出移动终端开源操作系统基于软件包的在线自动更新方法,服务器端完成系统层面的软件自动打包处理,实现客户端的自动更新,可以很好地解决上述问题。使得用户能通过简单的确认操作,就能进行系统更新。具有重要的实际意义和应用价值。

发明内容

本发明利用程序分析技术,设计出一种移动终端开源操作系统基于软件包的在线自动更新方法,方法针对目前广泛采用的开放源代码移动终端操作系统中的系统层软件(以Android系统为例,则对应于Linux内核、C/C++库、应用框架)更新问题,要求处理的目标操作系统满足以下条件:(1)可以自由获取全部源程序代码;(2)系统采用非递归方式进行编译,即所有系统层软件采用单个编译控制文件Makefile、或使用包含机制连接在一起的多个编译控制文件。

本发明包含为服务器端和客户端两个部分,均采用软件实现,称为服务器端软件和客户端软件,参看附图1下半部分的方框。前者运行于服务器端,完成开源操作系统源代码获取、自动分包、自动产生更新信息和自动发布软件包等步骤;后者运行于移动终端,完成更新信息自动检查、软件包自动下载和安装等步骤。

所述方法采取以下步骤进行:

步骤(101),服务器端自动获取开源操作系统源代码。服务器端软件采用定时的方式自动连接开放源代码操作系统代码发布站点,通过版本管理软件下载最新的源代码,所得到的源代码中包括C/C++/JAVA源代码文件和头文件、以及编译控制文件Makefile,同时从版本管理系统中得到源代码的版本更新信息;

步骤(102),服务器端进行源代码自动分析,分包、记录更新。本方法对开源操作系统中的编译控制文件进行分析,以编译构建模块为单位进行自动分包,分析并自动建立包之间的依赖关系,以此为依据进行软件包自动划分、更新信息管理,具体方法如下:

1)软件包的定义。本方法中将每一个编译控制文件中的软件模块定义为一个软件包。所有该模块对应目标名称所依赖的文件均属于这个软件包。编译控制文件信息主要包含规则和模块信息:

规则。每条规则由三部分组成:构建目标、目标依赖的前提条件、生成目标所需命令。其中目标和前提条件都是文件,因此规则中实际上定义了文件之间的依赖关系,也决定文件的构建次序,此外,构建系统可以根据文件的最近修改时间决定是否重新构建一个文件,如果一个目标比它的所有依赖都新,那么就没有必要重新构建该文件。

模块。模块是对构建目标而言的,开源操作系统编译控制文件将模块定义为构建目标,而每个目标都对应着规则。对于每个模块一般而言会生成一个最终文件,该最终文件为以下类型之一:C/C++相关的静态库文件、可执行文件、共享库文件,Java相关的静态类库文件、类库文件、可执行应用程序包。

2)读取编译管理数据库信息。服务器端运行编译管理程序(make),将所生成的内容为编译管理数据库,将该数据库记录到文本文件(称为数据库转贮信息文件)中,该数据库格式包括:

·开头部分为GNUMake的版本信息,

·随后为Make命令的输出,使用“-n”选项,此部分为空。

□接着一行‘#Makedatabase,printedon$DATE’表示Make数据库的开始,随后是数据库的部分,每一类数据以一行注释开始,若该行注释为

□‘#Variables’:变量。包括所有全局变量以及宏函数定义。

□‘#Pattern-speci□cVariableValues’:忽略,我们不关心。

□‘#Directories’:忽略,我们不关心。

□‘#ImplicitRules’:定义源语言文件到目标文件的构建规则。

□‘#Files’:文件依赖关系。包括对每一个文件的生成规则,其后用注释给出了所有局部变量的定义,包括通过规则定义的变量,和一些编译管理工具内置的变量如“$@”、“$*”等,最后给出构建目标所执行的命令。

该数据库我们主要关心三部分内容:变量、规则和文件依赖关系。

3)规则数据解析。首先去除编译数据库转贮信息文件中非目标规则等冗余信息,所谓非目标规则指的是该规则的目标文件从未成为某一规则的目标。在数据库转贮信息文件中搜索″Variables″、″Files″关键字,包含Variables的信息构成变量表,包含Files的信息构成规则表。

其中变量表定义为(名称,数值),其中名称有两种含义:一种是全局变量名,此时对应的“数值”表示该变量的值,根据编译控制文件的规则,全局变量中包含了模块名称;另外一种是宏函数定义,此时对应的“数值”表示该函数的定义。

规则表定义为一个二元组(构建目标、目标依赖的前提条件),即编译构建文件中规则中的前两个部分,其中构建目标中包括最终安装运行与移动设备的“安装文件”和安装“路径”,以及为生成该安装文件而产生的中间文件,目标依赖的前提条件中包含生成该安装文件所依赖的源文件和库文件。

4)模块划分。从3)中构造的变量表中提取模块名称,对所有运行于移动设备的模块,根据编译过程中分别属于静态库、共享库等特征标记为不同的模块类型,用一个二元组<模块,模块类型>表示。从规则表中查找各模块中所包含的安装文件和路径信息,以四元组形式<模块,模块类型,路径,安装文件>建立为模块表,每一个模块将对应成为目标机系统中的一个软件包。为所有模块建立模块表,则软件包自动划分完成。

5)提取文件和包依赖关系。文件依赖关系从数据库中的规则表中提取生成,依次从规则表中提取每一行规则,对于规则中每个“目标所依赖的前提条件”,记录一个二元组条目<目标,依赖>,构成文件依赖关系。模块表定义了模块和安装文件的包含关系二元组:<模块,安装文件>。利用这两种关系,即可提取所有的模块依赖关系。

6)软件包更新信息判定。步骤(101)中从操作系统源代码版本管理系统中得到了所有源文件的版本更新信息,如果某个软件包中所包含的任意一个源文件发生变化,则将该更新信息设置为“需要更新”,所有编译时依赖于该软件包的其它软件包也全部设置为“需要更新”;

如果某个软件包中所有源代码文件都没有发生变化,而且所有编译时该软件包所依赖的其它所有软件包没有发生变化,则将更新信息设置为“不需要更新”。

扫描所有软件源代码,记录软件包更新情况信息。

步骤(103):发布软件包和更新信息。将步骤(102)中得到的软件包和更新信息复制到服务器特定位置,供客户端访问,提供自动在线更新服务;

步骤(104):移动终端检查更新信息并自动更新。移动终端安装某一个特定版本的开源操作系统软件,安装用于自动更新的客户端包管理器软件,该软件维护一个当前所有已安装软件版本信息文件。在具备网络连接的情况下,包管理器软件定时自动连接更新服务器,自动下载所安装软件包的更新信息,和当前安装软件版本信息进行对比,如果发现某个软件包服务器端软件的版本高于当前安装版本,即可判定该软件包待更新,通知用户,经过在用户授权之后,自动下载并安装需要更新的软件包,其他不需要更新的软件包保持不变;如果发现没有新的可用软件包,则不进行任何更新操作。

根据本发明的基于软件包的在线自动更新方法能够对目前流行的移动终端开源操作系统进行进行自动在线更新,达到系统软件的快速自动升级部署,解决用户的需要的操作系统的升级、维护管理问题。

该在线自动更新方法可与常规的应用软件包管理方案结合,可应用于手机、上网本等使用开源操作系统的移动终端软件管理,为这类设备的系统软件分发、部署和认证提供方便的手段和渠道。该自动更新方法具有易于大规模部署、自动化程度高、易于使用等优点。

附图说明

图1示出本发明方法中服务器端和移动终端之间的交互关系图;

图2示出根据本发明进行开源操作系统自动在线更新的流程示意图;

图3示出本发明中开源操作系统自动在线客户端包管理流程示意图。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚,下面将结合附图,以开源操作系统安卓Android-X86donut版本作为实例对本发明的实施方式作进一步地详细描述。

图1示出本发明方法中服务器端和移动终端之间的交互关系图。云端部分是开源操作系统源代码服务器,为本发明之外的网络资源,本实例中为www.android-x86.org。服务器端和客户端是本发明所包含内容,其中服务器端的包管理服务器由三个部分组成,客户端则有一个软件包管理器组成。

升级之前的基础系统准备。服务器端按照图2的步骤,从源代码服务器下载2009年11月24日的donut软件版本作为升级之前的Android-x86基准版本A′,执行步骤101、102、103,完成软件发布。客户端采用基于X86处理器的上网本作为硬件环境,安装2009年11月24日的donut软件编译生成的镜像文件,同时安装客户端包管理器软件。

图2示出了根据本发明进行开源操作系统自动在线更新的流程图。经过一段时间的开发,安卓donut进行了部分软件修改,到2010年3月18日的时候,源代码升级为版本B,总共有四个软件模块进行了升级,内容如下:

如附图2所示,步骤101、102、103所示内容由部署于服务器端的软件自动完成,可以通过网络方式同时为大量客户段提供服务;步骤104所示内容则由部署于移动终端的客户端程序自动完成。

首先在步骤101中,服务器端软件自动连接开源操作系统源代码发布站点,利用源代码管理工具自动获取该站点发布的源代码更新内容,自动将最新的源代码下载到服务器端,这些源代码是后续工作的基本操作对象。

接着在步骤102中,自动分析上述源代码中的编译管理文件,利用编译管理文件中包含的信息将开源系统自动划分相互独立的软件包,同时根据编译的文件依赖关系给出软件包的依赖关系;之后,根据源代码的更新信息,构造需要更新的软件包,填写一份软件包更新信息。

经过分析,整个系统中只有这4个软件包软件包进行了更新,所有软件包更新信息中只修改这4个包对应的信息,而且只重新构建这4个软件包即可。

在步骤103中,将需要更新的软件包和更新信息复制到软件包发布服务器的特定位置公开发布,供所有客户端更新使用。

复制软件包更新信息和上述ip-up-vpn、connectbot、filemanager和camera等4个软件包到服务器的对应目录之后,完成步骤103。

在步骤104中,在线情况下,安装于移动终端的客户端包管理器软件首先自动获取软件包更新信息,发现只有ip-up-vpn、connectbot、filemanager和camera等4个软件包需要更新,将需要更新的软件包信息、需要下载的内容和流量等信息通知用户,经过用户确认同意之后,下载需要更新的软件包并进行安装,完成整个系统的自动在线升级,具体流程参考附图3。

评估下载更新软件包的实验结果表明,整个系统更新须要下载约1M数据。相比起整个系统镜像的大小近500M,这节省了很大的网络流量。

以上实施方式仅用于说明本发明,而非对本发明的限制,相关技术领域的普通技术人员,在不脱离本发明的精神和范围的情况下,还可以做出各种变化和变型,因此所有等同的技术方案也属于本发明的范畴,本发明的专利保护范围应由权利要求限定。

本发明具有如下优点:

1.易于大规模部署:用于智能终端的开源操作系统使用非常广泛,其代码量较大,而且相关软件更新非常快,对于软件的大规模部署、快速分发提出很高要求。本方法支持网络方式、以软件包方式的自动在线更新,可以非常方便地实现大规模部署,同时以软件包为单位的更新方式,只需要下载少量待更新的软件包,大大降低了网络传输流量;

2.自动化程度高:本方法根据开源操作系统的编译管理文件,自动划分软件包,并根据软件更新信息自动确定软件包是否需要更新,并将软件包自动发布于网络服务器,整个软件包构造过程只需要少量的人工干预,具有相当高的自动化程度;

3.易于使用:对于移动终端的使用人员而言,所安装的包管理器自动连接服务器,自动下载更新信息并给出用户提示,用户只要简单地确认一下,之后系统将自动下载需要更新的软件包并进行安装,用户不需要任何专业知识即可以掌握。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号