Android是什么?


Android是一个针对于移动设备的软件栈,它包括操作系统,中间件和关键应用。AndroidSDK提供了在Android平台使用Java编程语言进行开发应用程序的必要的工具和API。
特点
*应用程序框架 使组件可重用并且可替换

*Dalvik虚拟机 为移动设备优化

*集成的浏览器 基于开源的WebKit引擎

*优化的图形处理 以定制的2D图形库和基于OpenGLES 1.0规范的3D图形(可选的硬件加速)为基础

* SQLite 结构化数据的存储

*媒体支持 常见的音视频格式,还是图形格式(MPEG4, H.264, MP3, AAC, AMR, JPG, PNG, GIF)

*GSM电话 (基于硬件)

*蓝牙,EDGE,3G和WiFi (基于硬件)

*照相机,GPS,指南针,加速感应器 (基于硬件)

*丰富的开发环境 包括设备模拟器,调试工具,内存和性能分析工具和用于Eclipse IDE的插件

Android构架


下图显示了Android操作系统的主要组成部分。每个部分进行了更详细说明。

Android开发指南中文版(一)What is Android?

应用程序

Android将配备一系列核心应用程序,包括电子邮件客户端,短信程序,日历,地图,浏览器,通讯录等。所有的应用程序都是使用Java编程语言。

应用框架


通过提供一个开放的开发平台,Android给予了开发者构建极为丰富和创新类的应用程序的机会。开发这可以自由地利用设备,访问位置信息,运行后台服务,设置闹钟,在状态条里添加通知等等。
开发人员可以使用和核心应用程序使用的完全相同的API框架。应用程序架构的设计的目的是为了简化组件的重用;任何应用程序都可以发布它的功能,其他的应用程序可能会利用到这些功能(需遵守框架提供的安全约束)。依靠同样的机制,组件可以被用户所取代。
底层的所有的应用程序是一组服务和子系统,包括:

*一组丰富并且可扩展的view,这组view可以被用来构建一个应用程序,包括列表,表格,文本框,按钮,甚至可嵌入的Web浏览器

*一组ContentProvider,可以使应用程序访问其它应用程序的数据(比如通讯录),或者共享自己的数据。

*一个资源管理器,提供对非代码资源的访问,比如本地化的字符串,图形和布局文件

*一个通知管理,可以使所有的应用程序在状态栏显示定制的提醒

*一个Activity管理,它管理的应用程序的生命周期,并且提供了一个通用的后台切换栈
如需了解一个应用程序的详细信息和具体示例,请参考Notepad代码示例。


Android包括了一套C/C++库,这套库被Android系统的各个组件使用。这些能力通过Android应用框架展示给应用开发人员。一些核心库的如下:
*系统C库 - 一个针对于标准C系统库(libc)的BSD派生的实现,针对于嵌入式Linux设备进行了调整

*媒体库 - 基于PacketVideo的的OpenCore;该库支持回放和录制许多流行的音频和视频格式,以及静态图像文件,包括MPEG4,H.264,MP3,AAC,AMR,JPG和PNG格式

*Surface管理器 - 管理访问显示子系统和从多个程序中无缝合成二维和三维图形层

*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虚拟机是基于寄存器的,并运行由dx工具将Java语言编译器编译完的class文件转换为的dex格式文件。
Dalvik虚拟机的底层功能依赖Linux内核,例如线程和底层的内存管理。

Linux内核


Android的核心系统服务,比如安全,内存管理,进程管理,网络协议栈和驱动模块都是依赖于Linux 2.6。内核也作为在硬件和软件栈之间的抽象层。

更多相关文章

  1. Android核心基础(二)
  2. [原]Android应用程序键盘(Keyboard)消息处理机制分析
  3. Intent的Action实现应用程序之间的切换
  4. 解开Android应用程序组件Activity的"singleTask"之谜(2)
  5. Android SDK Manager 和 AVD Manager使用(进行安卓虚拟机的配置)

随机推荐

  1. android SQLite的CRUD
  2. Android(安卓)ScrollView用法
  3. delphi XE Android四大组件ContentProvid
  4. android裁剪图片
  5. android 控件绘制完成的监听
  6. android fp refresh
  7. android 图片的自由缩放和旋转
  8. Android又一个超漂亮的日历控件
  9. Android常用功能
  10. Android短信拦截