实际上这一节我并不只想介绍DDMS这个工具,而是想借此说一下日志(Log),凡是有过开发、维护系统经验的人都应该知道日志的重要性,不管你是以文本、数据库或者IDE自带的方式来存储日志,这都是很有必要的。一般情况下,日志是用来记录系统运行的异常信息,让我们在程序的非调试情况了解到异常的问题所在。
在开发的时候,有问题我们一般都会选择调试,当然这个事最直接、有效定位问题的方法,但是速度相对较慢,如果可以查看问题日志那就会快很多。
在系统维护的时候更是彰显日志的重要性了,因为此时系统已经运行在服务端,我们很难去调试,即使调试有时也无法还原、捕捉到当时的异常(测试环境与真实环境难免有差异),特别是一些我们认为很“灵异”的异常(经常维护系统的人就会了解),尤其是文件读写权限、Office的读写权限、网络异常、性能瓶颈等外部异常。这个时候我们就很有必要在有可能出现这些异常的地方try catch,一旦系统出现异常我们的第一反应就是查看日志文件,分析问题的所在,快速定位,及时处理。
上面稍微啰嗦了一下,接下来言归正传,来看看Android的DDMS能给我们带来什么:
DDMS 的全称是Dalvik Debug Monitor Service,即Dalvik调试监控服务,是一个可视化的调试监控工具。它主要是对系统运行后台日志的监控,还有系统线程,模拟器状态的监控。此外,它还可以模拟收发短信,拨打电话和发送GPS位置信息等。
启动DDMS
1.在eclipse界面的右上角,点击添加工具图标,选中DDMS确定,eclipse右上角就会出现DDMS图标,点击该图标开启DDMS。


DDMS各部分组成的功能简介
1.Devices 可以查看到所有与DDMS连 接的模拟器详细信息,以及每个模拟器正在运行的APP进程,每个进程最右边相对应的是与调试器链接的端口。
2.Emulator Control 可以实现对模拟器的控制,比如:接听电话,根据选项模拟各种不同网络情况,模拟接受SMS消息和发送虚拟地址坐标用于测试GPS功能等。
Telephony Status: 通过选项模拟语音质量以及信号连接模式。
Telephony Actions: 模拟电话接听和发送SMS到测试终端。
Location Control: 模拟地理坐标或者模拟动态的路线坐标变化并显示预设的地理标识,可以通过以下3种方式:
(1)Manual: 手动为终端发送二维经纬坐标。
(2)GPX: 通过GPX文件导入序列动态变化地理坐标,从而模拟行进中GPS变化的数值。
(3)KML:通过KML文件导入独特的地理标识,并以动态形式根据变化的地理坐标显示在测试终端。
3. LogCat 主要是显示日志信息,日志包括ERROR, WARN, INFO, DEBUG, VERBOSE等5中类型,在代码中使用其首字母大写来代替:V为所有的信息,D为Debug信息,I为 info信息,W为警告信息,E为错误的信息。
通常在代码中使用如下方法来记录日志:Log.v() Log.d() Log.i() Log.w() and Log.e(),具体的参数可以参考API.
我们在运行项目时可以通过这里监控到很多的系统日志,可以了解系统的运行状况。
4.Threads、Heap、File Exporler,最常用的就是File Exporler文件浏览器,通过File Exporler可以查看Android模拟器中的文件,可以很方便的导入/出文件。
上一篇我已经将开发环境搭建好,现在开始真正的开发之旅。
第一个Android项目HelloAndroid。
1.新建一个Android项目,打开eclipse->file->New->AndroidProject
2.输入项目名称HelloAndroid
可选项有三个:1.在工作区创建新项目。2.从已有的源码中创建项目。3.从已有的例子(SDK自带的例子)中创建项目
3.选择要创建的Android版本

4.输入应用程序名称:HelloAndroid
包名:yi.test.demo(如果是企业级的一般使用公司的名称+项目名com.company.project)
其他的默认,点击Finish
5.查看HelloAndroid项目文件结构,主要解读几个重要的目录:
src目录下是供我们编辑的项目代码文件;
gen目录下有一个R.java文件,可以理解为整个项目资源的索引文件;
res目录下layout子目录存放项目界面布局XML配置文件,values子目录存放strings.xml,为项目字符串配置文件;

6.Manifest.xml项目清单文件,一个非常重要的配置文件,它包含了组成应用程序的每一个组件(活动、服务、内容提供器和广播接收器)的节点,并使用Intent过滤器和权限来确定这些组件之间以及这些组件和其他应用程序是如何交互的。里面包含的内容比较多,这里就不详细说明了,有兴趣的可以在百度中搜索。
6.strings.xml,这个比较容易理解,使用string节点保存字符串,程序中将通过节点的name属性访问相应的字符串,这样做的好处可以统一风格、字符串重用以及多语言版本开发。

7.main.xml,程序主界面配置文件,下图为可视化界面编程,可以实现控件的拖拉,跟.NET开发类似,也可以直接写XML节点进行编辑。

8.R.java,这个类文件中包含的是关于项目资源(图形、布局、字符串等)的索引(我是这么理解的),将所有资源使用整形常量来标示,项目代码中只需要通过调用这个类中的常量就能实现对资源的使用。一般不能修改
9.整个项目我没有做任何的代码修改(只拖了个控件),直接运行
10.我的第一个项目HelloAndroid就成功运行在Android虚拟机中了
这节就暂时讲到这里,很多地方都是我自己的理解,可能会有不对的地方,欢迎指教!
开始我的翻译之旅,英文能力有限,肯定有很多不对的地方,欢迎拍砖!
什么是Android?
Android是一个移动手机的软件栈,它包括一个操作系统、中间件和关键应用程序。Android SDK提供了利用java语言在android平台上开发应用程序的必要工具和APIs.
特征
·应用程序框架能够被重用和更换的组件
·Dalvik虚拟机优化移动设备
·集成浏览器基于开源的WebKit引擎
·最优化的图形库由传统的2D图形库组成;3D图形是基于OpenGL ES 1.0规范(可以选择硬件加速)
·SQLite提供了结构化数据存储
·媒体支持包括传统的音频,视频和图像格式(MPEG4, H.264, MP3, AAC, AMR, JPG, PNG, GIF)
·GSM电话(硬件相关)
·蓝牙,EDGE,3G和WIFI(硬件相关)
·摄像头,GPS,指南针和加速计(硬件相关)
·富开发环境包括一个模拟器,调试工具,内存与性能模型和一个Eclipse IDE插件
Android体系结构
以下图形展示了Android操作系统的主要组件。每个部分的更多详细情况将在后面涉及。

应用软件
Android携带了一组核心应用软件,包括一个邮件客户端,SMS程序,日历,地图,浏览器,通讯录等等。所有应用软件都是java语言编写的。
应用程序框架
Android提供了一个开放的开发平台,使开发者能够开发极为丰富和创新的应用软件。开发者可以自由利用硬件设备,存储单元信息,运行后台服务,设置报警,增加状态条提示等等很多很多。
开发者可以完全进入跟系统核心应用软件使用的相同框架APIs.这个应用程序框架被设计用于简化组件的重用。任意一个应用程序都可以发布自己的功能,而且其他程序也可以使用那些功能(必须符合框架的安全约束)。这个相同的机制允许用户替换这些组件。
所有应用程序是以一组服务与系统为基础的,包括:
·一组丰富可扩展的视图可以用来创建一个应用程序,包括lists,grids,text boxes,buttons,甚至一个内嵌的浏览器
·内容提供者可以使应用程序从其他的应用程序获取数据(例如联系簿),或者共享它们自己的数据
·一个资源管理器为获取非代码资源(例如局部字符串,图形和布局文件)提供了条件
·一个通知管理器可以使所有的应用程序在状态栏中显示自定义的通知
·一个活动管理器可以管理应用程序的生命周期和提供一个通用的导航回退功能
想了解更过详情和应用程序的演示,请查看记事本教程
程序库
Android包括一组应用于Android系统各种组件的C/C++程序库。这些功能均通过Android应用程序框架对开发者开放。一些核心的函数库如下:
·系统C程序库-一个BS-派生于标准C系统程序库,为嵌入基于Linux的设备
·媒体程序库-基于视频软件的OpenCORE;这些程序库不但支持多种流行音频和视频格式的回放和记录,而且支持静态图片文件,包括MPEG4, H.264, MP3, AAC, AMR, JPG, 和PNG
·界面管理器-管理从各种应用程序中访问显示子系统和紧密复合2D和3D图层。
·LibWebCore-一个包含Android浏览器和内嵌网络视图的现代网络浏览器引擎
·SGL-基础2D图形引擎
·3D程序库-一个基于OpenGL ES 1.0 APIs的实现;这些程序库使用了3D硬件加速器(如果有这些)或者内置的高性能的3D软件光栅期
·FreeType-位图和矢量字体的渲染
·SQLite-一个可供所有应用程序使用的强大的轻量级关系数据库引擎
Android运行时
Android包括一组核心程序库,它提供了大多数功能可供java编程语言的核心程序库使用。
每个Android程序都通过Dalvik虚拟机的实例运行在自己的进程中。Dalvik可以被写入以便一个设备能有效的运行在多个虚拟机中。Dalvik虚拟机执行经过最小内存封装的Dalvik可执行格式(.dex)文件。虚拟机是寄存器,可以运行被java编译器编译的类,这些类已经被内置的dx 工具转换成了.dex格式。
Dalvik虚拟机依赖于Linux 内核的基础功能,例如线程和低级的内存管理。
Linux Kernel
Android依赖Linux 2.6版本的核心系统服务,例如安全性、内存管理、进程管理、网络栈和驱动模型。这个内核也在硬件和其他软件栈中充当了一个抽象层。