Android系统框架四层结构


安卓系统框架图大致如下:

(蓝色:java程序,java代码编写;黄色:运行JAVA程序而实现的虚拟机;绿色:C/C++语言编写的程序库;红色:linux内核+driver)

一、应用层 Applications

​ 即我们的app层,各种app。应用层由运行在Android设备上的所有应用构成,包括预装的系统应用和自己安装的第三方应用。大部分是由Java语言编写并运行在Dalvik虚拟机中,另一部分应用是通过c++/c语言编写的本地应用。但无论采用何种编程语言,两类应用运行的安全环境相同,都在应用沙箱中运行。而程序员正是在这层中,通过Android提供的组件和API进行开发,从而编写出形形色色的app。

二、应用框架层 Application framework

​ 集中体现Android系统系统的组件设计思想,是Android应用开发的核心,为开发者开发应用时提供基础的API框架。框架层由多个系统服务组成。我们知道Android应用是由若干个组件构成,组件与组件之间的通信是通过框架层提供的服务集中调度和传递消息实现的,而不是组件之间直接进行的。

  • View System 主要用于UI设计,包括List、Grid、Text、Button、Webview等。

  • Activity Manager Service -AMS 负责管理应用程序中的activity的生命周几以及提供activity之间切换功能等 Intent相关。

  • Windows Manager Service-WMS 用于管理所有的窗口程序,如Dialog、Toast等。

  • Recource Manager 提供非代码资源的管理 如布局文件、图形、字符串资源文件等。

  • Location Manager 负责与定位功能相关功能

  • Content Providers 提供了一组通用的数据访问接口,可用于应用程序间的内容交互,比如获取手机联系人数据等。

  • Notification Manager 用户管理手机状态栏中的自定义信息等。

  • Telephony Manager 手机底层功能管理模块,可用于获取手机串号或者调用短信功能

  • Pacakage Manager Android系统内的包管理模块,负责管理安装的应用程序。

  • XMPP Service 用于主持XMPP协议的服务,比如与Google Talk通信等

三、类库层:类库 Libraries / Android Runtime

1.类库 Libraries 由一系列的二进制动态库构成,大部分来源于优秀的第三方类库,另一部分是系统原生类库,通常使用c/c++语言开发。(因为java代码无法直接调用c/c++驱动代码,所以在这一层,系统通过封装了一系列的函数库供上层使用.)以下列举一些比较重要的类库的功能,以供了解:

  • Surface Manager: 负责管理显示与存取操作间的互动,另外也负责将2D绘图与3D绘图进行显示上的合成
  • Media Framework: 一个开源的多媒体框架,允许我们创造出更高质量与全新的播放器效果
  • SQLite: 安卓自带的数据库,是一个嵌入式的数据库
  • OpenGL ES: 是 OpenGL 三维图形 API 的子集,针对手机、PDA和游戏主机等嵌入式设备而设计。3D效果库
  • FreeType: 一个完全免费(开源)的、高质量的且可移植的字体引擎。支持位图、矢量、字体等
  • SGL: 2D图形引擎库
  • SSL: 位于TCP/IP协议与各种应用层协议之间,为数据通信提供支持。是安全数据通信的支持。
  • WebKit: 是一个开源的浏览器引擎。
  • Libc: c层中最基本的函数库

2.Android运行时 Android Runtime 是由Java核心类库(Core Libraries)和Android虚拟机(Dalvik)共同构成。

  • Java核心类库包括框架层和应用层所用到的基本Java库。

  • Dalvik是为Android量身打造的Java虚拟机,它与标准Java虚拟机JVM的差别在于Dalvik是基于寄存器设计的,而JVM是基于栈结构设计的;JVM通过解码class文件(java编译生成的的:.java—.class 的class文件)中的内容来运行程序;而Dalvik运行时是由java字节码文件进一步转化而来的文件,,并被打包成一个DEX可执行文件,Dalvik虚拟机通过解释DEX文件来执行这些字节码 ,即android的class 文件实际上只是编译过程中的中间目标文件,需要链接成dex 文件后才能在dalvik 上运行;Dalvik能够更快的编译较大的应用程序,允许在有限的内存空间中同时运行多个虚拟机的实例,每一个Dalvik应用作为一个独立的Linux进程执行,这样可以防止某一虚拟机崩溃时所有的应用都被关闭。

四、系统内核层 Linux Kernel

​ Android内核具有和标准的Linux内核一样的功能,主要实现内存管理、进程调度、进程间通信(Android增加了一种进程间的通信机制IPC Binder)、设备驱动(Display Driver: 显示驱动;Camera Driver: 照相机驱动;Flash Memory Driver: 闪存驱动;Binder Driver: IPC通讯驱动;KeyPad Driver: 键映射驱动;Wifi Driver:Wifi驱动;Audio Driver:音频驱动;Power Management:电量管理驱动)等

Android系统框架四层结构相关推荐

  1. Android系统框架-Androi的面试必问部分

    "Android系统框架"-Androi的面试必问部分 安卓系统框架层的详解: 首先我们先看看框架结构图: 通过图片可知,从上到下分为了四层:"应用程序"层-& ...

  2. android应用框架 平台结构 源代码结构 事件处理流程 Framework层收到事件的处理过程 电话处理流程

    android应用框架 平台结构 第1层: Linux操作系统及驱动 C语言实现 第2层: 本地框架和Java运行环境 C和C++实现 第3层: Java框架(framework) Java实现 第4 ...

  3. android应用程序框架图,Android系统框架图详解

    Android系统从下至上分为4层:Linux内核.Android程序库及Android运行时.Android应用程序框架,以及应用程序等. 图1-1 Android系统框架 1. Linux内核(L ...

  4. android系统框架()

    Android系统框架介绍:   1.大体框架: -src目录: 主要是完成java代码的编写 -assets目录: 资源目录 -res目录: 存储图片,布局文件和字符串,菜单等文件 -bin目录: ...

  5. android frp分区,android系统的分区结构

    android系统的分区结构 转载 ANTIBili_MC 关注 (一)Android的主要分区 Modem分区bootloader分区boot分区recoverty分区system分区data分区1 ...

  6. Android系统框架有哪些?

    Android系统很庞大,所有我们学习的都只是冰山一角.记得刚开始接触Android时,发现完全不知道如何入门去学习Android,很迷茫,很无措.所以这里大概说下Android系统的框架,希望有助于 ...

  7. android 系统框架 dx

    引用:http://www.cnblogs.com/leizhenzi/archive/2011/10/18/2216502.html 从上图中可以看出,Android系统架构为四层结构,从上层到下层 ...

  8. Android系统的系统运行库层,Android系统框架

    Android主要可以分为四层架构:Linux内核层,系统运行层,应用框架层和应用层. 1.Linux内核层 Android系统是基于Linux内核开发的,为Android设备的各种硬件提供底层驱动, ...

  9. Android系统框架

    转自:网络 Android系统是基于Linux和Java技术,它在底层采用Linux内核和本地库,在上层提供Java支持框架和开发接口.它借助于 Linux强大的稳定性.开放性和可移植性,Java语言 ...

最新文章

  1. 《微软飞行模拟》用AI还原全球15亿建筑,玩家发现bug:白金汉宫变成写字楼
  2. UA OPTI570 量子力学 原子结构基础 公式与结论总结
  3. skyline TerraBuilder 制作MPT方法与技巧(2)(转自)
  4. vuecli启动的服务器位置,在vue cli 3生成的项目中启动dev服务器
  5. 使用VS Code 开发.NET CORE 程序指南
  6. python基础0304
  7. 【转】基于SQL的Web系统安全防范——SQL注入漏洞
  8. mysql pt kill脚本_mysql 案例 ~ pt-kill工具的使用
  9. 【HAVENT原创】Spring Boot + Kafka 消息日志开发
  10. Ubuntu安装opencv的扩展模块-viz模块
  11. Ubuntu设置Root用户开机启动
  12. 1 1 2 3 5 8 java_【Java】一个斐波那契数列是由数字1、1、2、3、5、8、13、21、34等等组成的,其中每一个数字(从第三个数字起)都是前两个数字的和。...
  13. DecoupleSegNets学习总结
  14. Sqoop同步任务‘ can not be represented as java.sql.Date
  15. swing(二十一)
  16. SpringCloud之利用FTL生成Word报表并下载
  17. clickhouse修改数据存储目录
  18. 万维考试系统python_万维考试学生客户端
  19. ubuntu硬盘修复
  20. 使用Scrapy框架,爬取b站番剧信息。

热门文章

  1. 论王者荣耀英雄花木兰
  2. 债券正回购和逆回购交易操作指南
  3. 电脑配置单(自用勿删)
  4. spring4 系列一 概览
  5. FACIAL:更可控的说话人驱动
  6. linux dlopen函数,dlopen 和 dlsym 动态调用函数
  7. 安卓开发框架系列开篇
  8. 机房搬迁的一般步骤以及注意事项
  9. 计算机演奏喀秋莎教程,微课制作之喀秋莎演示教学.doc
  10. CADe_SIMu V1.0.0.1手把手学习笔记(6)