基础篇实战Android编程——手把手教你做出商用软件2第1章Android开发起步本章将要介绍的是Android开发起步的相关知识,首先将会对Android平台进行简单的介绍,其中包括Android的背景及其应用程序的框架。然后会向读者讲解如何搭建Android的开发环境、如何在Ecl中创建一个项目,以及如何使用Android平台提供的工具调试和监控应用程序。1.1Android平台简介Android平台自发布以来就一直吸引着广大开发者的目光,本节就对Android平台做简单的介绍,读者通过本节的学习可以对Android平台的来龙去脉及内部结构有比较透彻的了解。1.1.1Android背景介绍Android是一个开放的手机操作系统平台,为移动设备提供了一个包含了操作系统、中间件及应用程序的软件叠层架构。AndroidSDK为开发人员使用Java语言编写Android平台下的应用程序提供了必要的工具和API。1.Android的诞生Android也是一家公司的名称,这家公司的创始人名叫AndyRubin。AndyRubin原来是苹果的一名工程师,后来创办过几家公司。在创建Android公司时,AndyRubin准备打造一个移动终端平台并将其对开发人员开放,后来Google收购了该公司,于是就有了今天如日中天的Android。2.Android的特性Android自推出以来如此受追捧不仅仅是因为网络巨头Google的大力扶持,Android自身所具有的特性才是吸引全球精英开发者的更重要原因。¾应用程序框架:可以方便地重用和替换手机组件。¾Dalvik虚拟机:专为移动设备优化过的虚拟机。¾内部集成浏览器:基于开源的WebKit引擎。¾优化的图形系统:其中自定义了2D图形库,3D图形库基于OpenGLES1.0,可选硬件加速。第1章Android开发起步3¾SQLite:集成了轻量级数据库管理系统。¾多媒体支持:支持常见的音频和视频,以及各种图片格式,如MPEG4,H.264,MP3,AAC,AMR,JPG,PNG,GIF等。¾GSM技术、蓝牙、EDGE、3G和WiFi:需要硬件支持。¾摄像头、GPS、罗盘、加速度计:需要硬件支持。¾完备的开发环境:包括设备模拟器、调试工具、内存和性能分析工具,以及用于Eclipse开发环境的插件。3.Android的优点目前市面上的手机操作系统除了Android,还有Symbian、iPhone等,与这些手机操作系统相比,Android具有如下的优点。(1)真正开放Android平台提供了从底层操作系统到上层的程序界面的所有软件,使用这个平台无须缴纳任何授权许可费用,同时不同的厂商还可以根据自身需求修改和扩展Android平台。(2)应用程序相互平等在Android平台下,除了应用程序运行的载体虚拟机之外,其他的软件是完全平等的。例如可以自己开发收发E-mail的应用程序来替换系统提供的相应软件。(3)应用程序之间沟通无界限在Android平台下开发应用程序,可以方便地实现应用程序之间的数据共享,只需要经过简单的声明或操作,应用程序就可以访问或调用其他应用程序的功能,或者将自己的部分数据和功能提供给其他应用程序使用。1.1.2Android平台架构在1.1.1节介绍了Android平台的诞生及其特性和优点,本节将会对其内部的系统框架进行分析。了解其框架有助于更好地在Android平台上开发应用。Android平台的应用程序框架如图1-1所示。Android平台架构中的各模块介绍如下。1.应用程序Android平台搭载了一系列的核心应用程序,如E-mail客户端、日历、浏览器、电话簿等。这些应用程序都是用Java语言开发的。2.应用程序框架通过提供一个开放的开发平台,Android使开发极其丰富和新颖的应用程序成为可能。开发人员可以自由地使用设备的硬件、访问位置信息、运行后台服务、设置闹钟、添加状态栏的提醒等。实战Android编程——手把手教你做出商用软件4图1-1Android平台的应用程序框架同时,开发人员可以像核心应用程序那样随意地使用框架的API来实现自己的功能,应用程序框架对组件之间的重用做了简化。在Android平台下,任何应用程序都可以发布自己的功能模块,其他的应用程序依据一定的安全限制就可以无阻碍地访问这些模块。同时这种机制还允许用户随意更换组件。3.库Android包含一个可供不同组件调用的C/C++库,这些功能模块通过应用程序框架暴露给开发者。下面列举一些主要的核心库。¾系统C库(libc),标准C系统库的一个BSD系统的衍生实现,并为基于Linux的嵌入设备做了优化。¾媒体库(MediaLibraries),基于PacketVideo的OpenCORE,该库支持多种音频和视频格式,以及静态的图片文件。¾SurfaceManager,主要负责管理针对显示系统的访问及无缝地混合来自不同应用程序的2D和3D图层。¾SGL,2D图像引擎。¾OpenGLES,一个基于OpenGLES1.0API的实现,该库或者使用3D硬件加速,或者使用内置的、经过高度优化过的3D软件光栅处理。¾FreeType,提供对点阵字和向量字的绘制支持。¾SQLite,一个面向所有应用程序的轻量级关系型数据库引擎。4.Android运行时在Android平台下,每个应用程序都在自己的进程中运行,而且系统为其分配了专有的Dalvik虚拟机,Dalvik虚拟机在设计时就添加了可以在一个设备上运行多个虚拟机的特性。Dalvik虚拟机执行.dex格式的文件,这类文件经过了优化,占有的内存非常小。与Java虚拟机是基于栈的不同,Dalvik虚拟机是基于寄存器的,Dalvik虚拟机并不直接执行编译后的Java类文件,而是通过内置的dx工具将其转换为“.dex”格式后再执行。Dalvik虚拟机依赖于Linux核心部件来实现线程管理等功能。第1章Android开发起步55.LinuxKernelAndroid平台使用Linux2.6版本来构建诸如安全性、内存管理、进程管理、网络协议栈和驱动模型等系统服务,Linux核心在硬件层和软件层之间建立了一个抽象层,使得Android平台的硬件细节对开发人员透明化。1.2Android开发环境的搭建本书在前面的章节介绍了Android平台的相关知识,了解了Android的背景知识及平台架构,本节将向读者介绍如何在Eclipse中搭建自己的Android开发环境,同时还将通过一个“HelloAndroid”项目向读者演示Android平台下应用程序的开发过程。1.2.1相关软件的下载与安装搭建Android开发环境的第一步是下载与开发环境有关的软件资源,这些资源主要包括JDK、Eclipse、AndroidSDK及Android的支持插件。1.JDK的下载与安装Android平台下应用程序的开发是采用Java语言的,所以首先需要下载并安装JDK。打开浏览器,在地址栏输入如下地址并访问:,打开后的页面如图1-2所示。图1-2JDK下载界面1单击如图1-2所示的“DownloadJDK”按钮即可进入下载界面,选择操作系统平台之后,就可以下载JDK了,目前昀新的JDK版本为JDK6Update18。双击并运行下载好的JDK安装文件,按照提示将JDK安装到指定的文件夹,本书中将其安装到了C:\ProgramFiles\Java\jdk1.6.0_18目录下。实战Android编程——手把手教你做出商用软件62.Eclipse的下载与安装打开浏览器,在地址栏输入,在下载界面找到EclipseClassic3.5.2,单击下载链接,将Eclipse下载到电脑上。Eclipse不需要安装,只需将下载到电脑上的压缩包解压到硬盘上某个目录即可,本节中将其解压到F:\eclipse目录下。3.AndroidSDK的下载与安装打开浏览器,在地址栏输入,打开AndroidSDK的下载页面,将android-sdk_r05-windows.zip下载到电脑上,并将其解压到硬盘上某个位置,本书中为F:\android-sdk-windows。运行F:\android-sdk-windows目录下的SDKSetup.exe,程序将自动检测是否有更新的SDK版本可供下载,检查结果如图1-3所示。图1-3运行SDKSetup示意图单击如图1-3所示的“AcceptAll”单选按钮,并单击“Install”按钮安装昀新版本的SDK。单击“Install”按钮后如图1-4所示。昀新的SDK文件将会下载到F:\android-sdk-windows目录中。在桌面上右键单击“我的电脑”,依次选择“高级”-“环境变量”-“系统变量”,在系统变量Path中添加“F:\android-sdk-windows\tools”并单击“确定”按钮,如图1-5所示。图1-4AndroidSDK下载示意图图1-5将tools路径添加到系统变量Path中第1章Android开发起步74.ADT的下载与安装下面介绍在Eclipse环境下进行Android开发所必需的插件ADT(AndroidDevelopmentTools)的安装,主要通过如下几个步骤来完成。运行F:\eclipse目录下的eclipse.exe,单击“Help-InstallNewSoftware…”,弹出如图1-6所示的界面。单击“Add…”按钮,弹出如图1-7所示的添加新站点的界面,在“Name”文本框中输入站点名称(本书为ADT,读者可自行取名),在“Location”文本框中输入,输入完成后单击“OK”按钮。图1-6InstallNewSoftware界面图1-7添加Site界面Eclipse会自动连接该站点,并将连接结果显示在如图1-8所示的列表中。单击“Next”按钮,将弹出显示所要安装的插件的细节内容的界面,如图1-9所示。图1-8获取ADT信息示意图图1-9显示所要安装的插件细节的界面继续单击“Next”按钮,将弹出如图1-10所示的确认安装插件界面,选中“Iacceptthetermsofthelicenseagreements”单选按钮并单击“Finish”按钮,Eclipse将会进行ADT和DDMS插件的安装,安装进度如图1-11所示。在安装的过程中会弹出如图1-12所示的插件中包含未注册内容的警告,单击“OK”按钮继续安装。安装结束后会弹出如图1-13所示的是否重启Eclipse的提示框,单击“Yes”重启Eclipse。实战Android编程——手把手教你做出商用软件8图1-10确认安装插件界面图1-11正在安装插件界面图1-12弹出未注册警告提示框图1-13弹出重启Eclipse提示框Eclipse重启之后,选择“Window”-“Preferences”菜单选项,如图1-14所示。在Preferences菜单左侧选择“Android”,Eclipse会提示还没有指定AndroidSDK的路径,在如图1-15所示的界面中输入AndroidSDK的路径,确认后完成ADT插件的安装。图1-14Preferences菜单界面图1-15配置AndroidSDK的路径1.2.2虚拟设备的创建和使用使用AndoidSDK开发应用程序需要进行测试,Android为开发人员提供了可以在电脑上直接测试应用程序的虚拟设备AVD(AndroidVirtualDevice),或称做模拟器。使用AVD可以方便地对应用程序进行测试。本节介绍如何在Android平台下创建AVD。1.Eclipse环境下AVD的创建首先介绍如何在Eclipse环境下