Android系统简介(中):系统架构
Android的系统架构栈分为4层,从上往下分别是Applications、Application framework、Libraries & Android Runtime、Linux Kernel。每层提供不同的Service功能以供上层调用。
![]()
一:Linux Kernel(Linux 内核):
- 位于Android系统架构栈的底部,整个Android系统基于该层,最新的Android Kitkat 4.4基于Linux Kernel 3.8构建的。它提供的硬件设备抽象接口,以供其他架构层使用。 Linux内核层的主要功能分为2类:提供设备驱动(WIFI、蓝牙、照相机等), 操作系统管理功能(内存、进程管理等等)。
- •内存管理(Memory Management)
- •电源管理(Power Management)
- •硬件抽象(Hardware Abstraction)
- •进程管理(Process Management)
- •设备管理(Device Management)
- •安全设置(Security Settings)
- •网络协议栈(Network Stack)
- •硬件的驱动程序(Hardware Drivers)
二:Libraries & Android Runtime(Android 原生库和Android运行时):
位于Linux内核层之上,基本由C、C++写的Android原生类库,每个负责特定的硬件设备结合或者响应UI的输入请求,如2D、3D的渲染等。功能列表如下:
•Webkit:浏览器引擎,让网页浏览的应用程序中。
•OpenGL:3D图形
•SGL:2D图形
•Surface Manager:屏幕上窗口管理器,用于视图渲染
•SQLite:数据库引擎
•Open SSL:互联网安全协议,支持SSL、TSL协议
•Media Framework:提供播放、录制各种视频、音频的格式。
•libc:远程C系统库。
•网络:提供对网络栈
•硬件:提供访问硬件的东西。
•操作系统:提供访问操作系统服务
•小工具:提供UI组件集合(如按钮,标签等)
•Free Type: 字体渲染
Android运行时包含DVM(Dalvik Virtual machine)和核心Java库, DVM的作用类似JVM(Java virtual machine),它的功能如运行字节码(byte Code),内存管理,线程管理等;它可运行.dex文件格式。
Android应用程序打包的流程如下图所示:
![]()
Core Java Libraries (Java核心库)
用Java编写的核心API库,提供了强大的功能,如:
- • Data structures
- • Utilities
- • File access
- • Network Access
- • Graphics
三 Application framework (应用程序框架层)
Android开发调用的系统服务功能,列表如下:
Core Platform Services
• Activity Manager: 管理App的生命周期
• Package Manager :用于找到设备上安装的Apps包
• Window Manager : 将用户的操作,翻译成为指令,发送给呈现在界面上的各个Window
• Resource Manager :同App的资源管理
• Content Providers :多个Apps之间共享数据
• View System: 用于在UI创建一组视图
Hardware Services
• Telephony Service :电话呼叫管理
• Location Service :GPS定位管理
• Bluetooth Service :蓝牙管理
• WiFi Service :WIFI管理
• USB Service :USB管理
• Sensor Service :传感器管理
- GPS定位代码:
- LocationManager lm = (LocationManager) Context.getSystemService(Context.LOCATION_SERVICE);
四 Applicatoin(Android 应用程序)
Android架构栈的顶层,有系统原生的App以及第三方的App。一般,开发者和用户大都关心本层,因为开发者编写的App要运行在本层。
系统原生的App有:
- SMS: 短信
- Dialer :电话
- Web browser:浏览器
- Contact manager :通讯录
- Email :电子邮件
- Games etc.:内置的一些游戏等
———————————————————-
Android系统简介(中):系统架构的更多相关文章
- Android系统简介(上):历史渊源
上个月,看到微信的一系列文章,讲到Linux的鼻祖-李纳斯的传记<Just for Fun>, 其人神乎其能, 其人生过程非常有趣,值得每个程序员细细品味. 而实际上,对我而已,虽然做软件 ...
- "浅谈Android"第一篇:Android系统简介
近来,看了一本书,名字叫做<第一行代码>,是CSDN一名博主写的,一本Android入门级的书,比较适合新手.看了书之后,有感而发,想来进行Android开发已经有一年多了,但欠缺系统化的 ...
- 【译】Android系统简介—— Activity
续上一篇,继续介绍Android系统.上一篇: [译]Android系统简介 本文主要介绍构建Android应用的一些主要概念: Activity Activity是应用程序中一个单独的有UI的页面( ...
- 【译】Android系统简介
简介 本文主要介绍Android的基础知识和体系结构,本文主题: 简介什么是Android,为什么开发者需要关注Android: Android体系结构(如Linux Kernel, Librari ...
- Android系统的安全设计与架构
Android系统的安全设计与架构 一.安全策略 1.Android 的总体架构由5个主要层次上的组件构成,这5层是:Android应用层. Android框架层.Dalvik虚拟机层.用户空间原生代 ...
- Android 12(S) 图形显示系统 - 解读Gralloc架构及GraphicBuffer创建/传递/释放(十四)
必读: Android 12(S) 图形显示系统 - 开篇 一.前言 在前面的文章中,已经出现过 GraphicBuffer 的身影,GraphicBuffer 是Android图形显示系统中的一个重 ...
- Android 获取系统相册中的所有图片
Android 提供了API可获取到系统相册中的一些信息,主要还是通过ContentProvider 来获取想要的内容. 代码很简单,只要熟悉ContentProvider 就可以了. public ...
- Android 向系统日历中添加事件
查了一天半,总算有点大概了.以下是自己的理解,有错误的地方望指正. android系统有日历功能,应用程序可以根据一些接口开发自己的功能,即使是日历app也是根据这些接口开发的,所以我们可以利用程序向 ...
- android开发中系统自带语音模块的使用
android开发中系统自带语音模块的使用需求:项目中需要添加语音搜索模块,增加用户体验解决过程:在网上搜到语音搜索例子,参考网上代码,加入到了自己的项目,完成产品要求.这个问题很好解决,网上能找到很 ...
随机推荐
- quartus II 自动生成testbench
如果自己不想写这些testbench的这些固定格式,可以在quartus里自动生成testbench文件的模板,然后往里面写信号就行了 步骤:processing->start->star ...
- nyoj 16 矩形嵌套
矩形嵌套 时间限制:3000 ms | 内存限制:65535 KB 难度:4 描述 有n个矩形,每个矩形可以用a,b来描述,表示长和宽.矩形X(a,b)可以嵌套在矩形Y(c,d)中当且仅当a& ...
- Google maps library的使用
公司的项目中用到了google地图API, 使用Google API开发就会用到Marker, 用来在google 地图上标注位置 但是google marker使用过程中也有个问题,就是如果在goo ...
- 解决eclipse 使用run运行,始终会跳到debug模式!
查看此选项是否选择中卫always,若是,更改为never或prompt,重启eclipse即可
- http协议分析工具
资源推荐 1.Wireshark抓包软件 Wireshark(前称Ethereal)是一个网络封包分析软件.网络封包分析软件的功能是撷取网络封包,并尽可能显示出最为详细的网络封包资料.Wireshar ...
- SQLite使用教程4 附加数据库
http://www.runoob.com/sqlite/sqlite-attach-database.html SQLite 附加数据库 假设这样一种情况,当在同一时间有多个数据库可用,您想使用其中 ...
- cocos2d-x 纹理深入研究
转自:http://blog.csdn.net/qq51931373/article/details/9152227 1.纹理控制. 看此代码: CCSprite *pSprite = CCSprit ...
- 使用Knoctout.分页
要点:点击标签翻页部分时,pageValue自动加1. 1.api中的方法 public ArticleListModel Get(int page,string _class) { var list ...
- BBSXP最新漏洞 简单注入检測 万能password
BBSXP最新漏洞 漏洞日期:2005年7月1日受害版本号:眼下全部BBSXP漏洞利用:查前台password注入语句:blog.asp?id=1%20union%20select%201,1,use ...
- 【转】linux中的sed命令
转自:http://www.cnblogs.com/shineshqw/articles/1978122.html 功能说明: 利用script来处理文本文件. 语 法:sed [-hnV][-e&l ...