Android开发环境在Linux平台上的搭建
2016-09-10赵晓伟
赵晓伟
(云南机场集团有限责任公司 昆明 650211)
Android开发环境在Linux平台上的搭建
赵晓伟
(云南机场集团有限责任公司昆明650211)
随着移动应用和嵌入式应用的发展,Android+ARM逐渐取代Windows+Intel。Android的功能十分强大,已经成为当前开发的热点之一,并且必将成为软件行业的中坚力量。与Windows开发环境相比,Android系统的开发环境比较复杂,对一般的开发人员有一定的难度。为此,论文以Android 4.4和三星Exynos 4412为例主要介绍了如何从零开始搭建一个Android开发环境。
Android开发环境; Linux虚拟机; 源码编译
Class NumberTP391
1 引言
Android是Google于2007年发布的基于Linux平台的开源手机操作系统,Google公司定义其为:专门为移动终端打造的真正意义上的开源且系统完整的移动平台,而且不存在不同设备上的兼容性问题。在当前各大智能手机系统中,Android所占份额已稳居全球市场第一,凭借其系统架构和性能特点成为目前最具瞩目的手持设备操作系统[1~2]。
Android平台具有开源性,绝大部分API可以完全免费使用。Android的开源性决定了其天然的低成本,从而能降低手持设备的整体价格,增强了市场竞争力。另外,开源性也使厂商在基于Android提供的软件栈上自主开发和解决问题成为可能,这对手持设备制造商和控制设备厂商来说具有极大的吸引力。因而,基于Android平台应用程序的开发更加具有广阔的市场前景[3]。
Exynos 4412是三星在2012年初推出的首款四核处理器(ARM Cortex-A9核心),拥有32/32 KB I/D Cache, 1 MB L2 Cache,稳定运行最高主频1.6GHz;并且集成ARM Mali 400 MP图形处理核心(运行主频400MHz);采用32nm HKMG(高K金属栅极技术)制程,支持双通道LPDDR2 1066。首款采用Exynos 4412处理器的智能手机三星Galaxy S Ⅲ、Galaxy Note Ⅱ以及隆重上市的魅族MX四核版均获得了非常好的市场反响。随着各方面技术的成熟,Exynos 4412逐渐成为开发、控制领域的热门之选、Android开发人员搭建Android编译环境有两种可选方式,一是基于Linux服务器编译环境,二是在熟悉的Windows环境下安装Linux虚拟编译环境。Linux服务器的方式比较复杂,需要对Linux系统和命令比较熟悉。而很多开发者对Windows非常熟悉,因此本文着重介绍第二种方案:在Windows下VMware Workstation虚拟机软件上的Linux环境下实现基于三星Exynos 4412硬件平台开发环境搭建[4]。
2 Android系统架构和Exynos 4412特点
Android系统架构和其它操作系统一样[5],采用了分层的架构,如图1所示。从架构图可以看出,Android系统分为四个层,从顶层到底层分别是应用程序层、应用程序框架层、系统运行库层和Linux核心层。这些在搭建开发环境时需要有清楚的认识。
图1 Android系统架构[6]
图2 Exynos 4412内部结构
Exynos 4412是基于ARM架构的,与Linux操作系统是天和之作。从图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接口、高音质音频接口、SD接口、10M/100M以太网接口、USB2.0接口、DDR RAM接口、摄像头接口,以及工业控制中不可缺少的I2C、SPI、UART接口和RTC时钟、定时器、PWM等,这些外设充分满足了常用的嵌入式智能控制的需求,使得设计人员只需要熟悉一款SOC即可完成绝大多数设计项目。
3 Android环境搭建的软件准备
在Windows下搭建android开发环境,需要做Windows和Linux两方的软件准备[7](软件的版本号均为本文中环境搭建实际可行的版本,但不唯一。
1) Windows下的软件准备:
· VMware7.0:Windows平台上的虚拟机软件,用于安装Linux系统。
· Linux ubuntu12.04镜像:Linux操作系统,Android源码编译的必须环境。
· JDK:JDK提供Java编译环境,编译android源码必备。新版本的JDK自动包含JRE,JRE提供Java运行环境。
· Eclipse:Java集成开发工具。
· Android SDK:是Eclipse的一个Android开发工具插件,提供Android应用开发环境和工具。
2) Linux下的软件准备:
· 交叉编译工具链(arm-2009q3):编译、链接、处理和调试跨平台体系结构的程序代码。
· JDK:同Windows。
· mkimage:Android镜像生成工具。
4 Android环境搭建流程
在开发环境软件准备完成后,就可以进行Android环境的搭建工作,其主要流程如图3所示,在搭建过程中有许多细节需要特别注意。
图3 Android环境搭建流程示意图
在安装Linux虚拟机时分配给Linux系统的磁盘空间应当根据需要编译的Android版本变更大小,分配空间过小则会导致编译时所需空间不足从而不能正常工作,一般来说Android4.0需要至少16GB磁盘空间,Android4.2需要至少40GB,本文中所编译的Android4.4则需要至少80GB。
在每一步骤完成之后都应当进行安装成功与否的检查,这个检查是必要的,否则在后期开发过程中极有可能出现错误却始终找不出错误出在哪一环节。
4.1Linux环境配置[8~9]
在Linux下安装必须的库文件,配置环境变量,用到的命令如下所示:
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
详细的编译环境搭建可以参考google 的官网:
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) 配置环境变量
在profile文件前面添加下列内容:
~$ cd /etc
~$ sudo cp profile profile-bak
~$ sudo chmod 777 profile
~$ vi etc/profile
第一行代码中的路径与java的实际安装路径保持一致。
第一次在Linux环境下编译Android内核大约需要半小时,而编译Android源码则大约需要8小时左右,需要耐心等待并随时处理编译过程中出现的错误,查找可行的解决办法,在第一次编译源码通过后,此后的编译时间将会大大降低。
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环境配置[10~11]
1) 下载Windows版本JDK并安装,然后进行如下操作:
(1)我的电脑→属性→高级→环境变量→系统变量中添加以下环境变量:
(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:前面四步设置环境变量对搭建Android开发环境不是必须的,可以跳过。
安装完成之后,可以再检查JDK是否安装成功。打开cmd窗口,输入java-version查看JDK的版本信息。出现类似下面的提示信息表示安装成功了,如下所示。
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/下载最新的版本进行安装,根据自己的Windows分为32位和64位版本。
3) Android SDK安装
打开Eclipse,运行Android SDK Manager,选择自己要下载的sdk以及相应的Tools,选择好需要的工具后点击Install。如图4所示。
图4 Eclipse中Android SDK的安装
5 源码编译
把源码包复制到开发环境的目录底下,本例中android_release_4G-150415.tgz为android源码包,kernel_v04_release_4G.tgz为内核源码包。
解压编译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
说明编译成功。
编译内核和编译android源码是一样的,也是先解压源码,在进入到解压目录中执行make就可以了。
注意,android源码的编译目录是. ./build_android.sh smdk4x12,而kernel编译命令是make。最后会在目录kernel/arch/arm/boot/下生成zImage镜像文件。第一次编译大概需要半个小时。
6 结语
中国很多嵌入式工程师都是从51单片机入手的,而51单片机只能跑裸机程序。随着智能需求的提升,系统复杂度越来越高,尤其是手机、平板电脑、智能电视等高端数码产业的高速发展阶段,迫使嵌入式逐渐由常规模式向智能模式转变,传统的单片机、单核处理器的能力已无力支撑未来人们的需求。以三星Exynos 4412为代表的多核处理器以其高效、高集成度、低功耗的特点满足了当前嵌入式行业的需求。
因此,本文以Exynos 4412为核心平台,基于Windows系统搭建的Android开发环境充分利用了开发人员已有的Windows知识,最大程度上减小了对Linux的陌生感和依赖,这对提高开发效率有着很重要的意义,同时对众多51嵌入式的开发者也有着实际指导意义。
[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应用开发揭秘[M].北京:机械工业出版社,2010.
YANG Fengsheng. Android Unleashed[M]. Beijing: China Machine Press,2010.
[7] 王柯,马宏斌.一种基于Android平台数据采集系统的设计与实现[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嵌入式系统程序开发(基于Cortex-A8)[M].北京:机械工业出版社,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系统移植和驱动开发[M].北京:电子工业出版社,2013:112-113.
ZHENG Meng. Android System Porting and Driver Development[M]. Beijing: Electronic Industry Press,2013:112-113.
[10] 汪永松.Android平台开发之旅[M].北京:机械工业出版社,2011:53-54.WANG Yongsong. Android Platform Development Guide[M]. Beijing: China Machine Press,2011:53-54.
[11] 魏永明.Linux设备驱动程序[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