1.1 平台简介
Android 有丰富的功能,因此很容易与桌面操作系统混淆。Android 是一个分层的环境,构建在 Linux 内核的基础上,它包括丰富的功能。UI 子系统包括:
窗口 视图 用于显示一些常见组件(例如编辑框、列表和下拉列表)的小部件 Android 包括一个构建在 WebKit 基础上的可嵌入浏览器,iPhone 的 Mobile Safari 浏览器同样也是以 WebKit 为基础。
Android 提供多种连接选项,包括 WiFi、蓝牙和通过蜂窝(cellular)连接的无线数据传输(例如 GPRS、EDGE 和 3G)。Android 应用程序中一项流行的技术是链接到 Google 地图,以便在应用程序中显示地址。Android 软件栈还提供对基于位置的服务(例如 GPS)和加速计的支持,不过并不是所有的 Android 设备都配备了必需的硬件。另外还有摄像支持。
过去,移动应用程序努力向桌面应用程序看齐的两个领域分别是图形/媒体和数据存储方法。Android 通过提供对 2D 和 3D 图形的内置支持,包括 OpenGL 库,解决了图形方面的挑战。由于 Android 平台包括流行的开源 SQLite 数据库,因此缓解了数据存储的负担。图 1 显示一个简化的 Android 软件层次结构。
图 1. Android 软件层次结构 应用程序架构
如前所述,Android 运行在 Linux 内核上。Android 应用程序是用 Java 编程语言编写的,它们在一个虚拟机(VM)中运行。需要注意的是,这个 VM 并非您想象中的 JVM,而是 Dalvik Virtual Machine,这是一种开源技术。每个 Android 应用程序都在 Dalvik VM 的一个实例中运行,这个实例驻留在一个由 Linux 内核管理的进程中,如下图所示。
图 2. Dalvik VM
Android 应用程序由一个或多个组件组成: 活动
具有可视 UI 的应用程序是用活动实现的。当用户从主屏幕或应用程序启动器选择一个应用程序时,就会开始一个动作。
服务
服务应该用于任何需要持续较长时间的应用程序,例如网络监视器或更新检查应用程序。
内容提供程序
可以将内容提供程序看作数据库服务器。内容提供程序的任务是管理对持久数据的访问,例如 SQLite 数据库。如果应用程序非常简单,那么可能不需要创建内容提供程序。如果要构建一个较大的应用程序,或者构建需要为多个活动或应用程序提供数据的应用程序,那么可以使用内容提供程序实现数据访问。
广播接收器
Android 应用程序可用于处理一个数据元素,或者对一个事件(例如接收文本消息)做出响应。
Android 应用程序是连同一个 AndroidManifest.xml 文件一起部署到设备的。AndroidManifest.xml 包含必要的配置信息,以便将它适当地安装到设备。它包括必需的类名和应用程序能够处理的事件类型,以及运行应用程序所需的许可。例如,如果应用程序需要访问网络 — 例如为了下载一个文件 — 那么 manifest 文件中必须显式地列出该许可。很多应用程序可能启用了这个特定的许可。这种声明式安全性有助于减少恶意应用程序损害设备的可能性。
下面是这个平台的架构模型:
这个平台有以下功能:
1)Application framework: 可重用的和可替换的组件部分,在这个层面上,所有的软件都是平等的。
2)Dalvik virtul machine: 一个基于Linux的虚拟机。
3)Integrated browser: 一个基于开源的WebKit引擎的浏览器,在应用程序层。 4)Optimized graphics: 包含一个自定义的2D图形库和基于OpenGL ES 1.0 标准的3D实现。
5)SQLite: 数据库
6)Media support: 通用的音频,视频和对各种图片格式的支持(MPEG4, H.264, MP3, AAC, AMR, JPG, PNG, GIF)
7)GSM Telephony: GSM 移动网络, 硬件支持
8)Bluetooth, EDGE, 3G, and WiFi: 都依赖于硬件支持。
9)Camera, GPS, compass, and accelerometer: 都依赖于硬件支持。
10)Rich development environment: 包含一套完整的开发工具集,方便跟踪调试,内存检测和性能测试,而且提供了Eclipse的插件。
1.2 环境配置
1.2.1 必备软件
1)JDK6:jdk-6u10-rc2-bin-b32-windows-i586-p-12_sep_2008.exe 网址:http://java.sun.com/javase/downloads/index.jsp2)Eclipse: eclipse-SDK-3.4.2-win32.zip 网址:http://www.eclipse.org/downloads3)android-sdk-windows-1.5_r1.zip
网站:http://code.google.com/android/download.html
1.2.2 安装
1)jdk 1.6安装(双击jdk-6u10-rc2-bin-b32-windows-i586-p-12_sep_2008.exe)。选择安装路径为“E:\\android\\jdk-6u10\\”,安装完成后设置环境变量:右击点我的电脑->属性->高级->环境变量,双击PATH,变量值中末尾加上“;E:\\android\\jdk-6u10\\bin”。同时新建两个环境变量,JAVA_HOME,变量值为:“E:\\android\\jdk-6u10”以及CLASSPATH,变量值为:“.”
2)解压eclipse-SDK-3.4.2-win32.zip到目录“E:\\android\\eclipse-3.4.2”。
3)安装ADT:打开eclipse.exe,随意设置工作目录,选择Help->Software Updates->Available Software
单击“Add Site...”,输入“http://dl-ssl.google.
com/Android/eclipse/”,单击“OK”按钮,在看到可用的插件中选择“Android Developer Tools”和“Android DDMS”,单击“install”按钮,安装完成后,会提示用户重启Eclipse
4)解压android-sdk-windows-1.5_r1.zip到目录“E:\\android\\android-sdk-1.5” 5)需要设置Android SDK主目录。依次单击“windows→Preferences”项,在弹出的界面左侧可以看到“Android”项,选中Android后,在右侧设定 Android SDK 所在目录为 SDK Location,单击“OK”按钮完成安装
6)创建Android 虚拟设备(AVD)
在Android SDK1.5版以后的Android开发中,必须创建至少一个AVD,AVD全称为Android虚拟设备(Android Virtual Device),每个AVD模拟了一套虚拟设备来运行Android平台,这个平台至少要有自己的内核,系统图像和数据分区,还可以有自己的的SD卡和用
户数据以及外观显示等。
由于Android SDK1.5以后支持多个平台和外观显示,作为开发者创建不同的AVD来模拟和测试不同的平台环境,创建AVD方法如下:
a) 在CMD下输入android list targets查看可用的平台: C:\\Documents and Settings\\Administrator>android list targets Available Android targets: id: 1
Name: Android 1.1 Type: Platform API level: 2
Skins: HVGA (default), HVGA-L, HVGA-P, QVGA-L, QVGA-P id: 2
Name: Android 1.5 Type: Platform API level: 3
Skins: HVGA (default), HVGA-L, HVGA-P, QVGA-L, QVGA-P id: 3
Name: Google APIs Type: Add-On Vendor: Google Inc.
Description: Android + Google APIs Based on Android 1.5 (API level 3) Libraries:
* com.google.android.maps (maps.jar) API for Google Maps
Skins: QVGA-P, HVGA-L, HVGA (default), QVGA-L, HVGA-P
如上列举了3个targets,id分别是1、2、3。 b) 创建AVD
按照“android create avd --name C:\\Documents and Settings\\Administrator>android create avd --name sdk_1_5_version --target 2 Android 1.5 is a basic Android platform. Do you wish to create a custom hardware profile [no] Created AVD 'sdk_1_5_version' based on Android 1.5 这样就创建了一个自定义的AVD(Android Virtual Device),然后,只要在Eclipse的Run Configurations里面指定一个AVD,即在Target下选中自己定义的这个AVD,即sdk_1_5_version就可以运行了。 c) 删除AVD 执行:android delete avd –n sdk_1_5_version 1.3 开发应用程序 1.3.1创建Android项目 ADT提供了一个Android新建项目想到,会引导用户创建一个新的Android项目。 “文件” -> “New” -> “Android Project” 打开Android新建项目的向导 project name:项目名称 build target:选择新建Android项目的构建目标,在ADT 0.9中,提供了三个选项,Android 1.1、Android 1.5和Google APIs。选择Android 1.1指示新建项目的目标运行环境是Android 1.1,Android 1.5的目标运行环境是Android 1.5,Google APIs的目标环境在Android 1.5的基础上增加了Google Map API application name:应用程序的名称 package name:应用程序的包名 create activity:创建一个Activity,制定Activity的类名,此Activity的全限定类名为上一项的包名加上此处的Activity类名。 各字段的值如下图所示: 单击“finish”完成,向导会根据上图所填写的内容新建一个Android项目。新建的项目的目录结构如下图所示: 下面简要介绍一下上图中列出的一些文件和目录: src:源文件目录,下面有在向导中指定的包名和Activity类名 Android 1.5: android.jar,此项目的构建目标平台,Android 1.5表示此项目的目标运行环境为Android sdk 1.5 gen:此目录中包含由ADT编译生成的java源文件 assets:保存原始的资源文件,说它原始是因为Android不会对此目录下的文件做任何处理,与res目录不同 res:同样也是保存资源文件,但此目录下的资源文件ADT在编译后会生成一个R.java文件,方便在java源文件中引用这些资源 AndroidMenifest.xml:Andriod应用程序清单文件 default.properties:这是一个java属性文件,里面包含了此项目的一些设置信息,默认情况下包含此项目目标平台 1.3.2运行Android应用程序 Android 1.5运行应用程序的方式与之前版本,即Android 1.1,不同。在运行之前需要新建一个avd(Android虚拟设备),avd制定了模拟器运行的配置信息。 打开命令提示符窗口,执行如下命令: android create avd -n test -t 2 在运行此命令后,命令提示符会问一些问题,直接按Enter接受它的默认设置就可以了。 下面来配置此项目的运行信息 “run” -> \"run configuration ...\"打开运行配置对话框,在右边的树中选择Android Application,单击左上角的新建按钮,如下图所示 单击新建会创建一个新的Android应用程序运行配置信息,在对话狂的右侧的Android tab页中设置如下 在target tab页中选中刚才在命令提示符中新建的avd,如下 设置好了单击对话框右下侧的“Apply”按钮。这样一个新的针对hello项目的运行配置就新建设置完成了,单击对话框右下角的“Run”按钮就可以运行此项目中的应用程序了。 如果在编译过程中报错,修改一下项目的构建路径。 在项目上右击鼠标,“build path” -> \"Configure builde path\"如上图所示。在打开的对话框右侧的“Order and Export”tab页中选中Android 1.5,如下 单击“OK”完成构建路径的设置。 此项目的运行结构如下 屏幕的最上方是应用程序的标题,标题下方是应用程序的内容区域,此应用程序中是一个TextView控件。 除了Eclipse和ADT开发Android应用程序,还可以使用ant加上一个普通的编辑器来开发Android应用程序。我相信有99.9%的程序员都是使用ide开发,只有那些很牛的人才会使用最原始的开发工具。 1.4 下载 Android 源码 1)首先,你先到 http://code.google.com/p/msysgit/downloads/list 上下载Git-xxx.exe,我下载的是 Git-1.6.2.2-preview20090408.exe 下载下来后,直接按确定到底,就可以完成安裝。装完后执行它的Git Bash 程式 2)利用cd 命令进入你要保存源码的文件夹, 譬如: cd D:\\Android\\AndroidSource 3)执行git clone git clone git://android.git.kernel.org/platform/packages/apps/Browser.git 4)源码的repository 可以从如下网站http://android.git.kernel.org/ 获取 1.5 模拟器上删除应用程序 1)从命令行进入Android SDK的安装目录D:\\Android\\android-sdk-windows-1.5_r2 2)cd 到tools目录 3)使用adb shell命令,注意,如果AVD模拟器未启动会报错:error: device not found 4)cd 到 data/app 目录下删除 *.apk 即可 5)针对模拟器SDK 中自带的应用程序删除有如下不同: cd 到 tools 目录下首先执行: adb remount 将设备中的system 属性修改为可读写 启动AVD 模拟器,执行adb shell,cd进入到system/app下利用rm 删除相应的apk即可,具体命令如下图 1.6 运行Android中的Calculator程序 1) 启动模拟器删除SDK中自带的Calculator,具体操作参看1.5节 2) 打开Eclipse,新建立Calculator 工程,在New Android Project中选择create projec t from existing source, 如下图 3) 点击finish,此时会有编译错误,主要原因是未导入jar库文件,具体导入方法如下 点击Calculator项目,找到Build Path --- > Configure Build Path --- > Libraries 选择 Add External JARs,将Calculator中的jar 库导入,如下图: 4) 运行即可 1.7 模拟器中使用SD卡 Andorid开发中经常遇到与SD卡有关的调试,Android SDK+Eclipse提供了SD卡的模拟方法。使用方法如下: 1) 创建一个SD卡镜像文件 打开cmd,输入如下命令: mksdcard 1024M d:/sdcard.img 该命令会在生成一个sdcard.img文件,该文件就是Android模拟器的SD卡镜像文件。 1024M表示1024兆,即该SD卡有1个G的容量,也可用K做单位(1M=1024K),K,M必须大写。 目前Android支持8M~128G的SD卡。 2) 运行带有SD卡的模拟器 创建了SD卡镜像文件,只是创建了一个文件,还不能在模拟器中直接用,要在模拟器中可看到该SD卡,方法有两种,如下: ◆在cmd中,命令如下: emulator -avd sdk_1_5_version -sdcard d:\\sdcard.img ◆在Eclipse中,在Run->Run Configurations…菜单里面的Target标签页里面,输入启动参数,如下图: 3) 向SD卡中导文件 ◆在cmd中,命令如下: 这会将本地当前目录下的test.txt文件考到sdcard中,文件名不变。前一个test.txt是本地文件的路径,sdcard是目的sdcard镜像的文件名(去掉后缀)。 ◆在Eclipse中,操作如下: 在设置了RUN的命令参数之后,RUN一个应用,然后使用DDMS的File Explorer工具导入导出文件。 打开DDMS工具:在Eclipse的Window->Open Perspective->Other…里打开DDMS工具。 在DDMS的File Explorer标签页里面选择sdcard目录导入导出文件,如下图: 因篇幅问题不能全部显示,请点此查看更多更全内容