1 引言
隨著手機功能的迅速發(fā)展,,越來越多手機上的軟件功能已經(jīng)和個人計算機上的軟件功能非常相近。因此,,手機也需要功能更加強大的操作系統(tǒng)作為支持,。
基于Linux 操作系統(tǒng)的手機軟件平臺,已經(jīng)被認為是下一代手機軟件平臺,。
當前,,已經(jīng)有很多手機開發(fā)商開始采用手機軟件平臺。但是,,手機軟件平臺在提供可靠的手機操作系統(tǒng)和優(yōu)質(zhì)軟件的同時,,需要花費大量的時間、人力,、財力進行創(chuàng)建,。原始的手機軟件平臺開發(fā)方式不僅效率低,而且對開發(fā)人員的技術(shù)水平的要求較高,,需要經(jīng)過大量的培訓才能勝任,,這必然會增加產(chǎn)品的開發(fā)成本。手機開發(fā)商們正在為創(chuàng)建屬于自己的下一代手機軟件平臺尋找更加方便、高效的方法,。
2 基于Linux的手機軟件平臺
個人計算機因為擁有操作系統(tǒng)以及運行于操作系統(tǒng)之上的軟件,,而具有豐富的功能。同樣,,手機也在提供不斷豐富的功能,,需要強大的操作系統(tǒng)和軟件作為支持。與其它操作系統(tǒng)相比,,采用開放源代碼的Linux 操作系統(tǒng)作為手機操作系統(tǒng)能夠大大降低手機開發(fā)成本,。開放源代碼的另一個好處是允許手機生產(chǎn)商根據(jù)實際情況,有針對性地開發(fā)適合自己手機的Linux 操作系統(tǒng),,這樣既能讓自己的產(chǎn)品有特色,,又能避免受制于人,還能夠滿足用戶多方面的應(yīng)用需求,。
手機軟件平臺的概念可概括為:
(1) 手機軟件平臺基于一定的硬件架構(gòu)之上,,特定的軟件平臺一般只能用于特定廠商的硬件體系;
(2) 手機軟件平臺提供對應(yīng)用程序的基礎(chǔ)支持,;
(3) 手機軟件平臺自帶一些應(yīng)用;
(4) 手機軟件平臺能夠方便的進行擴展,,手機軟件開發(fā)者能夠在平臺上方便的建立新的功能,,這也是最重要的功能之一。
手機軟件平臺架構(gòu)在手機操作系統(tǒng)之上,,通過抽象層與不同操作系統(tǒng)進行集成,。一個完整的軟件平臺主要包括中間件、系統(tǒng)抽象層,、關(guān)鍵應(yīng)用軟件和SDK(Software Developers Kit)開發(fā)環(huán)境,。軟件平臺不能取代操作系統(tǒng)。但是就應(yīng)用軟件來說,,可以在軟件平臺上直接開發(fā),,這也是手機軟件平臺的一個重要應(yīng)用。
手機生產(chǎn)商之間的競爭越來越激烈,,新產(chǎn)品層出不窮,,面對新的市場要求,只要在已有平臺上加以擴展,,就能很快推出新的手機產(chǎn)品,,在競爭中取得優(yōu)勢。
3 平臺創(chuàng)建工具開發(fā)背景
3.1 手機軟件平臺開發(fā)現(xiàn)狀
手機的整個開發(fā)流程如圖1 所示,,其中手機軟件的開發(fā)包括創(chuàng)建平臺和產(chǎn)品開發(fā)兩部分,。
圖1 手機開發(fā)流程
創(chuàng)建手機軟件平臺是一個龐大的工程,需要構(gòu)建很多功能部件,每一個功能部件都獨立存在,,但又相輔相成,,需要多方的協(xié)同合作共同完成,整套流程需要很長時間,。
目前做完全構(gòu)建的實際情況是,,對一個功能部件做一次完全構(gòu)建一般需要3 個小時以上,開發(fā)人員只有等待構(gòu)建完成才能進行下一步的工作,。在理想情況下,,3 小時后構(gòu)建成功,并且測試通過,。但一般情況下,,由于源代碼的問題,構(gòu)建經(jīng)常在進行過程中半途失敗,,需要修改源代碼重新進行構(gòu)建,。即使構(gòu)建成功,如果在測試過程中發(fā)現(xiàn)問題,,又要進行代碼修改,,然后重新進行構(gòu)建,如此反復數(shù)遍,。對于經(jīng)驗不足的開發(fā)人員,,或者處在一個功能部件開發(fā)的初期,這種重新構(gòu)建的出現(xiàn)頻率會大大提高,,這將浪費大量的精力,,工作效率也會大幅下降。任何一個功能部件的修改對整個平臺都會造成影響,,需要對整個平臺重新進行建構(gòu),,面對競爭越發(fā)激烈的市場,這將增加產(chǎn)品的開發(fā)成本,、增長開發(fā)周期,。
未來手機產(chǎn)品競爭最核心的是軟件平臺,并將成為一些大的手機品牌的最后競爭領(lǐng)域,。Linux 操作系統(tǒng)作為一個免費開源系統(tǒng),,Linux 手機軟件平臺在降低手機生產(chǎn)商研發(fā)成本、提高新品上市響應(yīng)時間,、實現(xiàn)產(chǎn)品個性化設(shè)計三個方面表現(xiàn)尤為突出,。Linux 手機軟件平臺已成為眾多資深專家和手機生產(chǎn)商認定的下一代手機軟件平臺,有著廣闊的發(fā)展前景,。
3.2 RPM 軟件包管理,。
一個解決現(xiàn)狀的方法是使用軟件包管理方式,。包管理系統(tǒng)由包括程序、數(shù)據(jù),、文檔,、配置信息的眾多文件組成,它們存儲在一個特殊的格式文件--包文件中,?;诎南到y(tǒng)集成和發(fā)行,已經(jīng)廣泛應(yīng)用于當代的Linux 發(fā)行商,。目前兩個最流行的包管理方法是Red Hat 的RPM (Red Hat Package Manager)和Debian 的dpkg.
RPM 軟件包管理是開發(fā)打包系統(tǒng),,任何人都可以使用。對于終端用戶,,RPM 提供了很多功能,,使得軟件的維護遠比以前容易。通過簡短的命令就可完成RPM 包的安裝,、卸載和升級,,所有雜亂的細節(jié)都經(jīng)過了處理。 RPM 對已經(jīng)安裝的包及文件形成的數(shù)據(jù)庫進行維護,,可以在系統(tǒng)上使用功能強大的查詢和校驗功能[1].一個RPM 包中的應(yīng)用程序,,有時除了自身所帶的附加文件保證其正常運行以外,還需要其它特定版本的文件作為支持,,這就是軟件包的依賴關(guān)系[2].
使用RPM 管理軟件后,,軟件的安裝流程如圖2 所示。
圖2 使用RPM 的軟件安裝流程圖,。
4 平臺創(chuàng)建工具開發(fā)背景
經(jīng)過十多年的發(fā)展,,基于Linux 的開發(fā)已經(jīng)不再是最開始對所有內(nèi)容進行構(gòu)建的時代,。在桌面領(lǐng)域,Linux 已經(jīng)成為一個擁有成熟的軟件構(gòu)建區(qū)塊和綜合工具的開發(fā)系統(tǒng),。然而,,在嵌入式領(lǐng)域,在將傳統(tǒng)的原始數(shù)據(jù)驅(qū)動開發(fā)模式轉(zhuǎn)換為新的基于包的開發(fā)模式方面,,Linux 操作系統(tǒng)還存在一些差距,。
原始數(shù)據(jù)驅(qū)動開發(fā)模式的主要問題在于,它沒有一個有效的方法去控制功能部件之間的分界,,這會導致功能部件代碼之間的依賴超過了API (ApplicationProgramming Interface),,最終會使整個平臺功能部件間的關(guān)系變得更加復雜。這些復雜的功能部件將堆積在平臺源代碼中,,使以后的識別和修改更困難,。經(jīng)過多年的發(fā)展,,整個軟件平臺都將難以進行擴展、剪裁和定制,,以適應(yīng)產(chǎn)品改變的需要,。
由于手機生產(chǎn)商已經(jīng)確認將Linux 作為下一代手機軟件平臺,基于Linux 的手機產(chǎn)品功能開發(fā)將成為一個主流,。為了讓開發(fā)得以實現(xiàn),,需要建立一個合理的綜合開發(fā)環(huán)境,其中包括整套的開發(fā)流程和開發(fā)工具,,其關(guān)鍵在于如何定制和發(fā)行一個完整的軟件平臺,。
盡管傳統(tǒng)的基于源代碼的系統(tǒng)集成依然可以滿足需求,但是積累的工程經(jīng)驗傾向于基于軟件包的系統(tǒng)集成和部署方案,,因為基于軟件包的方案已經(jīng)被證明更加可靠,、靈活、安全,??梢灶A見,基于軟件包的系統(tǒng)集成方案將在平臺集成和發(fā)行上占據(jù)優(yōu)勢,。
Linux 企業(yè)解決方案提供商試圖縮小Linux 操作系統(tǒng)在嵌入式領(lǐng)域的差距,。但是,只有先建立適合開發(fā)的基礎(chǔ)結(jié)構(gòu),,Linux 企業(yè)解決方案提交的包格式才能充分發(fā)揮作用,。手機軟件平臺創(chuàng)建工具,就是一個基于RPM 的平臺構(gòu)建,、管理,、部署系統(tǒng)工具,還對嵌入式系統(tǒng)的發(fā)行提供強大的支持,。圖3 舉例說明了平臺創(chuàng)建工具基于RPM 軟件包的工作模式,。
圖3 基于RPM 的軟件構(gòu)建和發(fā)行,。
在基于RPM 的解決方案中,,開發(fā)人員只需要留心自己軟件包的源代碼VOB.VOB 是一個以版本的形式存儲項目產(chǎn)品和數(shù)據(jù)的資源庫。所有依賴的包都存儲在與RPM VOB 結(jié)合的RPM 發(fā)行服務(wù)器上,,該服務(wù)器由軟件配置管理員維護,。功能部件開發(fā)人員從發(fā)行服務(wù)器中獲得二進制RPM 包,并且在平臺創(chuàng)建工具的幫助下安裝構(gòu)建環(huán)境,。當開發(fā)進行到一定程度需要交付時,,開發(fā)人員將提出構(gòu)建請求。配置管理員將處理構(gòu)建請求,,并將請求構(gòu)建的軟件包與其依賴的軟件包一同進行構(gòu)建,。之后,,使用平臺創(chuàng)建工具通過RPM VOB和發(fā)行服務(wù)器發(fā)布版本。這樣,,開發(fā)人員就可以使用新的版本進行增強開發(fā),。經(jīng)理和其他項目股東可以使用網(wǎng)絡(luò)瀏覽器查看發(fā)行進程和平臺變化。
當配置管理員所發(fā)布的RPM 包不可用時,,開發(fā)人員還可以使用平臺創(chuàng)建工具調(diào)整這些包來解決相互依賴,。
以上對于基礎(chǔ)結(jié)構(gòu)的開發(fā),通過使用功能部件的發(fā)行包,,增強了功能部件間的邊界和API 的訪問,。所以,不會通過功能部件間的依賴看到它們的復雜性,,確保手機軟件平臺擁有擴展性和適應(yīng)性,。
平臺創(chuàng)建工具就是要成為一個基于RPM 的平臺構(gòu)建、管理,、部署的系統(tǒng)工具,,并對嵌入式系統(tǒng)的發(fā)行提供強大的支持。
5 平臺創(chuàng)建工具的設(shè)計目標
手機軟件平臺創(chuàng)建工具需要關(guān)注兩方面的問題:
其一是保證使用工具構(gòu)建出的結(jié)果正確,。使用工具能夠提高開發(fā)效率,,縮短對開發(fā)人員的培訓時間,但最為重要的是保證最終生成鏡像的正確,;其二是充分利用已經(jīng)生成的手機RootFS 和鏡像,。在手機的開發(fā)過程中,會經(jīng)歷無數(shù)次的構(gòu)建,、測試,、生成鏡像。每次發(fā)現(xiàn)問題,、修改源代碼后,,都需要再進行一次,但實際上每次改動往往并不多,,如果充分利用過去的基礎(chǔ),,就可以節(jié)省大量的時間,。
平臺創(chuàng)建工具應(yīng)該維護一個工作區(qū),,供使用者進行基于包的平臺建設(shè)、架構(gòu)和發(fā)行,。這個工作區(qū)應(yīng)該是一個為唯一用戶維護當前工程數(shù)據(jù)和結(jié)構(gòu)的獨立空間,。基于這個工作區(qū),,平臺創(chuàng)建工具主要應(yīng)該支持以下功能:
(1) 支持包管理操作,,例如:安裝,、卸載、升級,、降級,、信息查詢等;(2) 支持將源代碼RPM 包,、源代碼目錄和二進制RPM 混合在一起的平臺構(gòu)建,;(3) 支持根據(jù)用戶指定的RPM 包生成手機RootFS;(4) 支持根據(jù)特定的系統(tǒng)分割、RootFS 內(nèi)容和RootFS 類型生成鏡像文件,;(5) 調(diào)用鏡像燒制工具,,將鏡像燒制到目標設(shè)備上;(6) 支持平臺定制,,并能導出備份文件供今后使用,;(7) 支持基于指定的RPM 包和RPM 開發(fā)包生成軟件開發(fā)工具包。運行庫,、工具鏈,、頭文件和軟件開發(fā)工具包的文件由用戶的RPM 開發(fā)包提供;(8) 提供插件機制,,使新的目標和工具鏈可用,。
6 平臺創(chuàng)建工具的作用
平臺創(chuàng)建工具的定位是一個圖形用戶界面系統(tǒng)集成和分配工具,用來幫助開發(fā)人員開發(fā)嵌入式程序,,使基于Linux 的嵌入式軟件平臺的建立,、集成和分配更容易。其亮點在于靈活的包管理機制,、方便的平臺構(gòu)造和部署,、對不同生產(chǎn)線的支持、快速生成軟件開發(fā)工具包等,,具有使用方便,、工作效率高、資源重用性強等特點,。最重要的是能夠大幅度的提高開發(fā)效率,,并使開發(fā)人員和平臺配置管理人員擺脫復雜的命令行操作方式,通過清晰明了的GUI 完成工作,,工作流如圖4 所示,。
圖4 平臺創(chuàng)建工具工作流,。
具體而言是針對Linux-Java 手機軟件平臺的集成和分配,,以軟件包管理方式,替代繁雜的整體構(gòu)建方式,;以自動執(zhí)行的方式,,替代人工的命令行操作方式,,提高創(chuàng)建手機軟件平臺的效率,并使所創(chuàng)建的手機軟件平臺擁有更高的質(zhì)量和更好的維護性,。
手機軟件平臺的開發(fā)可具體分為:成分部件開發(fā),、平臺創(chuàng)建、系統(tǒng)集成和系統(tǒng)部署四部分,,如圖5 所示,。
圖5 Linux/Java 平臺構(gòu)造模型,。
可見,,平臺創(chuàng)建工具的使用幾乎貫傳了整個平臺構(gòu)造全過程。在成分部件開發(fā)階段,,使用RPM 對開發(fā)好的各個成分部件進行分別打包后,,交由平臺創(chuàng)建工具集中管理。在平臺創(chuàng)建階段,,使用平臺創(chuàng)建工具對軟件包進行分塊處理,,按照不同的分類成為一個個資源庫,并構(gòu)建可運行平臺,,建立軟件開發(fā)工具包,。這時,對于指定生產(chǎn)線的手機軟件產(chǎn)品所需的軟件平臺就已經(jīng)成功建立,,平臺擁有所有需要的軟件配置,,并可生成出鏡像文件。最后使用鏡像燒制工具,,將生成的鏡像燒到手機上,,就可以進行系統(tǒng)測試了。
7 結(jié)語
使用基于包管理方式的平臺創(chuàng)建工具,,不僅可以彌補原始開發(fā)方法的不足,,還可自動為產(chǎn)品提供正確的配置,使得跟蹤包間的依賴關(guān)和進行軟件發(fā)布,、安裝,、卸載、升降級都更加容易,,同時它還是最被廣泛接受的向開源軟件組織發(fā)布源碼的方法,,便于確認開源軟件的靈活性。
手機軟件平臺創(chuàng)建工具作為一個圖形用戶界面系統(tǒng)集成和分配工具,,用來幫助開發(fā)人員開發(fā)嵌入式程序,,使基于Linux 的嵌入式軟件平臺的建立,、集成和分配更容易,。平臺創(chuàng)建工具的使用,,將使手機開發(fā)商在降低開發(fā)成本的同時,開發(fā)出功能更加完善的手機軟件平臺,,最終為用戶提供功能更加豐富的手機產(chǎn)品,。