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. android 文件上传

    1.java原生上传 拼接上传的字符串 2.HttpClient方式上传 1.导入httpClient jar(core.mime)包 2.设置FileBody.MultiPartEntity.发送请 ...

  2. 第3组UI组件:AdapterView及其子类

    1 AdapterView类简介 1.1 AdapterView组件是一组重要的组件,AdapterView本身是一个抽线类,实际使用更多的都是Adapter相关子类,AdapterView具有如下特 ...

  3. Servlet过滤器理解

    from:http://blog.csdn.net/microtong/article/details/5007170 过滤器(Filter)的概念 过滤器位于客户端和web应用程序之间,用于检查和修 ...

  4. ios基础知识

    1获取系统语言设置 NSUserDefaults *userDefault = [NSUserDefaults standardUserDefaults]; NSArray *languages = ...

  5. 【Android开发】完美解决Android完全退出程序

    背景:假说有两个Activity, Activity1和Activity2, 1跳转到2,如果要在2退出程序,一般网上比较常见的说法是用 System.exit(0) 或是 android.os.Pr ...

  6. DP练习(初级):ZigZag

    题目来源:http://community.topcoder.com/stat?c=problem_statement&pm=1259&rd=4493 类似于求最长子串的方法.dp[0 ...

  7. mysqldump备份7

    http://www.cnblogs.com/ivictor/p/5505307.html   对于MySQL的备份,可分为以下两种: 1. 冷备 2. 热备 其中,冷备,顾名思义,就是将数据库关掉, ...

  8. javascript调试 console

    Console命令详解,让调试js代码变得更简单   Firebug是网页开发的利器,能够极大地提升工作效率. 但是,它不太容易上手.我曾经翻译过一篇<Firebug入门指南>,介绍了一些 ...

  9. nginx自定义模块编写-实时统计模块--转载

    原文:http://www.vimer.cn/2012/05/nginx%E8%87%AA%E5%AE%9A%E4%B9%89%E6%A8%A1%E5%9D%97%E7%BC%96%E5%86%99- ...

  10. iOS之SDWebImage的使用

    第一步,下载SDWebImage,导入工程.github托管地址https://github.com/rs/SDWebImage 第二步,在需要的地方导入头文件 1 #import "UII ...