【译】Android开发指南(1)--什么是Android?
本博文乃原创翻译,欢迎转载,转载时请注明博客作者,谢谢:-)
http://simlelin.iteye.com/admin/blogs/1163816
什么是Android?
Android是一个移动设备的软件栈,包含了一个操作系统,中间件和一些关键的应用程序。Android SDK提供了在Android平台上使用Java语言开发应用程序所需要的工具和API。
特性
- 应用程序框架可以支持组件的重用和替换
- Dalvik虚拟机针对移动设备进行优化
- 集成了基于开源引擎WebKit的浏览器
- 由通用的2D图形库渲染的优化的2D图形绘制;基于OpenGL ES 1.0规范的3D图形绘制(硬件加速可选)
- 用于结构化数据存储的SQLite
- 多媒体支持:通用的音频、视频和图形格式(MPEG4,H.264,MP3,AAC,AMR,JPG,PNG,GIF)
- GSM通话技术(依赖于硬件)
- 蓝牙,EDGE,3G和WiFi(依赖于硬件)
- 照相机,GPS,指南针和加速度传感器(依赖于硬件)
- 丰富的开发环境,包含设备模拟器,调试工具,内存和性能分析和基于Eclipse的开发环境插件
Android架构
下图展示了Android操作系统的主要组件。每个部分在下面有更详细的描述。
Android系统架构
应用程序
Android将随系统提供一系列的核心应用程序包括:email客户端,短消息程序,日历,地图,浏览器,联系人等等。所有的应用程序由Java语言编写。
应用程序框架
通过提供一个开放的开发平台,Android提供给开发者构建极其丰富和新颖的应用程序。开发者可以免费利用设备的硬件来访问位置信息,运行后台服务,设置闹钟和状态栏的提醒,以及更多。
开发者可以全面使用和核心的应用程序完全相同的框架API。应用程序架构被设计成可以简化组件的复用;任何应用程序都可以对外提供它的功能,其它的应用程序就可以去调用这些功能(取决于框架所进行的安全限制)。同样的机制允许组件被用户所替换。
所有应用程序的基础是一系列的服务和系统组件,包括:
- 丰富和可扩展的一系列视图,以被用来构建一个应用程序,包括列视图,网格视图,文本框,按钮,甚至于一个内嵌的web浏览器
- 允许应用程序访问来自其它应用程序(例如联系人)的数据或共享它们自己数据的内容提供组件
- 一个资源管理器,提供对于非代码资源如本地化字符串、图形和布局文件的访问
- 一个通知管理器,可使所有的应用程序在状态栏理显示自定义的提醒
- 一个Activity管理器,管理应用程序的生命周期,并提供一个通用的导航返回栈
更多的细节和演示请阅读Notepad指南
库
Android包含一系列的供Android系统组件使用的C/C++库。这些功能通过Android应用程序开发框架暴露给开发者。一些核心的库列举如下:
- 系统C程序库 - 一个标准的C系统库(libc)的BSD继承的实现,适合于嵌入式的linux设备
- 多媒体库 - 基于PacketVideo的OpenCORE;此库支持播放和录音许多流行的音频和视频格式,还有静态图形文件,包括MPEG4,H.264,MP3,AAC,AMR,JPG和PNG
- 图面管理器 - 管理显示子系统的访问和在多个应用程序中无缝地合成2D和3D图层
- LibWebCore - 一个现代的web浏览器引擎,应用在了Android浏览器和嵌入的web视图中
- SGL - 2D图形引擎的基础
- 3D库 - 一个基于OpenGL ES 1.0 API的实现;此库使用了硬件的3D加速(当可用的时候)或者是高度优化的3D的软件渲染
- FreeType - 位图和矢量图的字体呈现
- SQLite - 一个强大的轻量级的可供所用引用程序使用的关系型数据库引擎
Android运行时
Android包括了一系列的提供了最常用的Java语言的核心库。
每一个Android应用程序运行在单独的进程中,拥有它自己的Dalvik虚拟机实例。Dalvik虚拟机被实现成可以让一个设备高效地运行多个虚拟机实例。Dalvik虚拟机能运行的Dalvik可执行文件(.dex)针对小内存设备进行了优化。Dalvik虚拟机基于寄存器,所运行的被Java编译器编译的class文件已经被dx工具转换成了.dex格式。
Dalvik虚拟机依赖于Linux内核,提供系统底层的功能,如并发机制和低级别的内存管理。
Linux内核
Android依赖于Linux的2.6版本的核心系统服务,如安全管理,内存管理,进程管理,网络协议栈和驱动模型。此内核也可看作是硬件和其它软件栈之间的抽象层。
更多相关文章
- android ndk 开发之 在 应用程序中使用 jni
- android 组件
- 如何删除Android自带的应用程序?
- Android的UI组件之TextView、EditText
- Android 图形系统SurfaceFlinger
- Android基本组件
- android开发2:eclipse 开发 Android 应用程序基础