android的平台架构及特性
Android平台采用了整合的策略思想,包括底层Linux操作系统、中间层的中间件和上层的Java应用程序。下面我把Android的特性及其架构体系结构总结一下。
一、Android的平台特性
Android平台有如下特性:
1. 应用程序框架支持组件的重用与替换。
这样我们可以把系统中不喜欢的应用程序删除,安装我们喜欢的应用程序。
2. Dalvik虚拟机专门为移动设备进行了优化。
Android应用程序将由Java编写、编译的类文件通过DX工具转换成一种后缀名为.dex的文件来执行。Dalvik虚拟机是基于寄存器的,相对于Java虚拟机速度要快很多。
3. 内部集成浏览器基于开源的WebKit引擎。
有了内置的浏览器,这将意味着WAP应用的时代即将结束,真正的移动互联网时代已经来临,手机就是一台“小电脑”,可以在网上随意遨游。
4. 优化的图形库包括2D和3D图形库,3D图形库基于OpenGL ES 1.0。
强大的图形库给游戏开发带来福音。在3G最为重要的的应用莫过于手机上网和手机游戏。
5. SQLite用作结构化的数据存储。
6. 多媒体支持包括常见的音频、视频和静态印象文件格式
如MPEG4、H.264、MP3、AAC、AMR、JGP、PNG、GIF。
7. GSM电话(依赖于硬件)。
8. 蓝牙(Bluetooth)、EDGE、3G、WiFi(依赖于硬件)。
9. 照相机、GPS、指南针和加速度计(依赖于硬件)。
10. 丰富的开发环境包括设备模拟器、调试工具、内存及性能分析图表和Eclipse集成的开发环境插件。
Google提供了Android开发包SDK,其中包含了大量的类库和开发工具,并且针对Eclipse的可视化开发插件ADT。
二、Android平台架构
Android 操作系统的体系结构
从上图我们可以看出,Android操作系统的体系结构可分为4层,由上到下依次是应用程序、应用程序框架、核心类库和Linux内核,其中第三层还包括Android运行时的环境。下面分别来讲解各个部分。
1. 程序应用
Android 连同一个核心应用程序包一起发布,该应用程序包包括E-mail客户端、SMS短消息程序、日历、地图、浏览器、联系人管理程序等。所有的应用程序都是用Java编写的。
2. 应用程序框架
开发者完全可以访问核心应用程序所使用的API框架。该应用程序框架架构用来简化组件软件的重用,任何一个应用程序都可以发布它的功能块并且任何其他的应用程序都可以使用其所发布的功能块(不过得遵循框架的安全性限制)。该应用程序重用机制使得组件可以被用户替换。
以下所有的应用程序都由一系列的服务和系统组成,包括:
1)一个可扩展的视图(Views)可以用来创建应用程序,包括列表(lists)、网络(grids)、文本框(text boxes)、按钮(buttons),甚至是一个可嵌入的Web浏览器。
2)内容管理器(Content Providers)使得应用程序可以访问另一个应用程序的数据(如联系人数据库),或者共享它们自己的数据。
3)一个资源管理器(Resource Manager)提供非代码资源的访问,如本地字符串、图形和分层文件(layout files)。
4)一个通知管理器(Notification Manager)使得应用程序可以在状态栏中显示客户通知信息。
5)一个活动类管理器(Activity Manager)用来管理应用程序生命周期并提供常用的导航回退功能。
3. Android程序库
Android包括一个被Android系统中各种不同组件所使用的C/C++集库。该库通过Android应用程序框架为开发者提供服务。
以下是一些主要的核心库:
1)系统C库:一个从BSD继承来的标准C系统函数库(libc),专门为基于Embedded Linux的设备定制。
2)媒体库:基于PacketVideo OpenCORE;该库支持录放,并且可以录制许多流行的音频视频格式,还有静态映像文件包括MPEG4、H.264、MP3、AAC、JPG、PNG。
3)Surface Manager:对显示子系统的管理,并且为多个应用程序提供2D和3D图层的无缝融合。
4)LibWebCore:一个最新的Web浏览器引擎,用来支持Android浏览器和一个可嵌入的Web视图。
5)SGL:一个内置的2D图形引擎。
6)3D libraries:基于OpenGL ES 1.0 APIs实现;该库可以使用硬件3D加速(如果可用)或者使用高度优化的3D软加速。
7)FreeType:位图(bitmap)和向量(vector)字体显示。
8)SQLite:一个对于所以应用程序可用、功能强劲的轻型关系型数据库引擎。
4. Android运行库
Android包括了一个核心库,该核心库提供了Java编程语言核心库的大多数功能。
每一个Android应用程序都在它自己的进程中运行,都拥有一个独立的Dalvik虚拟机实例。Dalvik是针对同时高效地运行多个VMs实现的。Dalvik虚拟机执行.dex的Dalvik可执行文件,该格式文件针对最小内存使用做了优化。该虚拟机是基于寄存器的,所有的类都是经由Java汇编器编译,然后通过SDK中的DX工具转化成.dex格式由虚拟机执行。
Dalvik虚拟机依赖于Linux的一些功能,比如线程机制和底层内存管理机制。
5. Linux内核
Android的核心系统服务依赖于Linux内核,如安全性、内存管理、进程管理、网络协议栈和驱动模型。Linux内核也同时作为硬件和软件栈之间的硬件抽象层。
android的平台架构及特性的更多相关文章
- 58同城高性能移动Push推送平台架构演进之路
本文详细讲述58同城高性能移动Push推送平台架构演进的三个阶段,并介绍了什么是移动Push推送,为什么需要,原理和方案对比:移动Push推送第一阶段(单平台)架构如何设计:移动Push推送典型性能问 ...
- 转: 58同城高性能移动Push推送平台架构演进之路
转: http://geek.csdn.net/news/detail/58738 文/孙玄 本文详细讲述58同城高性能移动Push推送平台架构演进的三个阶段,并介绍了什么是移动Push推送,为什么需 ...
- [置顶] 遵循Java EE标准体系的开源GIS服务平台架构
传送门 ☞ 系统架构设计 ☞ 转载请注明 ☞ http://blog.csdn.net/leverage_1229 传送门 ☞ GoF23种设计模式 ☞ 转载请注明 ☞ http://blog.csd ...
- 实时Android语音对讲系统架构
本文属于Android局域网内的语音对讲项目系列,<通过UDP广播实现Android局域网Peer Discovering>实现了局域网内的广播及多播通信,本文将重点说明系统架构,音频信号 ...
- Android接口与架构(驱动开发)翻译官方文档
Android接口与架构 Android在设备的规格与驱动方面给了你很大的自由来实现.HAL层提供了一个标准的方式来打通Android系统层与硬件层.Android系统是开源的,所以你能够在接口和性能 ...
- Android 电池管理系统架构总结 Android power and battery management architecture summaries
文章目录 1 整体架构 2 设计构架 2.1 driver 2.1.1 Charger.ko 2.1.2 Battery.ko 2.2 power supply 2.2.1 基础架构 2.2.2 代码 ...
- Android入门(二):Android的系统架构
android的系统架构和其操作系统一样,采用了分层的架构.从架构图看,android分为四个层,从高层到低层分别是应用程序层.应用程序框架层.系统运行库层和linux核心层. 从技术方面看,An ...
- 论文第5章:Android绘图平台的实现
面向移动设备的矢量绘图平台设计与实现 Design and Implementation of Mobile Device-oriented Vector Drawing Platform 引用本论文 ...
- Android_进化史和平台架构介绍
一.Android平台发展史 2008年9月,谷歌正式发布了Android 1.0系统,全球第一台Android设备HTC (G1) 2009年4月,谷歌正式推出了Android 1.5 ...
随机推荐
- 线性存储结构-Stack
Stack继承于Vector,是一个模拟堆栈结构的集合类.当然也属于顺序存储结构.这里注意Android在com.android.layoutlib.bridge.impl包中也有一个Stack的实现 ...
- 【译】 AWK教程指南 附录E-正则表达式
为什么要使用正则表达式 UNIX 中提供了许多 指令 和 tools,它们具有在文件中 查找(Search)字串或替换(Replace)字串 的功能.像 grep, vi , sed, awk,... ...
- activemq 异步和同步接收
来点实在的代码,用例子来说明: 1.异步接收,主要设置messageListener.,然后编写onmessage方法,很简单 a.客户端发送5条消息 package ch02.chat; impor ...
- Leetcode OJ : Compare Version Numbers Python solution
Total Accepted: 12400 Total Submissions: 83230 Compare two version numbers version1 and version2 ...
- Redhat Enterprise Linux 6.4图形界面的中文问题
一.界面中文,但Windows中的中文文件名上传到linux后乱码. .bashrc文件: export LANG=zh_CN.UTF-8 /etc/sysconfig/i18n文件: LANG=&q ...
- HW5.29
public class Solution { public static void main(String[] args) { int n1 = (int)(Math.random() * 5 + ...
- Linux下用hostapd架无线AP
Published by 荒野无灯 on 2011-10-08 00:56:02 under 服务器/MySQL Tags: 路由,无线AP,hostapd 34452 views 本文将介绍在lin ...
- ALM11测试计划页面图解1
在 ALM 侧栏上的测试下方,选择测试计划. 在查看菜单中,选择测试网格或测试计划树. 在 ALM 侧栏上的测试下方,选择测试计划. 右键单击测试,并选择测试详细信息. 在测试计划树中选择主题文件夹, ...
- SQL Server Profiler参数说明
上图依次说明为: TextDate 依赖于跟踪中捕获的事件类的文本值: ApplicationName 创建 SQL Server 连接的客户端应用程序的名称.此列由该应用程序传递的值填充,而不是由所 ...
- [转]jquery.vTicker(垂直滚动)
转至:http://www.w3ci.com/plugin/660.html 简介 vTicker 是一款非常小巧的 jQuery 垂直滚动插件,压缩后只有 2KB.vTicker 支持自定义滚动时间 ...