Android框架简要介绍
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)。专业点能够说是高内聚、低耦合。
Android框架简要介绍的更多相关文章
- Android Debuggerd 简要介绍和源码分析(转载)
转载: http://dylangao.com/2014/05/16/android-debuggerd-%E7%AE%80%E8%A6%81%E4%BB%8B%E7%BB%8D%E5%92%8C%E ...
- Android应用程序窗口(Activity)实现框架简要介绍和学习计划
文章转载至CSDN社区罗升阳的安卓之旅,原文地址:http://blog.csdn.net/luoshengyang/article/details/8170307 前面我们学习了SurfaceFli ...
- Android编译系统简要介绍【转】
本文转载自:http://blog.csdn.net/luoshengyang/article/details/18466779 在Android源码环境中,我们开发好一个模块后,再写一个Androi ...
- Android窗口管理服务WindowManagerService的简要介绍和学习计划
在前一个系列文章中,我们从个体的角度来分析了Android应用程序窗口的实现框架.事实上,如果我们从整体的角度来看,Android应用程序窗口的 实现要更复杂,因为它们的类型和作用不同,且会相互影响. ...
- [转] Android资源管理框架(Asset Manager)简要介绍和学习计划
转自:http://blog.csdn.net/luoshengyang/article/details/8738877 Android应用程序主要由两部分内容组成:代码和资源.资源主要就是指那些与U ...
- Android应用程序的Activity启动过程简要介绍和学习计划
文章转载至CSDN社区罗升阳的安卓之旅,原文地址:http://blog.csdn.net/luoshengyang/article/details/6685853 在Android系统中,Activ ...
- Android资源管理框架(Asset Manager)简要介绍和学习计划
文章转载至CSDN社区罗升阳的安卓之旅,原文地址:http://blog.csdn.net/luoshengyang/article/details/8738877 Android应用程序主要由两部分 ...
- [转]Android系统Surface机制的SurfaceFlinger服务简要介绍和学习计划
转自:Android系统Surface机制的SurfaceFlinger服务简要介绍和学习计划 前面我们从Android应用程序与SurfaceFlinger服务的关系出发,从侧面简单学习了Surfa ...
- Android应用程序组件Content Provider简要介绍和学习计划
文章转载至CSDN社区罗升阳的安卓之旅,原文地址:http://blog.csdn.net/luoshengyang/article/details/6946067 在Android系统中,Conte ...
随机推荐
- php Aes 128位算法
<?php class Mcrypt { private static $key = "fsdjfojojodjiovjojgfosdjfiojio"; private st ...
- First Day Python介绍
前言:刚开通的博客,谢谢博客园平台,管理辛苦! Python介绍 Python是一门高级的.面向对象的.解释性.脚本语言. 高级语言:贴近开发者,对应底层语言,底层语言贴近机器:java.C#.php ...
- ASP.NET MVC上传文件 未显示页面,因为请求实体过大。解方案
在Dropzone中设置 maxFilesize: 350, //MB 但上传的文件没有到最大限定350MB,就报出来 未显示页面,因为请求实体过大的错误 Web.config中设置 maxAl ...
- 如何正确产看API
看API时,先看的它的父接口自接口,及其相关的抽象类和子类 看完后,看概述的第一段话就行,后面的不用看. 再看构造方法,并到底层去看构造方法里参数的具体含义. 最后,再将包含的方法一个个进行测试. 解 ...
- 外观模式(Facade)C++实现
外观模式 意图: 为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一系统更加容易使用. 适用性: 1.在设计初期阶段,应该要有意识的将不同的两个层分离,比如经典的三层架 ...
- Oracle表的种类及定义
1表的类型 1)堆组织表(heap organized tables). 当增加数据时,将使用在段中找到的第一个适合数据大小的空闲空间.当数据从表中删除时,留下的空间允许随后的insert和updat ...
- 【Arduino】基于arduino的激光坦克
历经了总共40来个小时,终于将这个激光坦克做好了. 这是本人的第一件像样的arduino作品. 用arduino为主控制器,配有32路舵机驱动板(在这有些大材小用了),以及一个wr703n的路由器当做 ...
- Nginx代码风格图示
Nginx代码风格图示 (100%) 一.基本原则 K&R编码风格(偏BSD子类). 每行不能超过80列. 不用TAB对齐,用空格. 默认对齐单元是4个空格. 除宏定义外,字母均为小写,单词间 ...
- Websphere 手动模拟删除应用操作
Websphere 手动模拟删除应用操作 切记:不要在程序还在运行的时候,直接的remove掉应用程序,不然,会发生意外的错误. 最近,在项目中,不小心手动移除了正在运行的应用,发现se ...
- CUDA 编程实例:计算点云法线
程序参考文章:http://blog.csdn.net/gamesdev/article/details/17535755 程序优化2 简介:CUDA ,MPI,Hadoop都是并行运算的工具.CU ...