本博文乃原创翻译,欢迎转载,转载时请注明博客作者,谢谢:-)

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版本的核心系统服务,如安全管理,内存管理,进程管理,网络协议栈和驱动模型。此内核也可看作是硬件和其它软件栈之间的抽象层。

更多相关文章

  1. android ndk 开发之 在 应用程序中使用 jni
  2. android 组件
  3. 如何删除Android自带的应用程序?
  4. Android的UI组件之TextView、EditText
  5. Android 图形系统SurfaceFlinger
  6. Android基本组件
  7. android开发2:eclipse 开发 Android 应用程序基础

随机推荐

  1. 网络发展遭遇瓶颈期,如何推动SDN/NFV解决
  2. Ansible Playbook详解
  3. 超实用案例:美团终端主动监控平台的建设
  4. 只需一步,永久白嫖!请低调使用!
  5. NginxWebUI 1.8.0版本发布
  6. 资深算法专家解读CTR预估业务中的深度学
  7. Spring Security技术栈开发企业级认证与
  8. 饿了么:Redis Cluster运维方案
  9. 超赞!墙裂推荐这款开源、轻量无 Agent 自
  10. Oracle中最容易被忽略的那些实用特性