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将配备一系列核心应用程序,包括电子邮件客户端,短信程序,日历,地图,浏览器,通讯录等。所有的应用程序都是使用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. What is Android?
  2. 新书内容连载(3):Android(安卓)SDK中常用命令行工具(一)
  3. 新书内容连载(3):Android(安卓)SDK中常用命令行工具(一)
  4. 【转】Android新手入门 FAQ
  5. Android应用程序消息处理机制(Looper、Handler)分析
  6. 新书内容连载(3):Android(安卓)SDK中常用命令行工具(一)
  7. 跟我学Android4 之 第一部分:Android入门基础
  8. Android(安卓)渗透测试学习手册(七)不太知名的 Android(安卓)漏洞
  9. Android(安卓)加载模型

随机推荐

  1. Android(安卓)Studio高级使用详解
  2. Broadcast Receiver 的使用
  3. 在linux中配置usb连接
  4. 应用程序中捕获home按键事件
  5. [置顶] Android加载动态库失败分析
  6. Android(安卓)判断当前线程是否是主线程
  7. 我的Android进阶之旅------>Android中高
  8. Android(安卓)EditText常用属性
  9. Android(安卓)游戏开发 View框架
  10. 简单的音频播放功能MediaPlayer使用中所