当前位置: 首页 > news >正文

Android 系统的四层结构

从上图中可以看出,Android 系统架构为四层结构,从上层到下层分别是应用程序层(Applications)、 应用程序框架层 (Application Framework)、系统运行库层(Libraries)以及 Linux 内核层(Linux Kernel),分别介绍 如下:

Android 系统的四层结构 - 安卓机器人 - 安卓机器人


  • 1. 应用程序层(Applications)
Android 平 台不仅仅是操作系统, 也包含了许多应用程序,诸如 SMS 短信客户端程序、电话拨号程序、图片浏览器、Web 浏览器等应用程序。这些应用程序都是 用 Java 语言编写 的,并且这些应用程序都是可以被开发人员开发的其他应用程序所替换,这点不同于其他手机操作系统固化在系统内部的系统软件,更加 灵活和个性化。

  • 2. 应用程序框架层(Application Framework)
应用程序框架层是我们从事Android开发的基础,很多核心应用程序也是通过这一层来实现其核心功能的,该层简化了组件的重用,开发人员可以直接使用其提供的组件来进行快速的应用程序开发,也可以通过继承而实现个性化的拓展。

         A. Activity Manager(活动管理器)
              管理各个应用程序生命周期以及通常的导航回退功能

         B. Window Manager(窗口管理器)
              管理所有的窗口程序

         C. Content Provider(内容提供器)
              使不同应用程序之间存取或者分享数据

         D. View System(视图系统)
              构建应用程序的基本组件

         E. Notification Manager ( 通告管理器 )
              使得应用程序可以在状态栏中显示自定义的提示信息

         F. Package Manager(包管理器)
              Android 系统内的程序管理

         G. Telephony Manager ( 电话管理器 )
              管理所有的移动设备功能

         H. Resource Manager(资源管理器)
              提供应用程序使用的各种非代码资源,如本地化字符串、图片、布局文件、颜色文件等

         I. Location Manager ( 位置管理器 )
              提供位置服务

         J. XMPP Service(XMPP服务)
              提供Google Talk服务

  • 3. 系统运行库层(Libraries)
从图中可以看出,系统运行库层可以分成两部分,分别是系统库和 Android 运行时,分别介绍如下:
A. 系统库
系统库是应用程序框架的支撑,是连接应用程序框架层与 Linux 内核层的重要纽带。其主要分为如下几个:  
  1. Surface Manager:执行多个应用程序时候,负责管理显示与存取操作间的互动,另外也负责 2D 绘图与 3D 绘图进行显示合成。
  2. Media Framework:多媒体库,基于 PacketVideo OpenCore;支持多种常用的音频、视频格式录制和回放,编码格式包括MPEG4、MP3、H.264、AAC、ARM。
  3. SQLite : 小型的关系型数据库引擎。
  4. OpenGL|ES:根据 OpenGL ES 1.0API 标准实现的 3D 绘图函数库。
  5. FreeType:提供点阵字与向量字的描绘与显示。
  6. WebKit:一套网页浏览器的软件引擎。
  7. SGL:底层的 2D 图形渲染引擎。
  8. SSL:在 Android 上通信过程中实现握手。
  9. Libc:从 BSD 继承来的标准 C系统函数库,专门为基于 embedded linux 的设备定制。
B. Android  runtime
Android 应用程序采用 Java 语言编写,程序在 Android runtime 中执行,其运行时分为核心库和 Dalvik 虚拟机两部分。
  1. 核心库:核心库提供了 Java 语言 API 中的大多数功能,同时也包含了 Android 的一些核心 API,如 android.os、android.net、android.media 等等。
  2. Dalvik 虚 拟机:Android 程序不同于 J2me 程序,每个 Android 应用程序都有一个专有的进程,并且不是多个程序运行在一个虚拟机中,而是每 个 Android 程序都有一个 Dalvik 虚拟机的实例,并在该实例中执行。Dalvik 虚拟机是一种基于寄存器的 Java 虚拟机,而不是 传统的基于栈的虚拟机,并进行了内存资源使用的优化以及支持多个虚拟机的特点。需要注意的是,不同于 J2me,Android 程序在虚拟机中执行的并 非编译后的字节码,而是通过转换工具 dx 将 Java 字节码转成 dex 格式的中间码。
  • 4. Linux 内核层(Linux Kernel)
Android 是基于 Linux2.6 内核,其核心系统服务如安全性、内存管理、进程管理、网路协议以及驱动模型都依赖于 Linux 内核。

转载于:https://www.cnblogs.com/Ph-one/p/4457514.html

相关文章:

  • STM32硬件复位时间
  • allegro添加多个过孔
  • 珠宝
  • Unable to open c
  • allegro飞线隐藏
  • 23.allegro中钻孔[原创]
  • mediatek
  • 24.allegro中光绘gerber[原创]
  • allegro中数据库检查
  • 25.allegro中模块复用[原创]
  • 成板
  • I2C I2S SPDIF
  • A9系统时钟用外部
  • A9逻辑编译问题
  • 芯片结构
  • php的引用
  • 《Java编程思想》读书笔记-对象导论
  • Android优雅地处理按钮重复点击
  • el-input获取焦点 input输入框为空时高亮 el-input值非法时
  • Essential Studio for ASP.NET Web Forms 2017 v2,新增自定义树形网格工具栏
  • extjs4学习之配置
  • Fundebug计费标准解释:事件数是如何定义的?
  • Koa2 之文件上传下载
  • Redis字符串类型内部编码剖析
  • SpringCloud(第 039 篇)链接Mysql数据库,通过JpaRepository编写数据库访问
  • Spring核心 Bean的高级装配
  • 测试如何在敏捷团队中工作?
  • 电商搜索引擎的架构设计和性能优化
  • 翻译:Hystrix - How To Use
  • 搞机器学习要哪些技能
  • 构建二叉树进行数值数组的去重及优化
  • 猫头鹰的深夜翻译:JDK9 NotNullOrElse方法
  • 前端每日实战:70# 视频演示如何用纯 CSS 创作一只徘徊的果冻怪兽
  • 如何打造100亿SDK累计覆盖量的大数据系统
  • 算法---两个栈实现一个队列
  • 通过git安装npm私有模块
  • 微信开源mars源码分析1—上层samples分析
  • Oracle Portal 11g Diagnostics using Remote Diagnostic Agent (RDA) [ID 1059805.
  • 基于django的视频点播网站开发-step3-注册登录功能 ...
  • ​LeetCode解法汇总2696. 删除子串后的字符串最小长度
  • #鸿蒙生态创新中心#揭幕仪式在深圳湾科技生态园举行
  • %check_box% in rails :coditions={:has_many , :through}
  • (C#)获取字符编码的类
  • (cos^2 X)的定积分,求积分 ∫sin^2(x) dx
  • (WSI分类)WSI分类文献小综述 2024
  • .Net Framework 4.x 程序到底运行在哪个 CLR 版本之上
  • .net 提取注释生成API文档 帮助文档
  • .NET 线程 Thread 进程 Process、线程池 pool、Invoke、begininvoke、异步回调
  • .NET微信公众号开发-2.0创建自定义菜单
  • .NET序列化 serializable,反序列化
  • /var/spool/postfix/maildrop 下有大量文件
  • ?php echo ?,?php echo Hello world!;?
  • @require_PUTNameError: name ‘require_PUT‘ is not defined 解决方法
  • @取消转义
  • [ 隧道技术 ] 反弹shell的集中常见方式(四)python反弹shell