2008年9月28日星期日

Android开发 第一章

第一章 什么是Android

Android是移动设备的软件栈,包括操作系统、中间件和关键应用,Android SDK为在Android上开发应用提供了工具和API接口,它使用Java作为编程语言。

特性:

1. 应用框架保证了组件的可重用性和可替换性。 2. Dalvik虚拟机为移动设备做了优化。 3. 集成的浏览器基于开源的Webkit引擎。 4. 客户化的2D图形库优化了图形处理,具有基于OpenGL ES1.0规格的3D图形库(硬件加速可选)。 5. SQLite为结构化的数据存储提供了保障。 6. 丰富的多媒体支持,包括公共的声音、视频和静态图像(MPEG4, H.264, MP3, AAC, AMR, JPG, PNG, GIF)。 7. GSM通话(需要硬件支持)。 8. 蓝牙、EDGE、3G和WiFi支持(需要硬件支持)。 9. 相机、GPS、compass搜索引擎、加速记支持(需要硬件支持)。 10. 丰富的开发环境:设备仿真器、开发工具链、调试工具链、内存和性能仿真、EClipse IDE插件等等。

Android结构:

下图显示了Android操作系统的主要组件。下面有每一部件的更细致的描述:

Applications:

Android配备了核心应用集:包括email客户端、SMS程序、计算器、电子地图、浏览器、联系人编辑器等等,所有应用的代码都用Java语言编写。

Application Framework:

开发者完全能够访问核心应用所使用的相同的框架API,应用架构设计简化了组件的重用,任何应用都可以开放它的能力集,并且其他应用可以使用这些能力集(框架增加了安全性),同样,用户可以替换所有的组件。 下面的应用都包含在服务和系统中: 1. 一个丰富而且可扩展的View集能够用于建立应用,包括lists, grids, text boxes, buttons, 甚至一个嵌入式的浏览器。 2. Content Provider可以让应用访问其他应用的数据、或者共享自己的数据给其他应用。 3. Resource Manager用于访问非代码资源,例于访问本地化的字符串、图像、和布局文件。 4. Notification Manager能够让所有应用在状态条显示客户化的告警。 5. Activity Manager管理应用的生命周期,并且提供一个公共的导航栈。

Libraries:

Android提供一个C/C++库用于各个Android系统组件,这些库通过应用框架向开发者开放。下面是一些核心库: 1. 系统C库:一个继承于BSD的标准C库(libc),基于嵌入式Linux做了一些微调。 2. 媒体库:基于PacketVideo的OpenCORE,这个库能够对流行的音视频格式、静态图像格式进行回放和记录,包括MPEG4, H.264, MP3, AAC,
AMR, JPG, 和PNG等。 3. 皮肤管理:管理显示子系统,并且无缝组合2D/3D图形层。 4. Web核心库:流行的web核心引擎。 5. SGL: 2D图形引擎。 6. 3D库:基于OpenGL ES 1.0 API实现,既可以3D硬加速,也可以3D软加速。 7. FreeType: 支持位图和向量字体。 8. SQLite: 一个强有力的、轻量级的数据库引擎。

Android Runtime:

Android提供了一个基于Java语言的运行时库。 每个Android应用运行在自己的进程上,和它自己的Dalvik虚拟机实例,一个设备能够运行多个Delvik虚拟机实例。Dalvik虚拟机执行文件(.dex)被优化成最小的内存使用。Dalvik虚拟机是基于寄存器的,它的运行类是Java语言编译器编译的并且被dx工具把格式转换成了.dex格式。 Dalvik虚拟机依靠Linux内核的支持,比如线程调度、底层内存管理等等。

Linux Kernel:

Android依靠Linux的核心服务,例如安全性、内存管理、进程管理、网络协议栈、底层硬件驱动模型等等。Linux作为硬件和其他软件栈之间的抽象层存在。

没有评论: