Android 系统构架
Android是基于Linux的一个操作系统,它可以分为五层,下面是它的层次架构图
一、Aplications(应用层)
应用是用Java语言编写的运行在虚拟机上的程序,应用程序是依赖于应用程序框架的。
二、Application Framework(应用框架层)
这一层是编写Google发布的核心应用时所使用的API框架,开发人员可以使用这些框架来开发自己的应用。
Activity Manager(活动管理器):用来管理应用程序生命周期并提供常用的导航退回功能。
Window Manager(窗口管理器):管理所有的窗口程序。
Content Providers(内容提供器):它可以让一个应用访问另一个应用的数据,或共享它们自己的数据。
View System(视图系统):可以用来构建应用程序,它包括列表、网格、文本框、按钮以及可嵌入的Web浏览器。
Notification Manager(通知管理器):使得应用可以在状态栏中显示自定义的提示信息。
Package Manager(程序包管理器):Android系统内的程序管理。
Resource Manager(资源管理器):提供非代码资源的访问,如本地字符串、图形和布局文件。
Telephony Manager(通讯管理器):提供了一系列用于访问与手机通讯相关的状态和信息方法。
Location Manager(位置管理器):获取设备的地理位置(经纬度);当设备进入制定的地理位置,通过通过intent通知。
XMPP Server:XMPP(可扩展消息处理现场协议)是基于可扩展标记语言(XML)的协议,它用于即时消息(IM)以及在线现场探测。XMPP Server用于实现即时通信
三、Libraries(库层)、Android Runtime(系统运行库层)
当使用Android应用框架时,Android系统会通过一些C/C++库赖支持我们使用的各个组件,使其能更好地为我们服务。
Surface Manager:显示管理器,管理访问显示子系统和从多模块应用中无缝整合2D和3D的图形。
多媒体库(MediaFramework):Android系统多媒体库,基于PackerVideo OpenCORE,该库支持多种常见格式的音频、视频的回放和录制,以及图片,比如MPEG4、MP3、AAC、AMR、JPG、PNG等。
SQLite:关系数据库。
OpenGL ES:3D效果的支持。
FreeType:位图(bitmap)及矢量(vector)。
Webkit:Web浏览器引擎。
SGL:2D图形引擎库。
SSL:位于TCP/IP协议与各种应用层协议之间,为数据通信提供支持。
Libc:Bionic系统C库,C语言标准库,系统最底层的的库,C库通过Linux系统来调用。
Android运行库分为两个部分,分别是Dalvik虚拟机和核心库(Corelibraries)
Core Libraries:核心库主要用于提供基本的Java类库的功能。
Dalvik VM:在Android操作系统中,每个Java程序都运行在Dalvik虚拟机上,其只能执行.dex的可执行文件,当Java程序通过编译后,最后还需要通过SDK中的dx工具转为成.dex格式才能正常在虚拟机上执行,Java虚拟机运行的是Java字节码,而Dalvik虚拟机运行的则是其专有的文件格式dex(Dalvik Exceutable)的文件。
Dalvik虚拟机有如下几个主要特征:
1.专有的dex文件格式。
2.dex的优化,dex文件的结构是紧凑的。
3.基于寄存器。
4.一个应用,一个虚拟机实例,一个进程。每一个Android应用都运行在一个Dalvik虚拟机实例中,每一个虚拟机实例都是一个独立的进程空间。
四、Linux Kernel(Linux内核层)
显示驱动(Display Driver):基于Linux的帧缓冲(Frame Buffer)驱动。
照相机驱动(Camera Driver):常用的基于Linux的v412(Video for Linux)的驱动。
蓝牙驱动(Bluetooth Driver):基于IEEE 802.15.1标准的无线传输技术。
Flash内存驱动(Flase Memory Driver):基于MTD的Flash驱动程序。
Binder IPC驱动:Android的一个特殊的驱动程序,具有单独的设备节点,提供进程间通信的功能。
USB驱动(USB Driver):一个基于标准Linux USB gadget驱动框架的设备驱动。
键盘驱动(Keypad Driver):作为输入设备的键盘驱动。
WiFi驱动:基于IEEE 802.11标准的驱动程序。
音频驱动(Audio Driver):常用的基于ALSA的高级Linux声音体系驱动。
Power Management(电源管理):比如电池电量等。
五、Android应用程序框架
android.app:提供高层的程序模型和基本的运行环境。
android.content:包含对各种设备上的数据进行访问和发布。
android.database:通过内容提供者浏览和操作数据库。
android.graphics:底层的图形库,包含画布、颜色过滤、点、矩形,可以将它们直接绘制到屏幕上。
android.location:定位和相关服务的类。
android.media:提供一些类管理多种音频、视频的媒体接口。
android.net:提供帮助网络访问的类,超过通常的java.net.*接口。
android.os:提供了系统服务、消息传输和IPC机制。
android.opengl:提供OpenGL的工具。
android.provider:提供访问Android内容提供者的类。
android.telephony:提供与拨打电话相关的API交互。
android.view:提供基础的用户界面接口框架。
android.util:涉及工具性的方法,例如时间日期的操作。
android.webkit:默认浏览器操作接口。
android.widget:包含各种UI元素在应用程序的布局中使用。
转载至:http://www.cnblogs.com/iceknp/archive/2011/03/29/1998590.html
Android 系统构架相关推荐
- 第二讲:Android系统构架分析和应用程序目录结构分析
2019独角兽企业重金招聘Python工程师标准>>> 本讲内容: Android系统构架简介 Android应用程序结构分析 点这里下载:Android学习指南第二讲源代码 一.A ...
- Android 系统构架(转)
Android 系统构架(转) 一.Aplications(应用层) Android 将会有一些核心的应用,比如邮件客户端.SMS程序.计算器.地图.浏览器.联系人等等.所有的应用程序都用Java语言 ...
- android 服务端技术,移动应用服务器端开发(基于JSP技术)-2017 Android系统构架 Android系统构架.docx...
Android系统构架 PAGE 1 目 录 TOC \o "1-3" \h \z \u 一.Android系统构架 1 二.Linux内核层 2 三.系统运行库层 3 (一)系统 ...
- Android系统开发(移植)和应用开发
Android是个开源的操作系统,所以可以选择的开发方式主要有两种: Android系统开发(移植): Android应用开发 1.Android系统开发(移植) Android系统开发(移植)属于底 ...
- Service与Android系统实现(1)-- 应用程序里的Service
原址:http://blog.csdn.net/21cnbao/article/details/8086487 特别声明:本系列文章作者系吴赫.分多次连载,讲述Android Service(Java ...
- (4.6.30)组件化:Android项目构架演变之路
文章目录 一.简单开发模型 二.单工程开发模型(业务逻辑分层模型) 2.1 简单开发模型的宏观分层 2.2 MOA原架构模型 2.3 业务层的分层理念与设计模式 2.3.1 分层理念 2.3.2 MV ...
- Android系统的定制
深入浅出 - Android系统移植与平台开发(1)- Android系统的定制 http://blog.csdn.net/mr_raptor/article/details/30113417?utm ...
- Android系统的应用开发与运行环境构建
当我们选择基于Android系统的移动应用开发,如何构架其应用开发与运行环境呢?本文围绕这问题展开了细致的讲解.首先让我们一起想想如下问题. P1:构建环境准备工作是什么? P2:软件安装的顺序是什么 ...
- 基于android系统的闹钟,基于Android的闹钟的软件
一.本课题要求:设计一个基于Android的闹钟的软件. 实现的功能有:能通过界面设置闹钟的启动条件建立后台服务进程,当满足触发条件时,闹钟响应相应事件. 二.需求分析 该课题实现在手机操作系统And ...
最新文章
- C语言,统计0~9出现次数。_只愿与一人十指紧扣_新浪博客
- sqlplus SPOOL 导出网页文件
- redis 3.2.1 centos7
- 成功解决AttributeError: module ‘tensorflow‘ has no attribute ‘placeholder‘
- 多元线性回归模型-数学建模类-matlab详解
- 中国大推力矢量发动机WS15 跨入 世界先进水平!
- 一双木棋chess[九省联考2018]
- ORA-01791: 不是 SELECTed 表达式
- 苹果正式推送iPadOS 13.1、iOS 13.1,修复大量Bug,速升!
- 1024当当限量优惠码!花150买400的书,花220买600的书!
- (转)Vsdocman7.2 注册版
- 微信小程序跳转微信小程序的实现
- perl语言语法基础
- Python3 Cobalt strike shellcode 免杀过 360 卫士和360杀毒
- 揭露SAP培训机构的套路
- 对ASP.NET程序员非常有用的85个工具
- 网络编程——实验一:基于TCPUDP的网络文件服务
- CF 950C.Zebras 模拟,set
- 【刷爆LeetCode】五月算法集训(14)栈
- PPP、PPPOE、PPTP、L2TP应用场合
热门文章
- Java开发数据库默认端口及网络常用端口号
- python3字典值重复统计_如何从字典列表中获取值-python 3.7.1[重复]
- springmvc 响应封装_SpringMVC 封装返回结果对象
- python判断英文字母_python判断字符串是否包含字母
- [cs231n][Module 1: Neural Networks] Image Classification
- Linux tmux 使用指南
- 究竟是什么?让程序员们怒了
- JS复制文本到剪切板
- java+opencv+intellij idea实现人脸识别
- php 读xml的两种方式