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定位代码:
  1. 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系统简介(中):系统架构的更多相关文章

  1. Android系统简介(上):历史渊源

    上个月,看到微信的一系列文章,讲到Linux的鼻祖-李纳斯的传记<Just for Fun>, 其人神乎其能, 其人生过程非常有趣,值得每个程序员细细品味. 而实际上,对我而已,虽然做软件 ...

  2. "浅谈Android"第一篇:Android系统简介

    近来,看了一本书,名字叫做<第一行代码>,是CSDN一名博主写的,一本Android入门级的书,比较适合新手.看了书之后,有感而发,想来进行Android开发已经有一年多了,但欠缺系统化的 ...

  3. 【译】Android系统简介—— Activity

    续上一篇,继续介绍Android系统.上一篇: [译]Android系统简介 本文主要介绍构建Android应用的一些主要概念: Activity Activity是应用程序中一个单独的有UI的页面( ...

  4. 【译】Android系统简介

    简介  本文主要介绍Android的基础知识和体系结构,本文主题: 简介什么是Android,为什么开发者需要关注Android: Android体系结构(如Linux Kernel, Librari ...

  5. Android系统的安全设计与架构

    Android系统的安全设计与架构 一.安全策略 1.Android 的总体架构由5个主要层次上的组件构成,这5层是:Android应用层. Android框架层.Dalvik虚拟机层.用户空间原生代 ...

  6. Android 12(S) 图形显示系统 - 解读Gralloc架构及GraphicBuffer创建/传递/释放(十四)

    必读: Android 12(S) 图形显示系统 - 开篇 一.前言 在前面的文章中,已经出现过 GraphicBuffer 的身影,GraphicBuffer 是Android图形显示系统中的一个重 ...

  7. Android 获取系统相册中的所有图片

    Android 提供了API可获取到系统相册中的一些信息,主要还是通过ContentProvider 来获取想要的内容. 代码很简单,只要熟悉ContentProvider 就可以了. public ...

  8. Android 向系统日历中添加事件

    查了一天半,总算有点大概了.以下是自己的理解,有错误的地方望指正. android系统有日历功能,应用程序可以根据一些接口开发自己的功能,即使是日历app也是根据这些接口开发的,所以我们可以利用程序向 ...

  9. android开发中系统自带语音模块的使用

    android开发中系统自带语音模块的使用需求:项目中需要添加语音搜索模块,增加用户体验解决过程:在网上搜到语音搜索例子,参考网上代码,加入到了自己的项目,完成产品要求.这个问题很好解决,网上能找到很 ...

随机推荐

  1. hdoj 1257 最少拦截系统

    最少拦截系统 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Subm ...

  2. [iOS基础控件 - 1] UI概念

    A. UIView 1.概念      属于UIKit框架      屏幕上能看得见摸得着的东西就是UIView,比如屏幕上的按钮.文字.图片      翻译为:视图/控件/组件      UIBut ...

  3. UIBezierPath精讲

    前言 笔者在写本篇文章之前,也没有系统学习过贝塞尔曲线,只是曾经某一次的需求需要使用到,才临时百度看了一看而且使用最基本的功能.现在总算有时间停下来好好研究研究这个神奇而伟大的贝塞尔先生! 笔者在学习 ...

  4. Altium Designer生成网表 导出网表【worldsing笔记】

    Design -> Netlist for project -> Protel

  5. iOS多线程拾贝------操作巨人编程

    iOS多线程拾贝------操作巨人编程 多线程 基本 实现方案:pthread - NSThread - GCD - NSOperation Pthread 多平台,可移植 c语言,要程序员管理生命 ...

  6. Android中的动画学习总结

    android中动画可分为三种:帧动画,补间动画,和属性动画.其中属性动画是google推荐的,它可以实现前面两种动画的效果,运用起来更加灵活. 帧动画:顾名思义,就是一帧一帧的图片,快速播放形成的动 ...

  7. C#抽象工厂模式的几种实现方法及比较

    C#抽象工厂模式的几种实现方法及比较 本文转自:http://hi.baidu.com/tufeivista/blog/item/2ca9702978dcc6fb99250a81.html 利用设计模 ...

  8. SCSS loader effect

    p{text-indent:2em;}前端开发whqet,csdn,王海庆,whqet,前端开发专家 几天来看一组利用SCSS实现的loader effect(载入效果).鼓舞大家自行动手实现,当然也 ...

  9. iOS开发——新特性OC篇&Swift 2.0新特性

    Swift 2.0新特性     转眼间,Swift已经一岁多了,这门新鲜.语法时尚.类型安全.执行速度更快的语言已经渐渐的深入广大开发者的心.我同样也是非常喜爱这门新的编程语言. 今年6月,一年一度 ...

  10. Centos内核升级的三种方法

    本文出自 “存储之厨” 博客,请务必保留此出处http://xiamachao.blog.51cto.com/10580956/1755354 在基于CentOS平台的工作过程中,难免有时需要升级或者 ...