第2章 第一个Android程序
通过第1章的学习,我们对Android系统有了一定的了解。本章我们要开始实现自己的第一个Android程序。所以,首先要做好准备工作:包括Android开发系统的需求、一些开发包的下载及开发工具的安装,等等,下面将一一介绍。
2.1 开发Android之前的准备工作
俗话说:工欲善其事,必先利其器。在开发自己的第一个Android程序之前,首先要做好相应的准备工作。例如,Android开发对系统的需求,以及开发Android所需要的软件包和工具。
在系统方面,Windows XP及以上的版本、苹果系统(Mac OS)、Linux等都可以,配置最好相对要好一点,这样模拟器的运行就会快一点。本书采用的是微软的Window 7系统。
软件包也是开发Android程序很重要的一部分,我们需要哪些软件包和工具呢?如下所示。
❑ JDK 1.6。这个是Java必备的软件包,从前面知道,Android的应用程序都是用Java开发的,所以Android的开发也要有Java的开发环境。其下载地址为:http://www.oracle.com/technetwork/java/javase/downloads/ea-jsp-142245.html,如图2.1所示。
图2.1 JDK下载
❑ Android SDK。这是Google为Android提供的一系列包和一些类,要安装这个才能进行Android开发,才能看到Android的模拟环境。其下载地址为:http://developer.android.com/sdk/index.html,如图2.2所示。
图2.2 SDK下载
❑ 开发工具Eclipse。所有代码的书写,以及程序的调试都在这个开发工具中完成,Eclipse是一个很强大的开发工具,也可以下载一些Google提供的插件安装在它上面,如即将提到的ADT,其下载地址为http://www.eclipse.org/downloads/,如图2.3所示。
图2.3 Eclipse下载
❑ 开发工具ADT。ADT是Google提供的基于Eclipse的Android开发的插件,可以以插件的形式把它结合到Eclipse上。ADT可以帮助我们提高Android程序的编写速度,其下载地址为https://dl-ssl.google.com/android/eclipse/。
这些都是开发Android必须要准备的开发包和开发工具,知道这些必备工具之后,就可以搭建Android开发环境,下一节将学习Android开发环境的搭建。
2.2 Android开发平台的搭建
在2.1节讲到了Android开发的一些必备开发包及工具,下面将分别说明它们的安装,以及怎么把Android的SDK和ADT集合到Eclipse中。
2.2.1 JDK安装及配置Java开发环境
从前面的讲解已经知道,Android的开发需要有Java的开发环境,所以这里首先讲的是JDK的安装和Java开发环境的配置。安装步骤如下:
(1)双击已经下载的JDK,会弹出一个安装的指示。
(2)安装JDK,它包括两部分:JDK和JRE。一般把这两个部分安装在同一个目录下,如果安装在C盘下,只要单击“下一步”按钮,就可以安装成功。
(3)Java开发环境变量的配置,在“我的电脑”图标上单击鼠标右键,在弹出的快捷菜单中选择“属性”命令,在弹出的对话框中选择“高级”选项卡,单击“环境变量”按钮,弹出“环境变量”对话框。在“系统变量”中找到“Path”这个变量名,如图2.4所示(如果没有找到这个变量名可以自己新建一个,一般都会存在的)。找到JDK安装目录下的bin文件夹,复制路径,编辑Path路径粘贴到其中,如果有多个,以“;”分开,添加完以后单击“确定”按钮;同样在“系统变量”中找到classPath变量名(如果没有同样可以新建),如图2.5所示,找到JDK目录下的lib文件夹,以后的步骤同上。
(4)安装好JDK并且配置好环境变量之后,选择“开始”→“运行”命令,输入cmd进行测试,输入“java-version”按回车键后,会看到如图2.6所示的信息。
图2.4 Path变量配置
图2.5 classPath变量配置
图2.6 检测JDK是否安装成功
通过上面的几个步骤就把Java的运行环境安装好了,接下来安装Java的开发工具Eclipse。
2.2.2 Eclipse的安装及其汉化
Eclipse的安装非常简单,下载完解压即可。目前,Eclipse最新的版本是3.7,并且是英文版,对于英语不是很好的读者来说,应用英文版的软件依然是一件很头疼的事情,何况Eclipse的功能又如此强大,如果我们能把它变为中文版就更完美了。下面来简单说明一下Eclipse的汉化。
(1)首先下载一个汉化包,解压以后会得到features文件夹和plugins文件夹,把它们放在同一个文件夹中。
(2)在Eclipse文件夹中找到一个名为dropins的文件夹,在其中新建一个扩展名为link的文件,在文件中输入汉化包的路径,如path=..\\myplugins\\language。
(3)再打开Eclipse就是中文版了,如图2.7所示。
图2.7 Eclipse的汉化
至此,JDK、环境变量、Eclipse都已经准备好了。接下来最重要的就是安装Android的开发环境SDK及工具ADT。
2.2.3 Android SDK与ADT的安装与配置
SDK和ADT的安装是开发Android程序的最后一个步骤,把SDK和ADT安装好了以后,Android的开发平台就完全搭建好了,就可以写自己的第一个Android程序了。
1.Android SKD的安装
(1)把下载好的压缩包解压,运行SDK Manager.exe。
(2)选择“Available packages”选项可以看到Android的所有版本,可以根据自己的需要去选择,如图2.8所示。在图2.8中只看到了几个,因为这里已经安装好了一些版本。
图2.8 选择API的版本
(3)选择“Installed packages”选项,会看到一些新的版本,可以选择性地对以前的版本进行更新,如图2.9所示。
图2.9 可更新的版本
下载好选择的版本之后,选择“Virtual devices”选项,然后单击“New”按钮,就可以创建模拟器,同时也可以看到已经创建的模拟器,如图2.10和图2.11所示。
图2.10 已建模拟器
图2.11 新建模拟器
2.ADT的安装
(1)启动Eclipse,选择“Help”→“Install”→“New”→“Software”命令,弹出如图2.12所示的对话框,单击“Add”按钮,弹出如图2.13所示的对话框。
图2.12 安装插件
(2)在“Name”文本框中输入ADT的名称,在“Location”文本框中输入ADT的网址https://dl-ssl.google.com/android/eclipse/。单击“确定”按钮,然后依次单击“下一步”按钮,即可完成安装。
(3)安装好ADT后,在Eclipse的菜单栏中会出现如图2.14所示的标记,并且可以把已经下载好的SDK与Eclipse关联起来。打开“Windows”菜单,选择“Preferences”→“Android”命令,如图2.15所示,在“SDK Location”后方单击“Browse”按钮,选择SDK的安装路径,单击“Apply”按钮,然后单击“OK”按钮,即把SDK与Eclipse关联起来了,此时就可以在Eclipse上开发Android程序了。
图2.13 添加ADT网址
图2.14 ADT在Eclipse显示
图2.15 ADT添加SDK
到这里,我们已经把开发Android的所有开发包及开发工具都安装好了。
2.3 HelloAndroid——我的第一个Android程序
在上一节中,开发Android程序的环境已经搭建好了,本节介绍Android程序的编写及其步骤。
2.3.1 从HelloAndroid看Android程序的结构
Google的ADT提供了简单生成Android程序框架的功能,可以使用ADT来创建第一个Android程序——HelloAndroid。
(1)启动Eclipse,选择“File” →“Android Project”命令(或者右键单击),弹出新建项目的对话框,选择“Android Project”,如图2.16所示。
图2.16 新建Android项目
(2)选择“Android Project”命令,弹出“New Android Project”对话框,设置项目名、包名(包名的形式必须是xxx.xxx)、Android的版本等,如图2.17至图2.19所示。
图2.17 输入Android项目名
图2.18 选择Android版本号
(3)信息输入之后,单击“完成”按钮,就成功创建了一个Android程序。
接下来看看这个程序的目录结构,如图2.20所示。这个程序完全是由ADT自动生成的,只是填写了比较少的东西。
图2.19 输入包名等
图2.20 HelloAndroid目录结构
由图2.20可以看出,HelloAndroid项目包含了很多文件夹,下面对每个文件夹进行简单介绍,以帮助后面的开发。
❑ src文件夹:这个文件夹与Java项目的文件夹没有什么区别,其中存放着项目的所有包,以及源文件(扩展名为java的文件)。
❑ assets文件夹:存放原始文件的文件夹。
❑ gen文件夹:这个文件夹中存放着R.java,R.java文件是新建项目时自动生成的,这个文件只能读取,不可以对其进行更改,该文件定义的是项目中所有资源文件的索引文件,HelloAndroid项目中的R.java文件如下(详细代码请参考光盘源代码:第2章\HelloAndroid\gen\com\zhy\hellpAndroid\R.java)。
public final class R { public static final class attr { } public static final class drawable { public static final int ic_launcher=0x7f020000; } public static final class layout { public static final int main=0x7f030000; } public static final class string { public static final int app_name=0x7f040001; public static final int hello=0x7f040000; } }
❑ res文件夹:这个文件夹中包含了项目中要用到的资源文件,包括图片资源(drawable)、布局文件(layout)、一个常量资源(values),而在图片资源这个文件夹中有3个文件夹,它们分别表示的是高分辨率的图片、低分辨率的图片及中等分辨率的图片。
❑ AndroidManifest.xml文件:这个文件在所有的项目中名称都不会变,是一个全局的文件,所有在Android中用到的组件(Activity、Service、Broadcast Receiver及Content Provider)都要在该文件中声明。在该文件中还声明SDK的版本和用户的使用权限。下面看看HelloAndroid项目中的该文件。
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.zhy.hellpAndroid" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="8" /> <application android:icon="@drawable/ic_launcher" android:label="@string/app_name" > <activity android:label="@string/app_name" android:name=".HelloAndroidActivity" > < intent-filter > <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest>
由第一行可知,这是一个XML文件,第一句声明了XML的版本和编码,接着是manifest根元素,在该元素下面指定了名称空间、包名、版本代号、版本信息及声明了Activity等。
Application元素下面有两个属性,说明了程序的图标及标题。下面是Activity的声明,其中有Activity的类名及名称。intent-filter是指Activity的过滤器,action表示的是该Activity的入口,category表示的是加载程序时运行。
每个Android的程序基本上包括了上面所说到的文件,至于layout的布局文件则会在第3章说明。
2.3.2 了解Android基本框架
在2.3.1节分析了第一个Android程序,对Android的程序有了一定的了解,但是对Android系统的框架还不是很了解。下面分析一下Android系统的基本框架,如图2.21所示。图2.21是整个Android系统的一个框架图,从图中我们可以明显看出,整个Android系统分为4层,从上到下依次是:应用层、应用框架层、系统运行库层和Linux内核层。
图2.21 Android系统框架图
(1)应用层:应用层是用Java语言写的运行在虚拟机上的程序,Google在开始时就捆绑了一个核心的应用。该核心应用程序包括E-mail客户端、SMS短信程序、日历、地图、浏览器、联系人管理等。
(2)应用框架层:这一层是Google开发核心应用程序所提供的API框架,开发人员可以使用这些框架来开发自己的应用,但是需要遵守其开发原则。从图2.21中可以看出应用框架层提供了以下组件。
❑ View System(视图):可以用来构建应用程序,它包括列表(List)、网格(Grid)、文本框(Text)、按钮(Button)及可嵌入的Web浏览器。
❑ Content Providers(内容管理器):它可以让一个应用访问另一个应用的数据,或共享它们自己的数据。
❑ Resource Manager(资源管理器):提供非代码资源的访问,如本地字符串、图形和布局文件。
❑ Notification Manager(通知管理器):应用可以在状态栏中显示自定义的提示信息。
❑ Activity Manager(活动类管理器):用来管理应用程序生命周期并提供常用的导航退回功能。
❑ Window Manager(窗体管理器):管理所有的窗口程序。
❑ Package Manager(包管理器):Android系统内的程序管理。
(3)系统运行库层:使用Android应用框架时,Android系统会通过一些C/C++库来支持使用的各个组件,使其更好地为我们服务。
❑ Bionic系统C库:C语言标准库,系统最底层的库,C库通过Linux系统来调用。
❑ 多媒体库(MediaFramework):基于PackerVideo OpenCORE,该库支持多种常见格式的音频、视频的回放和录制及图片,如MPEG4、MP3、AAC、AMR、JPG、PNG等。
❑ SGL:2D图形引擎库。
❑ SSL:位于TCP/IP协议与各种应用层协议之间,为数据通信提供支持。
❑ OpenGL ES 1.0:3D效果的支持。
❑ SQLite:关系数据库。
❑ Webkit:Web浏览器引擎。
❑ FreeType:位图(Bitmap)及矢量(Vector)。
(4)Linux内核层:Android的内核系统服务依赖于Linux 2.6内核,如安全性、内存管理、进程管理、网络协议栈和驱动模型。Linux同时也作为硬件与软件栈之间的抽象层。Android系统中有很多程序需要驱动,主要的驱动如下。
❑ 显示驱动(Display Driver):基于Linux的帧缓冲(Frame Buffer)驱动。
❑ 键盘驱动(KeyBoard Driver):作为输入设备的键盘驱动。
❑ Flash内存驱动(Flash Memory Driver):基于MTD的Flash驱动程序。
❑ 照相机驱动(Camera Driver):常用的基于Linux的v412(Video for Linux)的驱动。
❑ 音频驱动(Audio Driver):常用的基于ALSA的高级Linux声音体系驱动。
❑ 蓝牙驱动(Bluetooth Driver):基于IEEE 802.15.1标准的无线传输技术。
❑ WiFi驱动:基于IEEE 802.11标准的驱动程序。
❑ Binder IPC驱动:Android的一个特殊驱动程序,具有单独的设备节点,提供进程间通信的功能。
❑ Power Management(电源管理):如电池电量等。
以上4点就是整个Android系统的框架,而我们一般的开发大部分都集中在最上一层(应用层),而应用层主要用到的知识是Google提供的应用框架,所以对于初学者来说,要掌握应用框架层提供的API。
2.4 小结
本章主要学习了Android系统的框架,以及第一个Android程序的建立,从而对Android程序中每一个文件和文件夹有了一定的了解,也方便了以后的开发。对Android系统框架的说明,让我们明白了Android系统的组成。下一章将学习Android中的界面布局。
2.5 习题
【习题1】根据书中所描述的内容,动手搭建自己的Android开发环境并且创建自己的模拟器。
提示:参考书中建立模拟器的步骤,到相应的网址进行下载安装等。
【习题2】根据书中的实例,写出自己的一个Android程序,效果如图exe_2.1所示。
提示:需要修改res/values/strings.xml文件中的内容,以及程序的背景颜色。
图exe_2.1 编写一个Android程序
关键代码:
<string name="hello">哈哈,这是我自己的第一个Android程序</string> android:textColor="#000000"