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