摘 要:Android操作系統(tǒng)在智能手機(jī)市場中的巨大占有率使其成為應(yīng)用軟件開發(fā)的熱門平臺(tái),但現(xiàn)有開發(fā)環(huán)境多基于X86架構(gòu),無法直接測試運(yùn)行基于ARM架構(gòu)的Android系統(tǒng)應(yīng)用軟件,本文詳細(xì)闡述了如何利用Android SDK實(shí)現(xiàn)在X86架構(gòu)下模擬Android操作系統(tǒng)運(yùn)行環(huán)境以及如何提高模擬環(huán)境的兼容性,方便開發(fā)者實(shí)現(xiàn)在基于X86架構(gòu)的開發(fā)平臺(tái)上測試Android應(yīng)用軟件。
關(guān)鍵詞:Android軟件;X86架構(gòu);虛擬機(jī)
中圖分類號:TP391.9
在智能手機(jī)的發(fā)展與普及浪潮中,功能強(qiáng)大的Android操作系統(tǒng)因其開源、免費(fèi)的特性,在降低手機(jī)的成本、提高手機(jī)的用戶體驗(yàn)方面具有很大優(yōu)勢,其發(fā)布以來市場占有率不斷激增。巨大的市場吸引了眾多開發(fā)者為其設(shè)計(jì)應(yīng)用軟件,但Android操作系統(tǒng)被設(shè)計(jì)為針對手持觸控設(shè)備,此類設(shè)備因功耗問題,其CPU采用的是ARM架構(gòu),現(xiàn)行常用開發(fā)環(huán)境的X86架構(gòu)與之不兼容,無法直接運(yùn)行Android操作系統(tǒng)。在X86架構(gòu)平臺(tái)上開發(fā)完成的軟件,需要安裝到Android設(shè)備上進(jìn)行測試。如此測試存在以下問題:1.需要另行配置硬件設(shè)備,增加開發(fā)成本及周期;2.測試易受設(shè)備本身性能質(zhì)量、兼容性等特性干擾,同時(shí)硬件存在折舊損壞問題,比如多次使用后常遇到數(shù)據(jù)端口接觸不良等問題;3.常見的Android設(shè)備性能不如PC,且Android平臺(tái)調(diào)試工具種類少、功能單一,測試調(diào)試不便。在PC上直接模擬Android設(shè)備上的運(yùn)行環(huán)境進(jìn)行軟件測試,是解決上述問題的一個(gè)優(yōu)秀方案,此方案應(yīng)滿足以下需求:1.在X86架構(gòu)中模擬出Android操作系統(tǒng)虛擬機(jī);2.具有廣泛的兼容性,可運(yùn)行待測試的應(yīng)用軟件,可模擬不同版本的Android系統(tǒng);3.避免X86架構(gòu)下軟件模擬ARM架構(gòu)造成的性能損失,盡可能接近真實(shí)運(yùn)行速度以具備實(shí)用價(jià)值。
1 Android SDK
Android,這一基于Linux操作系統(tǒng)的開源手機(jī)平臺(tái)是2007年11月5日由Google與34家軟硬件制商、電信運(yùn)營商同創(chuàng)建的開放手持設(shè)備聯(lián)盟(Open Handset Alliance,簡稱OHA)發(fā)布的。OHA在其后又發(fā)布了Android SDK——Android軟件開發(fā)工具包,Android SDK支持Windows、Linux等平臺(tái),涵蓋了X86架構(gòu)下所有常見的開發(fā)環(huán)境,集合了開發(fā)Android操作系統(tǒng)平下應(yīng)用軟件所需要各種軟件工具。
2 模擬運(yùn)行Android
使用Android SDK模擬運(yùn)行Android操作系統(tǒng)前應(yīng)注意運(yùn)行環(huán)境的配置。硬件方面,不同操作系統(tǒng)對CPU的管理機(jī)制不同,執(zhí)行同一操作時(shí)對指令集的調(diào)用方式也不同。若實(shí)現(xiàn)模擬運(yùn)行,會(huì)造成CPU指令的沖突,故開始前注意打開CPU硬件配置中的Virtual Technology功能(即“虛擬化技術(shù)”)。它允許CPU啟用支持虛擬技術(shù)的額外指令集,模擬多個(gè)獨(dú)立CPU并行運(yùn)行,使得通過一個(gè)CPU運(yùn)行多個(gè)操作系統(tǒng)成為可能。軟件方面,Android SDK是基于JAVA環(huán)境開發(fā)的,運(yùn)行前需要安裝JAVA JDK,并注意系統(tǒng)環(huán)境內(nèi)增配以下變量:(1)JAVA_HOME變量,變量值為JAVA JDK的安裝路徑;(2)classpath變量,變量值為:“.;%JAVA_HOME%\lib; ”(不包括引號),為Android SDK提供JAVA類庫地址;(3)Path變量,變量值為JAVA JDK的安裝路徑下的Bin文件夾。此外,實(shí)現(xiàn)模擬運(yùn)行需要安裝Android SDK中的以下模塊:(1)Android SDK starter package,包含工具包的圖形化操作主界面,方便調(diào)用配置相關(guān)軟件開發(fā)工具,其所在安裝路徑即為SDK主目錄;(2)Android SDK Platform-tools,配置所需的相關(guān)工具,安裝于SDK主目錄下;(3)Android SDK API Level,包含不同Android版本所需的應(yīng)用編程接口,應(yīng)根據(jù)想要模擬運(yùn)行的Android版本,選用不同的接口包,安裝于SDK主目錄下platforms目錄內(nèi);(4)Android SDK system img,包含不同Android操作系統(tǒng)的鏡像文件,選用時(shí)應(yīng)注意其對版本與Android SDK API Level一致,安裝于SDK主目錄下system-images目錄內(nèi)。準(zhǔn)備完成后,運(yùn)行SDK主目錄下的“AVD Manager.exe”即可啟動(dòng)Android模擬運(yùn)行的管理界面,通過“New”按鈕打開虛擬機(jī)參數(shù)配置卡片,設(shè)置名稱、版本、指令集、SD卡容量、屏幕、內(nèi)存等信息后完成新建虛擬機(jī),選“OK”回到主界面,即可選中建好的虛擬機(jī)通過“Start”按鈕運(yùn)行。至此,Android成功模擬運(yùn)行。此時(shí),在原X86架構(gòu)的操作系統(tǒng)中會(huì)識(shí)別為系統(tǒng)接入了一臺(tái)Android硬件設(shè)備,開發(fā)人員即可正常安裝應(yīng)用軟件并運(yùn)行、調(diào)試。
圖1
3 改進(jìn)兼容性
通過上述方式運(yùn)行的虛擬機(jī),Android SDK為其分配的System分區(qū)僅有128MB,不足以安裝測試大型應(yīng)用軟件。為擴(kuò)大其分區(qū)容量以提高兼容性,須以命令行的方式配置參數(shù)并調(diào)用SDK主目錄下tools中的“emulator.exe”來啟動(dòng)虛擬機(jī),命令格式為:emulator -avd <虛擬機(jī)名稱> -partition–size
圖2
4 提升運(yùn)行效率
由于Android SDK默認(rèn)采用在X86架構(gòu)下通過軟件模擬ARM架構(gòu)CPU及GPU的方式,導(dǎo)致虛擬機(jī)存在運(yùn)行效率低下的問題,在其虛擬機(jī)中軟件運(yùn)行速度遠(yuǎn)低于正常Android設(shè)備,影響對軟件的測試。通過安裝擴(kuò)展插件模擬特殊CPU的虛擬機(jī),可以避免這一問題。Intel Atom是Intel公司推出的基于X86架構(gòu)的移動(dòng)設(shè)備CPU,其指令集針對移動(dòng)設(shè)備的特性進(jìn)行過改進(jìn),引入了“二進(jìn)制轉(zhuǎn)換”(Binary Translation)這一功能,來解決x86無法直接運(yùn)行ARM庫的問題。與此同時(shí),Intel公司為在移動(dòng)設(shè)備中擴(kuò)大Atom的市場占有率,充分運(yùn)用Android的開源特性,為多個(gè)Android系統(tǒng)版本添加了對Atom的更好支持。采用Atom作為CPU的移動(dòng)設(shè)備和支持Atom的Android系統(tǒng)版本,都已在Android SDK中被添加了相關(guān)數(shù)據(jù)包。通過在Android SDK Manager中安裝Intel X86 Emulator Accelerator(HAXM)插件,并在Android SDK system img中添加Intel x86 Atom System Image系列鏡像,即可運(yùn)行采用Intel Atom CPU的虛擬機(jī),以此為紐帶,在Intel x86 Atom System Image涵蓋Android的版本中,可模擬運(yùn)行采用ATOM作為CPU的Android虛擬機(jī)。由于此類虛擬機(jī)架構(gòu)與x86類似,在原有開發(fā)環(huán)境中運(yùn)行效率高,運(yùn)行待測試軟件的速度接近真實(shí)速度,真正實(shí)現(xiàn)具有實(shí)用價(jià)值的Android軟件模擬測試環(huán)境。
參考文獻(xiàn):
[1]X86上的Android:性能與兼容可否兼得.www.igao7.com,2013-5-11.
作者單位:福建省福州大學(xué)空間中心,福州 350000