译文如下: 有些术语和一些模棱两可的地方就不翻译了, 不过我尽量做到通俗易懂, 希望大家多多支持.
什么是 Android?
Android 是一组用于移动设备的软件套件, 它包含了一个操作系统, 一些中间件和关键的应用. Android SDK 提供了基于工具和API 来是开发人员通过使用java 来开发基于Android 平台的应用程序.
功能(Features):
(1) 应用程序框架可以复用并且可以自己写组件来替换默认组件
(2) 针对移动设备而优化的Dalvik 虚拟机(Dalvik virtual machine)
(3) 整合了基于开源的WebKit 引擎的浏览器
(4) 通过定制的2D 图像库提供了强劲的图像处理能力,3D 图像处理基于OpenGL ES 1.0 规范( 硬件加速可选)
(5) 通过SQLite 来提供结构化的数据存储.
(6) 多媒体支持( 常见音频, 视频和一些图片格式, 如MPEG4, H.264, MP3, AAC, AMR, JPG, PNG, GIF)
(7)GSM 电话( 依赖于硬件)
(8) 蓝牙,EDGE,3G 和WiFi 支持( 依赖于硬件)
(9) 照相机,GPS 定位系统, compass, accelerometer 加速计支持( 依赖于硬件)
(10) 丰富的开发环境, 包括一个设备仿真器, 调试工具, 内存和性能检测工具和基于Eclipse 的插件工具.
Android 架构(Android Architecture):
以下的图片展示了Android 操作系统的主要组件, 每一环节都会在后面详细解释.
应用程序(Applications):
Android 搭载了一组核心应用, 包括邮件客户端, 短信程序, 日历, 地图, 浏览器, 通讯簿和其它一些常见的应用, 所有的这些应用都是基于java 开发的.
应用程序框架(Application Framework):
开发人员可以全面存取通过核心应用开发的框架, 该架构被设计的更加简单并且方便组件重用, 任何一个应用可以发布它的功能, 并且其它应用程序有可以使用这些功能( 框架对于权限安全方面已经做了限定) 这个相同的机制允许用户使用自己的组件替换原来的组件
以下所有的应用是一组服务和系统, 包括:
- 一些用于创建应用的丰富的可扩展的视图Views, 包括 列表lists, 网格 grids, 文本框text boxes, 按钮buttons, 甚至是可嵌入的web 浏览器.
- 内容提供者Content Providers 使应用可以通过其它应用程序获取数据( 比如通讯簿等), 或者共享它们自己的数据
- 资源管理器Resource Manager , 提供访问本地非程序的资源的能力, 比如本地化字符串, 图片, 和布局文件
- 消息通知管理器Notification Manager 使所用的应用程序可以在状态栏显示定制的警告信息
- 作业活动管理器Activity Manager 管理着应用程序的生存周期, 并且提供了’ 返回操作’ 的导航操作
更多的详情and a walkthrough of an application, see the Notepad Tutorial .
库(Libraries):
Android 包含了了一组用于各种各样组件的C/C++ 的库, 这些能力通过Android 框架曝露给了开发人员, 下面列出了一些核心的类库:
- 系统C 库System C library - a BSD-derived implementation of the standard C system library (libc), tuned for embedded Linux-based devices
- 多媒体库Media Libraries - based on PacketVideo's OpenCORE; the libraries support playback and recording of many popular audio and video formats, as well as static image files, including MPEG4, H.264, MP3, AAC, AMR, JPG, and PNG
- 界面管理Surface Manager - manages access to the display subsystem and seamlessly composites 2D and 3D graphic layers from multiple applications
- LibWebCore - a modern web browser engine which powers both the Android browser and an embeddable web view
- SGL - the underlying 2D graphics engine
- 3D libraries - an implementation based on OpenGL ES 1.0 APIs; the libraries use either hardware 3D acceleration (where available) or the included, highly optimized 3D software rasterizer
- FreeType - bitmap and vector font rendering
- SQLite - a powerful and lightweight relational database engine available to all applications
Android 运行时(Android Runtime):
Android 包含了一组核心类库, 并且提供了许多可用的功能.
每一个Android 应用都携带者他自己的Dalvik 虚拟机以进程方式单独运行.Dalvik 被设计出来就是满足设备可以高效的运行多个虚拟机的需求. Dalvik 虚拟机执行在Dalvik 中的 *.dex 格式的文件which is optimized for minimal memory footprint. The VM is register-based, and runs classes compiled by a Java language compiler that have been transformed into the .dex format by the included "dx" tool.
The Dalvik VM relies on the Linux kernel for underlying functionality such as threading and low-level memory management.
Linux 内核(Linux Kernel):
Android 依赖于linux2.6 版本, 通过linux2.6 来实现核心系统服务, 例如安全, 内存管理, 进程管理, 网络堆栈, 和驱动模型. 该内核还在硬件和应用软件间作为一个衔接的桥梁.