趙曉偉
(云南機場集團有限責任公司 昆明 650211)
?
Android開發(fā)環(huán)境在Linux平臺上的搭建
趙曉偉
(云南機場集團有限責任公司昆明650211)
隨著移動應用和嵌入式應用的發(fā)展,Android+ARM逐漸取代Windows+Intel。Android的功能十分強大,已經(jīng)成為當前開發(fā)的熱點之一,并且必將成為軟件行業(yè)的中堅力量。與Windows開發(fā)環(huán)境相比,Android系統(tǒng)的開發(fā)環(huán)境比較復雜,對一般的開發(fā)人員有一定的難度。為此,論文以Android 4.4和三星Exynos 4412為例主要介紹了如何從零開始搭建一個Android開發(fā)環(huán)境。
Android開發(fā)環(huán)境; Linux虛擬機; 源碼編譯
Class NumberTP391
Android是Google于2007年發(fā)布的基于Linux平臺的開源手機操作系統(tǒng),Google公司定義其為:專門為移動終端打造的真正意義上的開源且系統(tǒng)完整的移動平臺,而且不存在不同設備上的兼容性問題。在當前各大智能手機系統(tǒng)中,Android所占份額已穩(wěn)居全球市場第一,憑借其系統(tǒng)架構(gòu)和性能特點成為目前最具矚目的手持設備操作系統(tǒng)[1~2]。
Android平臺具有開源性,絕大部分API可以完全免費使用。Android的開源性決定了其天然的低成本,從而能降低手持設備的整體價格,增強了市場競爭力。另外,開源性也使廠商在基于Android提供的軟件棧上自主開發(fā)和解決問題成為可能,這對手持設備制造商和控制設備廠商來說具有極大的吸引力。因而,基于Android平臺應用程序的開發(fā)更加具有廣闊的市場前景[3]。
Exynos 4412是三星在2012年初推出的首款四核處理器(ARM Cortex-A9核心),擁有32/32 KB I/D Cache, 1 MB L2 Cache,穩(wěn)定運行最高主頻1.6GHz;并且集成ARM Mali 400 MP圖形處理核心(運行主頻400MHz);采用32nm HKMG(高K金屬柵極技術(shù))制程,支持雙通道LPDDR2 1066。首款采用Exynos 4412處理器的智能手機三星Galaxy S Ⅲ、Galaxy Note Ⅱ以及隆重上市的魅族MX四核版均獲得了非常好的市場反響。隨著各方面技術(shù)的成熟,Exynos 4412逐漸成為開發(fā)、控制領(lǐng)域的熱門之選、Android開發(fā)人員搭建Android編譯環(huán)境有兩種可選方式,一是基于Linux服務器編譯環(huán)境,二是在熟悉的Windows環(huán)境下安裝Linux虛擬編譯環(huán)境。Linux服務器的方式比較復雜,需要對Linux系統(tǒng)和命令比較熟悉。而很多開發(fā)者對Windows非常熟悉,因此本文著重介紹第二種方案:在Windows下VMware Workstation虛擬機軟件上的Linux環(huán)境下實現(xiàn)基于三星Exynos 4412硬件平臺開發(fā)環(huán)境搭建[4]。
Android系統(tǒng)架構(gòu)和其它操作系統(tǒng)一樣[5],采用了分層的架構(gòu),如圖1所示。從架構(gòu)圖可以看出,Android系統(tǒng)分為四個層,從頂層到底層分別是應用程序?qū)?、應用程序框架層、系統(tǒng)運行庫層和Linux核心層。這些在搭建開發(fā)環(huán)境時需要有清楚的認識。
圖1 Android系統(tǒng)架構(gòu)[6]
圖2 Exynos 4412內(nèi)部結(jié)構(gòu)
Exynos 4412是基于ARM架構(gòu)的,與Linux操作系統(tǒng)是天和之作。從圖2可以看出,Exynos 4412的集成度非常高,在整顆32nm工藝的SOC中,集成了4顆ARM Cortex A9核、32/32 KB I/D Cache、1 MB L2 CacheARM、Mali 400 MP圖形處理核心、HDMI 1.4接口、高音質(zhì)音頻接口、SD接口、10M/100M以太網(wǎng)接口、USB2.0接口、DDR RAM接口、攝像頭接口,以及工業(yè)控制中不可缺少的I2C、SPI、UART接口和RTC時鐘、定時器、PWM等,這些外設充分滿足了常用的嵌入式智能控制的需求,使得設計人員只需要熟悉一款SOC即可完成絕大多數(shù)設計項目。
在Windows下搭建android開發(fā)環(huán)境,需要做Windows和Linux兩方的軟件準備[7](軟件的版本號均為本文中環(huán)境搭建實際可行的版本,但不唯一。
1) Windows下的軟件準備:
· VMware7.0:Windows平臺上的虛擬機軟件,用于安裝Linux系統(tǒng)。
· Linux ubuntu12.04鏡像:Linux操作系統(tǒng),Android源碼編譯的必須環(huán)境。
· JDK:JDK提供Java編譯環(huán)境,編譯android源碼必備。新版本的JDK自動包含JRE,JRE提供Java運行環(huán)境。
· Eclipse:Java集成開發(fā)工具。
· Android SDK:是Eclipse的一個Android開發(fā)工具插件,提供Android應用開發(fā)環(huán)境和工具。
2) Linux下的軟件準備:
· 交叉編譯工具鏈(arm-2009q3):編譯、鏈接、處理和調(diào)試跨平臺體系結(jié)構(gòu)的程序代碼。
· JDK:同Windows。
· mkimage:Android鏡像生成工具。
在開發(fā)環(huán)境軟件準備完成后,就可以進行Android環(huán)境的搭建工作,其主要流程如圖3所示,在搭建過程中有許多細節(jié)需要特別注意。
圖3 Android環(huán)境搭建流程示意圖
在安裝Linux虛擬機時分配給Linux系統(tǒng)的磁盤空間應當根據(jù)需要編譯的Android版本變更大小,分配空間過小則會導致編譯時所需空間不足從而不能正常工作,一般來說Android4.0需要至少16GB磁盤空間,Android4.2需要至少40GB,本文中所編譯的Android4.4則需要至少80GB。
在每一步驟完成之后都應當進行安裝成功與否的檢查,這個檢查是必要的,否則在后期開發(fā)過程中極有可能出現(xiàn)錯誤卻始終找不出錯誤出在哪一環(huán)節(jié)。
4.1Linux環(huán)境配置[8~9]
在Linux下安裝必須的庫文件,配置環(huán)境變量,用到的命令如下所示:
1) 安裝必須的庫文件命令(基于64-bit VM,ubuntu 12.04)
~$ sudo apt-get install git gnupg flex bison gperf build-essential zip curl libc6-dev libncurses5-dev:i386 x11proto-core-dev libx11-dev:i386 libreadline6-dev:i386 libgl1-mesa-glx:i386 libgl1-mesa-dev g++-multilib mingw32 tofrodos python-markdown libxml2-utils xsltproc zlib1g-dev:i386
2) 安裝編譯kernel時使用make menuconfig所需的庫
~$ sudo apt-get install libncurses5-dev
3) 安裝其它所需要的庫
~$ sudo apt-get install git-core gnupg flex bison gperf
~$ sudo apt-get install build -essential zip curl zlib1g-dev libc6-dev lib32ncurses5-dev
~$ sudo apt-get install ia32-libs x11proto-core-dev libx11-dev
~$ sudo apt-get install lib32readline-gplv2-dev lib32z1-dev libgl1-mesa-dev gcc-multilib
~$ sudo apt-get install g++-multilib mingw32 tofrodos python-markdown libxml2-utils
~$ sudo apt-get install xsltproc sharutils
詳細的編譯環(huán)境搭建可以參考google 的官網(wǎng):
http://source.android.com/source/initializing.html
4) 安裝jdk
在/usr下新建java目錄;
$ cd /usr
$ sudo mkdir java
將jdk-6u29-linux-i586.bin放在該目錄下;
$ sudo cp jdk-6u29-linux-i586.bin /usr/java
$ cd /usr/java
$ sudo ./ jdk-6u29-linux-i586.bin
若是新裝的VM Wave機器,則要安裝vim:
$ sudo apt-get install vim
5) 配置環(huán)境變量
在profile文件前面添加下列內(nèi)容:
~$ cd /etc
~$ sudo cp profile profile-bak
~$ sudo chmod 777 profile
~$ vi etc/profile
第一行代碼中的路徑與java的實際安裝路徑保持一致。
第一次在Linux環(huán)境下編譯Android內(nèi)核大約需要半小時,而編譯Android源碼則大約需要8小時左右,需要耐心等待并隨時處理編譯過程中出現(xiàn)的錯誤,查找可行的解決辦法,在第一次編譯源碼通過后,此后的編譯時間將會大大降低。
Export java_home=/usr/java/jdk1.6.0_29
Exprot jre_home=$java_home/jre
Export classpath=$java_home/lib:$jre_home/lib:$classpath
Exprot path=$java_home/bin:$path:$jre_home/bin
4.2Windows環(huán)境配置[10~11]
1) 下載Windows版本JDK并安裝,然后進行如下操作:
(1)我的電腦→屬性→高級→環(huán)境變量→系統(tǒng)變量中添加以下環(huán)境變量:
(2)JAVA_HOME值為:C:Program FilesJavajdk1.7.0_45(你安裝JDK的目錄).
(3)CLASSPATH值為:.;%JAVA_HOME%lib ools.jar;%JAVA_HOME%libdt.jar;
(4)Path:在開始追加%JAVA_HOME%in;
(5)NOTE:前面四步設置環(huán)境變量對搭建Android開發(fā)環(huán)境不是必須的,可以跳過。
安裝完成之后,可以再檢查JDK是否安裝成功。打開cmd窗口,輸入java-version查看JDK的版本信息。出現(xiàn)類似下面的提示信息表示安裝成功了,如下所示。
Java version “1.7.0_51”
Java(TM) SE Runtime Environment (build 1.7.0_51-b13)
Java HotSpot(TM)Client VM (build 24.51-b03,mixed mode,sharing)
2) Eclipse安裝
可以去http://www.eclipse.org/downloads/下載最新的版本進行安裝,根據(jù)自己的Windows分為32位和64位版本。
3) Android SDK安裝
打開Eclipse,運行Android SDK Manager,選擇自己要下載的sdk以及相應的Tools,選擇好需要的工具后點擊Install。如圖4所示。
圖4 Eclipse中Android SDK的安裝
把源碼包復制到開發(fā)環(huán)境的目錄底下,本例中android_release_4G-150415.tgz為android源碼包,kernel_v04_release_4G.tgz為內(nèi)核源碼包。
解壓編譯android android_release_4G-150415.tgz:
tar-xzvf android_release_4G-150415.tgz
用. ./build_android.sh smdk4x12這個命令進行全局編譯,第一次編譯大概需要8個小時。以后再編譯大概20多分鐘左右就行了。編譯完成后會提示:
Install system fs image: out/target/product/smdk4x12/system.img
out/target/product/smdk4x12/system.img+ total size is 175913800
說明編譯成功。
編譯內(nèi)核和編譯android源碼是一樣的,也是先解壓源碼,在進入到解壓目錄中執(zhí)行make就可以了。
注意,android源碼的編譯目錄是. ./build_android.sh smdk4x12,而kernel編譯命令是make。最后會在目錄kernel/arch/arm/boot/下生成zImage鏡像文件。第一次編譯大概需要半個小時。
中國很多嵌入式工程師都是從51單片機入手的,而51單片機只能跑裸機程序。隨著智能需求的提升,系統(tǒng)復雜度越來越高,尤其是手機、平板電腦、智能電視等高端數(shù)碼產(chǎn)業(yè)的高速發(fā)展階段,迫使嵌入式逐漸由常規(guī)模式向智能模式轉(zhuǎn)變,傳統(tǒng)的單片機、單核處理器的能力已無力支撐未來人們的需求。以三星Exynos 4412為代表的多核處理器以其高效、高集成度、低功耗的特點滿足了當前嵌入式行業(yè)的需求。
因此,本文以Exynos 4412為核心平臺,基于Windows系統(tǒng)搭建的Android開發(fā)環(huán)境充分利用了開發(fā)人員已有的Windows知識,最大程度上減小了對Linux的陌生感和依賴,這對提高開發(fā)效率有著很重要的意義,同時對眾多51嵌入式的開發(fā)者也有著實際指導意義。
[1] Cheng Y H, Kuo W K, Su S L. An Android System Design and Implementation for Telematics Services[C]//Intelligent Computing and Intelligent Systems (ICIS), 2010 IEEE International Conference on. IEEE,2010,2:206-210.
[2] Yi W J, Jia W, Saniie J. Mobile Sensor Data Collector Using Android Smartphone[C]//Circuits and Systems (MWSCAS), 2012 IEEE 55th International Midwest Symposium on. IEEE,2012:956-959.
[3] Gong L, Zhou C. Development and Research of Mobile Termination Application Based on Android[J]. Computer and Modernization,2008,8(26):85-88.
[4] Sakamoto D, Kanda T, Ono T, et al. Android as a Telecommunication Medium with a Uuman-like Presence[C]//Human-Robot Interaction (HRI),2007 2nd ACM/IEEE International Conference on. IEEE,2007:193-200.
[5] Liu J, Yu J. Research on Development of Android Applications[C]//2011 Fourth International Conference on Intelligent Networks and Intelligent Systems. IEEE,2011:69-72.
[6] 楊豐盛.Android應用開發(fā)揭秘[M].北京:機械工業(yè)出版社,2010.
YANG Fengsheng. Android Unleashed[M]. Beijing: China Machine Press,2010.
[7] 王柯,馬宏斌.一種基于Android平臺數(shù)據(jù)采集系統(tǒng)的設計與實現(xiàn)[J].測繪與空間地理信息,2014,10:29-32.
WANG Ke, MA Hongbin. Design and Implementation of a Data Acquisition System Based on Android Platform[J]. Geomatics & Spatial Information Technology,2014,10:29-32.
[8] 胡文,寧世勇,李明俊.Android嵌入式系統(tǒng)程序開發(fā)(基于Cortex-A8)[M].北京:機械工業(yè)出版社,2013:24-25.
HU Wen, NING Shiyong, LI Mingjun. Android Embedded System Development(base on Cortex-A8)[M]. Beijing: China Machine Press,2013:24-25.
[9] 鄭萌.Android系統(tǒng)移植和驅(qū)動開發(fā)[M].北京:電子工業(yè)出版社,2013:112-113.
ZHENG Meng. Android System Porting and Driver Development[M]. Beijing: Electronic Industry Press,2013:112-113.
[10] 汪永松.Android平臺開發(fā)之旅[M].北京:機械工業(yè)出版社,2011:53-54.WANG Yongsong. Android Platform Development Guide[M]. Beijing: China Machine Press,2011:53-54.
[11] 魏永明.Linux設備驅(qū)動程序[M].北京:中國電力出版社,2006:79-80.
WEI Yongming. Linux Device Drivers[M]. Beijing: China Electric Power Press,2006:79-80.
Establishment of An Android Development Environment on Linux Platform
ZHAO Xiaowei
(Yunnan Airport Group Co., LTD, Kunming650211)
With the development of mobile applications and embedded applications, the union of Android and ARM gradually replaced the union of Windows and Intel. The function of Android is very powerful, the development based on Android has become one of the hot spots currently, and will become the backbone of the software industry. Compared with the Windows development environment, the development environment of Android system is more complex, and it has a certain difficulty for the general developer. For this purpose, this paper takes Android 4.4 and Samsung Exynos 4412 as an example to introduce how to build a Android development environment from scratch.
Android development environment, Linux virtual machine, compiling of the source code
2016年2月11日,
2016年3月15日
趙曉偉,男,副高級概預算工程師,研究方向:工程合同、招標、造價和項目管理。
TP391
10.3969/j.issn.1672-9722.2016.08.046