摘 要: 随着手机功能的丰富和使用领域的拓广,手机软件平台技术越来越被重视。手机软件平台对手机开发和手机性能上的影响,已经使其成为技术领域内一个研究的热点。为了使基于Linux的嵌入式软件平台的建立、集成和分配更容易,需要一个手机软件平台创建工具,以提高手机软件平台的开发效率。手机软件平台创建工具是一个图形用户界面的系统集成和分配工具,功能覆盖了创建手机软件平台的全过程。分析了基于Linux 的手机软件平台的优势,探讨了软件包管理方式,描述了平台创建工具的系统结构和相关技术,并讨论了该工具在手机软件开发过程中所起的重要作用。
1 引言
随着手机功能的迅速发展,越来越多手机上的软件功能已经和个人计算机上的软件功能非常相近。因此,手机也需要功能更加强大的操作系统作为支持。
基于Linux 操作系统的手机软件平台,已经被认为是下一代手机软件平台。
当前,已经有很多手机开发商开始采用手机软件平台。但是,手机软件平台在提供可靠的手机操作系统和优质软件的同时,需要花费大量的时间、人力、财力进行创建。原始的手机软件平台开发方式不仅效率低,而且对开发人员的技术水平的要求较高,需要经过大量的培训才能胜任,这必然会增加产品的开发成本。手机开发商们正在为创建属于自己的下一代手机软件平台寻找更加方便、高效的方法。
2 基于Linux的手机软件平台
个人计算机因为拥有操作系统以及运行于操作系统之上的软件,而具有丰富的功能。同样,手机也在提供不断丰富的功能,需要强大的操作系统和软件作为支持。与其它操作系统相比,采用开放源代码的Linux 操作系统作为手机操作系统能够大大降低手机开发成本。开放源代码的另一个好处是允许手机生产商根据实际情况,有针对性地开发适合自己手机的Linux 操作系统,这样既能让自己的产品有特色,又能避免受制于人,还能够满足用户多方面的应用需求。
手机软件平台的概念可概括为:
(1) 手机软件平台基于一定的硬件架构之上,特定的软件平台一般只能用于特定厂商的硬件体系;(2) 手机软件平台提供对应用程序的基础支持;(3) 手机软件平台自带一些应用;(4) 手机软件平台能够方便的进行扩展,手机软件开发者能够在平台上方便的建立新的功能,这也是最重要的功能之一。
手机软件平台架构在手机操作系统之上,通过抽象层与不同操作系统进行集成。一个完整的软件平台主要包括中间件、系统抽象层、关键应用软件和SDK(Software Developers Kit)开发环境。软件平台不能取代操作系统。但是就应用软件来说,可以在软件平台上直接开发,这也是手机软件平台的一个重要应用。
手机生产商之间的竞争越来越激烈,新产品层出不穷,面对新的市场要求,只要在已有平台上加以扩展,就能很快推出新的手机产品,在竞争中取得优势。
3 平台创建工具开发背景
3.1 手机软件平台开发现状
手机的整个开发流程如图1 所示,其中手机软件的开发包括创建平台和产品开发两部分。
图1 手机开发流程
创建手机软件平台是一个庞大的工程,需要构建很多功能部件,每一个功能部件都独立存在,但又相辅相成,需要多方的协同合作共同完成,整套流程需要很长时间。
目前做完全构建的实际情况是,对一个功能部件做一次完全构建一般需要3 个小时以上,开发人员只有等待构建完成才能进行下一步的工作。在理想情况下,3 小时后构建成功,并且测试通过。但一般情况下,由于源代码的问题,构建经常在进行过程中半途失败,需要修改源代码重新进行构建。即使构建成功,如果在测试过程中发现问题,又要进行代码修改,然后重新进行构建,如此反复数遍。对于经验不足的开发人员,或者处在一个功能部件开发的初期,这种重新构建的出现频率会大大提高,这将浪费大量的精力,工作效率也会大幅下降。任何一个功能部件的修改对整个平台都会造成影响,需要对整个平台重新进行建构,面对竞争越发激烈的市场,这将增加产品的开发成本、增长开发周期。
未来手机产品竞争最核心的是软件平台,并将成为一些大的手机品牌的最后竞争领域。Linux 操作系统作为一个免费开源系统,Linux 手机软件平台在降低手机生产商研发成本、提高新品上市响应时间、实现产品个性化设计三个方面表现尤为突出。Linux 手机软件平台已成为众多资深专家和手机生产商认定的下一代手机软件平台,有着广阔的发展前景。
3.2 RPM 软件包管理。
一个解决现状的方法是使用软件包管理方式。包管理系统由包括程序、数据、文档、配置信息的众多文件组成,它们存储在一个特殊的格式文件--包文件中。基于包的系统集成和发行,已经广泛应用于当代的Linux 发行商。目前两个最流行的包管理方法是Red Hat 的RPM (Red Hat Package Manager)和Debian 的dpkg.
RPM 软件包管理是开发打包系统,任何人都可以使用。对于终端用户,RPM 提供了很多功能,使得软件的维护远比以前容易。通过简短的命令就可完成RPM 包的安装、卸载和升级,所有杂乱的细节都经过了处理。 RPM 对已经安装的包及文件形成的数据库进行维护,可以在系统上使用功能强大的查询和校验功能[1].一个RPM 包中的应用程序,有时除了自身所带的附加文件保证其正常运行以外,还需要其它特定版本的文件作为支持,这就是软件包的依赖关系[2].
使用RPM 管理软件后,软件的安装流程如图2 所示。
图2 使用RPM 的软件安装流程图。
4 平台创建工具开发背景
经过十多年的发展,基于Linux 的开发已经不再是最开始对所有内容进行构建的时代。在桌面领域,Linux 已经成为一个拥有成熟的软件构建区块和综合工具的开发系统。然而,在嵌入式领域,在将传统的原始数据驱动开发模式转换为新的基于包的开发模式方面,Linux 操作系统还存在一些差距。
原始数据驱动开发模式的主要问题在于,它没有一个有效的方法去控制功能部件之间的分界,这会导致功能部件代码之间的依赖超过了API (ApplicationProgramming Interface),最终会使整个平台功能部件间的关系变得更加复杂。这些复杂的功能部件将堆积在平台源代码中,使以后的识别和修改更困难。经过多年的发展,整个软件平台都将难以进行扩展、剪裁和定制,以适应产品改变的需要。
由于手机生产商已经确认将Linux 作为下一代手机软件平台,基于Linux 的手机产品功能开发将成为一个主流。为了让开发得以实现,需要建立一个合理的综合开发环境,其中包括整套的开发流程和开发工具,其关键在于如何定制和发行一个完整的软件平台。
尽管传统的基于源代码的系统集成依然可以满足需求,但是积累的工程经验倾向于基于软件包的系统集成和部署方案,因为基于软件包的方案已经被证明更加可靠、灵活、安全。可以预见,基于软件包的系统集成方案将在平台集成和发行上占据优势。
Linux 企业解决方案提供商试图缩小Linux 操作系统在嵌入式领域的差距。但是,只有先建立适合开发的基础结构,Linux 企业解决方案提交的包格式才能充分发挥作用。手机软件平台创建工具,就是一个基于RPM 的平台构建、管理、部署系统工具,还对嵌入式系统的发行提供强大的支持。图3 举例说明了平台创建工具基于RPM 软件包的工作模式。
图3 基于RPM 的软件构建和发行。
在基于RPM 的解决方案中,开发人员只需要留心自己软件包的源代码VOB.VOB 是一个以版本的形式存储项目产品和数据的资源库。所有依赖的包都存储在与RPM VOB 结合的RPM 发行服务器上,该服务器由软件配置管理员维护。功能部件开发人员从发行服务器中获得二进制RPM 包,并且在平台创建工具的帮助下安装构建环境。当开发进行到一定程度需要交付时,开发人员将提出构建请求。配置管理员将处理构建请求,并将请求构建的软件包与其依赖的软件包一同进行构建。之后,使用平台创建工具通过RPM VOB和发行服务器发布版本。这样,开发人员就可以使用新的版本进行增强开发。经理和其他项目股东可以使用网络浏览器查看发行进程和平台变化。
当配置管理员所发布的RPM 包不可用时,开发人员还可以使用平台创建工具调整这些包来解决相互依赖。
以上对于基础结构的开发,通过使用功能部件的发行包,增强了功能部件间的边界和API 的访问。所以,不会通过功能部件间的依赖看到它们的复杂性,确保手机软件平台拥有扩展性和适应性。
平台创建工具就是要成为一个基于RPM 的平台构建、管理、部署的系统工具,并对嵌入式系统的发行提供强大的支持。
5 平台创建工具的设计目标
手机软件平台创建工具需要关注两方面的问题:
其一是保证使用工具构建出的结果正确。使用工具能够提高开发效率,缩短对开发人员的培训时间,但最为重要的是保证最终生成镜像的正确;其二是充分利用已经生成的手机RootFS 和镜像。在手机的开发过程中,会经历无数次的构建、测试、生成镜像。每次发现问题、修改源代码后,都需要再进行一次,但实际上每次改动往往并不多,如果充分利用过去的基础,就可以节省大量的时间。
平台创建工具应该维护一个工作区,供使用者进行基于包的平台建设、架构和发行。这个工作区应该是一个为唯一用户维护当前工程数据和结构的独立空间。基于这个工作区,平台创建工具主要应该支持以下功能:
(1) 支持包管理操作,例如:安装、卸载、升级、降级、信息查询等;(2) 支持将源代码RPM 包、源代码目录和二进制RPM 混合在一起的平台构建;(3) 支持根据用户指定的RPM 包生成手机RootFS;(4) 支持根据特定的系统分割、RootFS 内容和RootFS 类型生成镜像文件;(5) 调用镜像烧制工具,将镜像烧制到目标设备上;(6) 支持平台定制,并能导出备份文件供今后使用;(7) 支持基于指定的RPM 包和RPM 开发包生成软件开发工具包。运行库、工具链、头文件和软件开发工具包的文件由用户的RPM 开发包提供;(8) 提供插件机制,使新的目标和工具链可用。
6 平台创建工具的作用
平台创建工具的定位是一个图形用户界面系统集成和分配工具,用来帮助开发人员开发嵌入式程序,使基于Linux 的嵌入式软件平台的建立、集成和分配更容易。其亮点在于灵活的包管理机制、方便的平台构造和部署、对不同生产线的支持、快速生成软件开发工具包等,具有使用方便、工作效率高、资源重用性强等特点。最重要的是能够大幅度的提高开发效率,并使开发人员和平台配置管理人员摆脱复杂的命令行操作方式,通过清晰明了的GUI 完成工作,工作流如图4 所示。
图4 平台创建工具工作流。
具体而言是针对Linux-Java 手机软件平台的集成和分配,以软件包管理方式,替代繁杂的整体构建方式;以自动执行的方式,替代人工的命令行操作方式,提高创建手机软件平台的效率,并使所创建的手机软件平台拥有更高的质量和更好的维护性。
手机软件平台的开发可具体分为:成分部件开发、平台创建、系统集成和系统部署四部分,如图5 所示。
图5 Linux/Java 平台构造模型。
可见,平台创建工具的使用几乎贯传了整个平台构造全过程。在成分部件开发阶段,使用RPM 对开发好的各个成分部件进行分别打包后,交由平台创建工具集中管理。在平台创建阶段,使用平台创建工具对软件包进行分块处理,按照不同的分类成为一个个资源库,并构建可运行平台,建立软件开发工具包。这时,对于指定生产线的手机软件产品所需的软件平台就已经成功建立,平台拥有所有需要的软件配置,并可生成出镜像文件。最后使用镜像烧制工具,将生成的镜像烧到手机上,就可以进行系统测试了。
7 结语
使用基于包管理方式的平台创建工具,不仅可以弥补原始开发方法的不足,还可自动为产品提供正确的配置,使得跟踪包间的依赖关和进行软件发布、安装、卸载、升降级都更加容易,同时它还是最被广泛接受的向开源软件组织发布源码的方法,便于确认开源软件的灵活性。
手机软件平台创建工具作为一个图形用户界面系统集成和分配工具,用来帮助开发人员开发嵌入式程序,使基于Linux 的嵌入式软件平台的建立、集成和分配更容易。平台创建工具的使用,将使手机开发商在降低开发成本的同时,开发出功能更加完善的手机软件平台,最终为用户提供功能更加丰富的手机产品。