1.      Android架构直观图

下图展示了Android系统的主要组成部分:

总体上而言,Android系统结构由5个部分组成。从上到下,别人是Applications (Android应用层)、ApplicationFramework (Android应用程序框架层)、Libraries、Android Runtime (Anroid执行时)、Linux Kernel (Linux内核)。

当中,Libraries和Android Runtime处于Android框架的同一层。

以下简要介绍这5个部分。

2.      Applications层

Android装配的一个核心应用程序集合,包含电子邮件client、SMS应用程序、日历、地图、浏览器、联系人和其它设置。全部应用程序。无论是用户开发的,还是系统内置的应用程序都在该层。

3.      Application Framework层

Android应用程序的框架层,全部的应用程序都是在该框架的基础上开发出来的。

该框架通过提供开放的开发平台,使开发人员能够编制出极其丰富和新颖的应用程序。

比如,开发人员能够自由地利用设备硬件优势、訪问位置信息、执行后台服务、设置闹钟、向状态栏中加入通知等。同一时候,开发人员能够利用核心应用程序所使用的框架APIs。此外。因为应用程序的体系结构旨在简化组件的重用,不论什么应用程序都能公布它的功能且不论什么其它的应用程序都能使用这些功能。同一时候这一机制还同意用户替换Android的组件。

实际上,全部应用程序是一组服务和系统。它们包含:

● 视图(View): 丰富的、可扩展的视图集合,用于构建一个应用程序,包含列表、网络、文本框、button,以及内嵌的网页浏览器。

● 内容提供者(ContentProviders): 使应用程序可以訪问其它应用程序的数据,或者共享自己的数据。

● 资源管理器(Resource Manager): 使应用程序可以訪问非代码资源。

如本地化字符串、图形图像,以及界面布局文件。

● 通知管理器(Notification Manager): 使全部的应用程序可以在状态栏显示自己定义的警告。

● 活动管理器(Activity Manager): 管理应用程序的生命周期。提供通用的导航回退功能。

4. Libraries层

   Android包括一个C/C++库的集合。供Android系统的各个组件使用。

这些功能通过Android的应用程序框架(application framework)暴露给开发人员。以下列出一些核心库:

● 系统C库: 标准C系统库(libc)的BSD衍生,调整为基于嵌入式Linux设备

● 媒体库: 基于PacketVideo的OpenCORE。这些库支持播放和录制很多流行的音频和视频格式,以及静态图像文件,包含MPEG4、 H.264、 MP3、 AAC、 AMR、JPG、 PNG

● 界面管理: 管理訪问显示子系统和无缝组合多个应用程序的二维和三维图形层

● LibWebCore: 新式的Web浏览器引擎,驱动Android 浏览器和内嵌的web视图

● SGL: 主要的2D图形引擎

● 3D库: 基于OpenGL ES 1.0 APIs的实现。库使用硬件3D加速或包括高度优化的3D软件光栅

● FreeType: 位图和矢量字体渲染

● SQLite: 全部应用程序都能够使用的强大而轻量级的关系数据库引擎

5. Android Runtime 层

Android 包括一个核心库的集合。提供大部分在Java编程语言核心类库中可用的功能。每个Android应用程序是Dalvik虚拟机中的实例,执行在他们自己的进程中。

Dalvik虚拟机设计成,在一个设备中能够高效地执行多个虚拟机。Dalvik虚拟机可执行文件格式是.dex。dex格式是专为Dalvik 设计的一种压缩格式,适合内存和处理器速度有限的系统。

大多数虚拟机包含JVM都是基于栈的。而Dalvik虚拟机则是基于寄存器的。两种架构各有优劣。一般而言。基于栈的机器须要很多其它指令,而基于寄存器的机器指令更大。dx 是一套工具,能够將Java.class 转换成 .dex 格式。一个dex文件一般会有多个.class。

Dalvik虚拟机依赖于Linux内核提供基本功能。如线程和底层内存管理。

6.Linux Kernel层

Android基于Linux 2.6提供核心系统服务。比如:安全、内存管理、进程管理、网络堆栈、驱动模型。Linux Kernel也作为硬件和软件之间的抽象层,它隐藏详细硬件细节而为上层提供统一的服务。

假设你学过计算机网络知道OSI/RM,就会知道分层的优点就是使用下层提供的服务而为上层提供统一的服务,屏蔽本层及下面层的差异。当本层及下面层发生了变化不会影响到上层。也就是说各层各司其职,各层提供固定的SAP(Service Access Point)。专业点能够说是高内聚、低耦合。

最新文章

  1. sip协议注册时response值的计算方法
  2. 百度地图api(摘自百度)
  3. ThinkPHP5.0完全开发手册
  4. SQL中批量删除被注入的恶意代码的方法
  5. 用Y分钟学会X
  6. EC读书笔记系列之16:条款35、36、37、38、39、40
  7. javascipt : reduce
  8. 在Signalr的Hub中写方法实现与安卓的数据交互
  9. 201521123088《Java程序设计》第12周学习总结
  10. python之Number
  11. Docker 中国官方镜像加速
  12. Jmeter——HTTP协议的接口压力测试环境搭建
  13. 一些常用Java序列化框架的比较
  14. 分布式架构原理解析,Java开发必修课
  15. httpclient绕过证书验证进行HTTPS请求
  16. dede织梦后台-退出空白,注销空白,打开空白,登录返回首页,登录返回登录页面
  17. (七):处理MFC
  18. UFT测试本地应用程序登陆小实例(描述性编程)
  19. 黄聪:FFmpeg视频转码技巧之-crf参数(H.264篇)
  20. Http跨域

热门文章

  1. hdoj--2151--Worm(dp)
  2. discuz “欣” “衡” 用户不能注册 bug修改
  3. Tomcat修改默认根目录
  4. video相关简单的api
  5. 修改织梦plus目录名
  6. windows server 2008 R2开机进度条闪过后黑屏
  7. Wireshark抓本地回环
  8. DeepMind用ReinforcementLearning玩游戏
  9. Kafka学习笔记(4)----Kafka的Leader Election
  10. apicloud开发方法。