首页 » Android程序设计:第2版 » Android程序设计:第2版全文在线阅读

《Android程序设计:第2版》SDK的组件

关灯直达底部

Android SDK的主体是通用组件,辅以一些专用组件。在很多情况下,配置、插件和扩展是这些组件在Android中的实现形式。Android SDK的开发是一个对现代化和完整的SDK进行高效开发的研究。Google为了能够快速地把Android推向市场采用了这种方式。在探索Android SDK的过程中,你会感受到这一点。Eclipse、Java语言、QEMU及其他已有的平台、工具和技术一起组成了Android SDK最重要的组成部分。

在创建简单的应用来确认SDK安装的过程中,已经用过了SDK的很多组件。这里将找出并具体介绍在创建程序中所涉及的SDK组件及一些其他将要使用的组件。

Android Debug Bridge

Android Debug Bridge(adb)是一个程序,通过它你既可以控制模拟器,也能控制设备,并且其还提供了一个命令行接口,使我们可以直接执行模拟器或设备环境中的命令。通过adb,从模拟器或设备中安装和删除应用特别方便。关于adb的文档说明可以在这里获取:http://developer.android.com/guide/developing/tools/adb.html。

Dalvik调试监控服务器

Dalvik调试监控服务器(Dalvik Debug Monitor Server,DDMS)是一个流量控制器,位于Eclipse(也适用于其他Java调试器)连接到Java虚拟机(JVM)的单个端口和各台Android物理或虚拟设备上的Dalvik虚拟机(VM)实例中的端口之间。DDMS还提供了一组功能,这些功能可通过一个独立运行的用户界面或通过ADT插件嵌入到Eclipse中的一个界面来访问。

从命令行调用DDMS时,可以看到如图1-12所示的窗口。

图1-12:独立运行的Dalvik调试监控服务器

Dalvik调试监控服务器可以访问以下信息:

所有的物理设备和虚拟设备及运行于这些设备上的虚拟机列表

在Dalvik调试监控服务器窗口的左上角是已经连接到PC上的Android设备列表,以及正在运行的各种AVD设备。在每个设备或虚拟设备下的列表是在Dalvik虚拟机中运行的任务。

虚拟机信息

选择一个在设备或虚拟设备上运行的Dalvik虚拟机,在右上区域会显示该虚拟机的信息。

线程信息

在每个进程内的线程信息可以通过Dalvik调试监控服务器窗口右上角的Threads选项卡来访问。

文件系统资源管理器(Filesystem explorer)

选择Devices→File explorer菜单命令可以打开Dalvik调试监测服务器的文件系统资源管理器(filesystem explorer),其中列出设备或虚拟设备的文件系统信息。它会在窗口中显示出如图1-13所示的文件层次结构。

图1-13:DDMS的文件系统资源管理器

模拟电话呼叫

在DDMS窗口右上角的Emulator Control选项卡支持在模拟器中“模拟”电话呼叫或发送短信。

抓屏

选择Device→Screen capture菜单命令可以将当前选中的Android设备或虚拟设备当前的屏幕图像截取下来。

日志

DDMS窗口下方显示的是在选定的设备或虚拟设备中的日志输出。在日志窗格上方的工具栏按钮中有一个过滤器,其可以对输出的日志进行过滤。

设备、应用和移动无线电台的转储状态

Device菜单中的这组命令可以使我们能够通过命令控制设备或虚拟设备导出整个设备、某个应用或移动无线电台的状态。

关于DDMS的详细信息可以在这里获取:http://developer.android.com/guide/developing/tools/ddms.html。

ADT Eclipse插件的组件

Eclipse使我们能够创建特定的项目类型,包括几种不同类型的Java项目。ADT插件添加了创建和使用Android项目的能力。新建Android项目时,ADT插件会自动生成项目所需的各级目录及Android项目所必需的所有文件。对于Android项目,通过ADT插件的各个组件Eclipse能够对项目进行编辑、构建、运行和调试。

在某些情况下,SDK组件可以在Eclipse中使用或者以独立模式使用。但是,在本书中的绝大多数Android应用开发案例中,这类组件是在Eclipse中使用的。

ADT插件包含很多不同的组件,而且虽然“插件”的含义只是表示增强,但ADT插件实际上包含大量的软件。这里将介绍使用Eclipse开发Android软件的过程中将会用到的各个重要的组件。

Android的布局编辑器

在Android应用中,用户界面布局可以使用XML描述。ADT插件增加一个了可视化编辑器,可以用它构建和预览Android布局。当打开一个布局文件时,ADT插件会自动启动该编辑器,可使用它对文件进行查看和编辑。通过编辑窗格底部的选项卡可以在可视化编辑器和XML编辑器之间进行切换。

对于早期版本的Android SDK,Android布局编辑器局限太多,用处不大。然而,现在可以考虑使用Android布局的可视化编辑器作为创建布局的首选方式。自动生成的布局兼容性往往更强,用这种方式构建的应用更有可能在Android设备上得到广泛应用。

Android Manifest编辑器

在Android项目中,在构建项目时,项目的软件和资源包含声明(manifest)文件。该文件告诉Android系统如何安装和使用包含所构建的项目的库文件的软件。声明文件的格式是XML,ADT插件提供专用的XML编辑器来编辑该声明文件。

ADT Eclipse插件的其他组件,如应用生成器(application builder),也可能对声明文件进行修改。

其他Android XML文件的XML编辑器

其他Android XML文件包含的信息包括:菜单说明、资源信息(例如字符串)和组织应用程序的图形的信息等。当打开这些文件时,相应的编辑器就会打开。

构建Android应用

Eclipse项目通常是自动构建的。因此,通常情况下,不需要把一个项目的源代码和资源转换成可部署的结果。Android需要特定的步骤生成一个可以部署到Android模拟器或设备的文件,ADT插件提供了生成这些执行步骤的插件。构建Android项目,会生成.apk文件,可以在Eclipse工作区中项目文件层次结构下面的bin子目录下,找到本章之前所创建的test项目的.apk文件。

在ADT插件中提供的特定的Android生成器使我们能够用Java语言来创建Android软件,可以在Dalvik VM下运行该软件,以执行其二进制代码。也就是说,这些生成器还把Java编译器生成的Java字节码输出转换成Dalvik字节码。这些生成器还会生成.apk文件。和.jar文件相比,这些.apk文件的结构和内容都不同。

运行和调试Android应用

当在Eclipse内运行或调试Android项目时,会在AVD或Android设备上部署并启动.apk文件,并使用ADB和DDMS与AVD或Android设备及运行于设备之上的负责运行代码的Dalvik运行时环境。ADT插件所附带的一些组件使得Eclipse能够支持这一功能。

DDMS

P24“Dalvik调试监控服务器”一节介绍了Dalvik调试监控服务器及从命令行调用DDMS用户界面的方式。Eclipse环境内也包含DDMS用户界面,可以通过Eclipse菜单命令Window→Open Perspective→DDMS打开它。还可以通过菜单命令Window→Show View单独查看DDMS的各个视图,例如可以单独查看LogCat视图。

Android虚拟设备

Android虚拟设备(AVD)由基于QEMU的模拟器组成,该模拟器能够模拟Android设备的硬件和Android系统镜像,镜像包含要在模拟硬件上运行的Android软件。AVD由SDK和AVD管理器配置,通过该管理器可以对一些参数进行设置,如存储设备的大小和屏幕的尺寸,还可以指定哪个Android系统镜像用于哪个模拟设备。

通过AVD,我们可以方便地做到在不同类型的系统上测试应用。如果没有AVD,很难获取到这么多样化的软件和物理设备。因为基于QEMU的硬件模拟器、系统镜像和AVD参数都是可替换的组件,可以在硬件可用之前,对设备和系统镜像进行先期测试。

QEMU

QEMU是AVD的基础,但QEMU是一个通用工具,其可以用于Android SDK以外的很多模拟系统中。虽然可以通过SDK和AVD管理器间接地对QEMU进行配置,但是也可能有一天我们需要对SDK工具所不支持的系数进行调整,或者对QEMU的能力和局限性感兴趣。幸运的是,QEMU有广泛、活跃的开发和用户社区,可以在http://www.qemu.org上找到很多资料。

SDK和AVD管理器

QEMU是一个通用模拟器系统。Android SDK支持对QEMU进行配置,支持创建能够运行Android系统镜像的模拟器。SDK和AVD管理器提供了用户界面来控制基于QEMU的Android虚拟设备。

其他SDK工具

除了在大多数开发项目中都会用到的主流工具之外,在SDK中还包含了一些其他工具,这有一些开发人员直接使用或调用的工具,接下来对这些工具进行介绍。在Android文档的Tools Overview中列出SDK的更多组件,可以在这里查看详细信息:http://developer.android.com/guide/developing/tools/index.html。

层次结构查看器

层次结构查看器(Hierarchy Viewer)支持对选定的Android设备的当前活动的视图层次结构进行显示和分析。通过视图层次结构,可以查看和分析正在运行的应用,或者还可以查看其他应用以分析这些应用的设计。其还可以用于放大屏幕,根据边界对齐说明,确定布局的问题。

Layoutopt

Layoutopt是一个静态的分析器,用于分析XML布局文件,用它可以诊断出Android布局的一些问题。关于Layoutopt的详细信息可以在这里获取:http://developer.android.com/guide/developing/tools/layoutopt.html。

Monkey

Monkey是一个自动化测试工具,它可以在模拟器或设备上运行。可以使用SDK中的adb命令来调用这个工具。使用adb命令可以在模拟器或设备上启动shell,Monkey是从shell控制台启动的,例如:


adb shell monkey --wait-dbg -p your.package.name 500 

该Monkey工具的调用在连接上一个调试器后,会向指定的应用发送500个随机事件(通过包名来指定)。关于Monkey的更多介绍可以在这里找到:http://developer.android.com/guide/developing/tools/monkey.html。

sqlite3

Android内的数据库系统采用了SQLite,同时还为应用提供了访问API,这一点对于数据存储和呈现很便利。SQLite还提供了命令行接口,即sqlite3命令行工具,该工具支持从数据库中转储模式,还支持在Android数据库上执行一些其他操作。

这些数据库内置在Android设备或者AVD中,因此,在adb shell控制台中可以直接执行sqlite3命令。有关通过adb控制台使用命令行工具sqlite3的详细说明可以在下面获取:http://developer.android.com/guide/developing/tools/adb.html#shellcommands。此外,后面将在P256“使用sqlite3的数据库操作示例”一节中对sqlite3命令进行详细介绍。

keytool

使用keytool工具可以生成加密密钥,ADT插件使用这个工具创建临时调试密钥,在调试时输入该密钥签名。在大多数情况下,在发布应用时可以使用这个工具来创建签名证书,其创建过程详见P128“创建自签名的证书”一节。

Zipalign

Zipalign支持对要发布的Android应用产品的数据访问方式进行优化。该优化必须在应用签署发布后才可以执行,因为签名会影响到字节对齐。关于Zipalign的更多信息可以在这里找到:http://developer.android.com/guide/developing/tools/zipalign.html。

Draw9-patch

Draw 9-patch是一种特殊的Android资源,由9张图片组成,当需要时该工具很有用,例如对按钮无需改变其转角的半径就可以变大。Draw 9-patch是一个专门创建和预览这类资源的绘图程序。更多关于Draw 9-patch的介绍可以在这里找到:http://developer.android.com/guide/developing/tools/draw9patch.html。

android

android命令,用于在命令行中启动SDK和AVD管理器,具体方法在P11“Android SDK”一节中已经进行了介绍。使用这条命令,还可以从命令行创建Android项目。android命令能够用来自动地生成所有的项目文件、声明文件,还会自动构建属性和项目的ant脚本。关于android命令的详细使用说明可以在这里找到:http://developer.android.com/guide/developing/other-ide.html#CreatingAProject。