安占磊
(江蘇東大集成電路系統(tǒng)工程技術(shù)有限公司,江蘇 南京211500)
移動(dòng)智能終端大范圍普及背景下,通訊技術(shù)迅猛發(fā)展,4G時(shí)代移動(dòng)智能終端用戶數(shù)量爆發(fā)式增長(zhǎng),而在5G 時(shí)代下,我國(guó)的5G 技術(shù)更是走到了時(shí)代前沿,關(guān)于手機(jī)操作系統(tǒng)的研究受到了相關(guān)技術(shù)人士的高度重視。Android 操作系統(tǒng)由于自身開放性特點(diǎn),可以結(jié)合產(chǎn)品開發(fā)需求不斷創(chuàng)新,更好的滿足用戶多元化需求,推動(dòng)移動(dòng)終端技術(shù)創(chuàng)新發(fā)展。但是,硬件廠商尚未公開Android 操作系統(tǒng)的移植過程,相關(guān)研究深度不足。而Android 系統(tǒng)架構(gòu)復(fù)雜,移植需要大量理論知識(shí)和技術(shù)支持,因此分析研究Android 操作系統(tǒng)的移植技術(shù)很有必要,便于積累經(jīng)驗(yàn)、推動(dòng)技術(shù)創(chuàng)新,為后續(xù)工作開展提供參考。
1.1.1 Android 操作系統(tǒng)是針對(duì)移動(dòng)通訊設(shè)備設(shè)計(jì)的軟件綜合平臺(tái),可以在多數(shù)智能手機(jī)上運(yùn)行,移動(dòng)智能終端的各項(xiàng)功能正常使用,均需要基于Android 平臺(tái)展開,呈現(xiàn)鮮明的可植入性特點(diǎn)。
1.1.2 Android 操作系統(tǒng)各程序平臺(tái)缺少關(guān)聯(lián)性,不同軟件呈現(xiàn)獨(dú)立性特點(diǎn),彼此之間獨(dú)立存在,互不影響干擾,這一特性決定了Android 操作系統(tǒng)中各軟件運(yùn)行中可以同時(shí)為用戶服務(wù)[1]。
1.1.3 Android 操作系統(tǒng)開放性特點(diǎn),經(jīng)過系統(tǒng)測(cè)試的軟件均可以在Android 操作系統(tǒng)中運(yùn)行,經(jīng)過長(zhǎng)期的發(fā)展創(chuàng)新,Android 操作系統(tǒng)已經(jīng)成為應(yīng)用最廣泛的操作系統(tǒng)。就Android操作系統(tǒng)內(nèi)部構(gòu)成來(lái)看,其中包括中間件、操作系統(tǒng)和關(guān)鍵應(yīng)用程序,基于Java 語(yǔ)言基礎(chǔ)上支持Android 系統(tǒng)運(yùn)行。
Android 操作系統(tǒng)具有較強(qiáng)的兼容性特點(diǎn),因此關(guān)于Android 的操作系統(tǒng)構(gòu)成組合較為多樣,有著更加多元化的功能。一般情況下,Android 基本構(gòu)成包含Intent Receiver、Activity、Content Provider 以及Service,但是這幾個(gè)部分并非是系統(tǒng)必備的,特殊情況下只需要上述幾種程序任意幾種組合即可。作為Android 操作系統(tǒng)的基礎(chǔ)應(yīng)用程序,Activity 實(shí)際應(yīng)用中需要每個(gè)類別對(duì)應(yīng)相應(yīng)用戶接口,以此來(lái)保證用戶事件快速響應(yīng)。本質(zhì)上來(lái)看,Activity 更像是一種屏幕窗口,用戶結(jié)合自身操作需要來(lái)打開多個(gè)窗口,而這些窗口可以單獨(dú)工作也可以同時(shí)工作。Intent Receiver 屬于另一種程序類別,可以實(shí)現(xiàn)不同屏幕之間的變換,確保通訊設(shè)備對(duì)活動(dòng)及時(shí)響應(yīng),如,來(lái)電鈴聲是通訊設(shè)備不可或缺的一種功能[2]。Service 程序,生命周期較長(zhǎng),致力于提供優(yōu)質(zhì)服務(wù),在Android 操作系統(tǒng)中依據(jù)個(gè)性化用戶需求來(lái)控制程序啟停。Content Provider 程序具有存儲(chǔ)功能,結(jié)合用戶操作行為智能化記錄和分析,以此來(lái)滿足某一時(shí)段用戶的操作需求,而這些數(shù)據(jù)的存儲(chǔ)通常是有存儲(chǔ)周期的,超過這一周期則會(huì)自動(dòng)刪除,具體的時(shí)限由于系統(tǒng)不同設(shè)置也不盡相同[3]。
從中可以看出,上述四個(gè)程序構(gòu)成了Android 操作系統(tǒng),直接決定了系統(tǒng)正常運(yùn)行。
Android 操作系統(tǒng)的開啟和操作,需要多程序配合發(fā)揮作用,這就需要設(shè)備首先初始化,喚醒設(shè)備的各項(xiàng)應(yīng)用程序,并且保證程序啟動(dòng)后可以正常使用,所有程序響應(yīng)服務(wù)器需求,這樣才可以滿足用戶操作需求。Android 操作系統(tǒng)通過反饋用戶個(gè)性化需求,借助專門的程序來(lái)針對(duì)性處理,進(jìn)而快速反饋用戶需求,在良性循環(huán)過程中來(lái)控制Android 操作系統(tǒng)運(yùn)行。
圖1 Android 操作系統(tǒng)架構(gòu)
Android 操作系統(tǒng)的移植,本質(zhì)上是為了創(chuàng)造一個(gè)有助于Android 操作系統(tǒng)良性運(yùn)行的環(huán)境,提升系統(tǒng)的運(yùn)行效率,更好的滿足用戶多元化服務(wù)需求[4]。構(gòu)建Android 操作系統(tǒng)目標(biāo)平臺(tái),關(guān)鍵點(diǎn)在于獲取Android 的源代碼,在保障系統(tǒng)正常運(yùn)行的同時(shí),可以杜絕惡意入侵和病毒攻擊。源代碼獲取途徑多樣,主要有以下幾點(diǎn):
2.1.1 安裝Repo 程序獲取源代碼,需要從特定區(qū)域獲得。2.1.2 為Repo 系統(tǒng)增加可執(zhí)行權(quán)限,相較于其他方式,此種獲取源代碼形式更加可靠、安全、穩(wěn)定。
圖2 Android 操作系統(tǒng)移植
圖3 JNI 技術(shù)和Android 應(yīng)用
2.1.3 基于初始化形式來(lái)獲取源代碼,為Android 操作系統(tǒng)移植目標(biāo)平臺(tái)構(gòu)建提供支持,此種形式應(yīng)用較為普遍。
移植Android 操作系統(tǒng),應(yīng)緊緊圍繞保障系統(tǒng)安全穩(wěn)定運(yùn)行,杜絕外部攻擊目標(biāo),具體過程有構(gòu)建Android 操作系統(tǒng)平臺(tái),獲取源代碼,Linux 內(nèi)核移植和文件系統(tǒng)創(chuàng)建[5]。各個(gè)環(huán)節(jié)聯(lián)系密切,任何一個(gè)環(huán)節(jié)展開均需要深入分析和考量,尤其是Linux 內(nèi)核移植和文件系統(tǒng)創(chuàng)建最為重要,前者是依據(jù)系統(tǒng)平臺(tái)運(yùn)行要求來(lái)設(shè)置內(nèi)核參數(shù),內(nèi)核源機(jī)器設(shè)備碼同uboot 數(shù)據(jù)參數(shù)相契合。如果參數(shù)相悖,會(huì)導(dǎo)致數(shù)據(jù)連接出錯(cuò),影響到通訊設(shè)備安全穩(wěn)定運(yùn)行。創(chuàng)建Android 操作系統(tǒng)的文件系統(tǒng),主要是保障通訊設(shè)備相關(guān)數(shù)據(jù)分類存儲(chǔ)。此類基礎(chǔ)程序的應(yīng)用是為了確保Android 操作系統(tǒng)可以正常運(yùn)行,也是移植Android 操作系統(tǒng)不可或缺的組成部分[6]。
Android 操作系統(tǒng)移植過程較為復(fù)雜,專業(yè)性較強(qiáng),對(duì)于工程師而言專業(yè)能力和實(shí)踐操作經(jīng)驗(yàn)要求較高,具體操作技術(shù)要點(diǎn)如下:
2.3.1 Linux 內(nèi)核移植期間。一個(gè)關(guān)鍵點(diǎn)是保障驅(qū)動(dòng)類型和配置文件精準(zhǔn)無(wú)誤,否則會(huì)對(duì)后期Android 操作系統(tǒng)運(yùn)行帶來(lái)不同程度的影響。需要注意的是,內(nèi)核移植過程重要按照標(biāo)準(zhǔn)將驅(qū)動(dòng)文件置入到內(nèi)核源碼樹中,實(shí)現(xiàn)Android 操作系統(tǒng)正常驅(qū)動(dòng)和使用。
2.3.2 Android 操作系統(tǒng)配備文件實(shí)效性需要得到保障。盡可能減少所占據(jù)空間,滿足多功能需求。多數(shù)情況下,Android 操作系統(tǒng)配置工具包括界面、命令解釋器等,此類配置工具較為常見[7]。
2.3.3 設(shè)置系統(tǒng)基本參數(shù)。作為Android 操作系統(tǒng)移植過程的重中之重,參數(shù)設(shè)置是否合理直接決定了Android 操作系統(tǒng)是否可以正常運(yùn)行,如果移植期間有部分區(qū)域數(shù)據(jù)充值,則需要優(yōu)先考慮到系統(tǒng)參數(shù)合理性,只有這樣才能最大程度上提升Android 操作系統(tǒng)移植成功率。
Android 操作系統(tǒng)移植中,需要運(yùn)用諸多復(fù)雜的技術(shù),其中Linux 驅(qū)動(dòng)技術(shù)是核心技術(shù)之一,但并不等同于Linux 內(nèi)核,Linux 驅(qū)動(dòng)技術(shù)本質(zhì)上是保障Android 操作系統(tǒng)正常運(yùn)行的基礎(chǔ)前提。Linux 技術(shù)應(yīng)用,可以幫助設(shè)備初始化,提升設(shè)備運(yùn)行效率;滿足通訊設(shè)備內(nèi)核、硬件之間數(shù)據(jù)傳輸,各項(xiàng)傳輸指令可以得到快速傳輸以及響應(yīng);Linux 技術(shù)涵蓋內(nèi)容多樣、廣泛,結(jié)合國(guó)內(nèi)Linux 驅(qū)動(dòng)技術(shù)來(lái)看,主要架構(gòu)涵蓋了用戶空間驅(qū)動(dòng)、應(yīng)用程序、Linux 內(nèi)核以及標(biāo)準(zhǔn)C 庫(kù)等。應(yīng)用程序作為操作系統(tǒng)運(yùn)行的基本進(jìn)程,也是各項(xiàng)工作展開的基礎(chǔ)前提。用戶空間驅(qū)動(dòng)本質(zhì)上是一個(gè)涵蓋了諸多數(shù)據(jù)資料的庫(kù),標(biāo)準(zhǔn)C 庫(kù)即libc。Linux 內(nèi)核屬于系統(tǒng)驅(qū)動(dòng)環(huán)節(jié),需要在前三個(gè)環(huán)節(jié)協(xié)調(diào)配合基礎(chǔ)上方可實(shí)現(xiàn),從中也可以看出Linux 技術(shù)是Android 操作系統(tǒng)的核心技術(shù)之一。
HAL 技術(shù)即硬件抽象層技術(shù),為庫(kù)的層面通過設(shè)備驅(qū)動(dòng)源碼在其中封存后,保障庫(kù)整體數(shù)據(jù)資料安全,以此來(lái)支持通訊設(shè)備正常使用。HAL 技術(shù)屬于Android 操作系統(tǒng)移植過程的關(guān)鍵技術(shù)之一,從實(shí)際來(lái)看,通過對(duì)通訊設(shè)備Linux 內(nèi)核與應(yīng)用架構(gòu)分離處理,保障操作系統(tǒng)可以基于Linux 內(nèi)核正常工作,但卻又不是完全依賴Linux 內(nèi)核工作。HAL 僅僅是將部分Linux 內(nèi)核工作分走,二者結(jié)合在一起并非是重疊。但是,結(jié)合現(xiàn)今的研究成果來(lái)看,關(guān)于HAL 和Linux 內(nèi)核工作職能以及占比研究還有所不足,界限較為模糊。
此項(xiàng)技術(shù)屬于一種特殊的系統(tǒng)語(yǔ)言,Java 編程語(yǔ)言作為應(yīng)用較為普遍的編程方式,多數(shù)計(jì)算機(jī)或是通訊設(shè)備編程中均有所應(yīng)用。也正是這一特性,JNI 成為了Android 操作系統(tǒng)中的核心內(nèi)容,具體應(yīng)用中通過對(duì)系統(tǒng)程序或語(yǔ)言設(shè)定調(diào)整,形成專門的Java 數(shù)據(jù)庫(kù),在收到工作指令后數(shù)據(jù)庫(kù)智能化判斷指令要求第一時(shí)間響應(yīng)。需要注意的是,在這個(gè)過程中Dalvik 虛擬機(jī)的使用尤為重要,程序受到調(diào)用本地庫(kù)指令時(shí)將信息錄入到本地庫(kù)中,依據(jù)標(biāo)準(zhǔn)智能化篩選,進(jìn)而提升系統(tǒng)的整體運(yùn)行效率,為用戶提供優(yōu)質(zhì)、多元的服務(wù)[8]。
Android 操作系統(tǒng)的移植過程較為復(fù)雜,其中涉及到諸多專業(yè)性較強(qiáng)的技術(shù),相較于國(guó)外,我國(guó)的研究還略有不足,有待進(jìn)一步提升對(duì)其研究力度,增加行業(yè)投入,便于持續(xù)提升Android操作系統(tǒng)移植效果,為現(xiàn)代化社會(huì)發(fā)展做出更大的貢獻(xiàn)。