安卓系统框架和Framework概述

目录

  • 一、安卓系统框架
    • 1.1 系统应用层
    • 1.2 Java 框架层
    • 1.3 Native C/C++系统库和 Android Runtime
    • 1.4 硬件抽象层(HAL)
    • 1.5 Linux Kernel 内核层
  • 二、Framework
    • 2.1 关于Framework层:
    • 2.2 Android Framework的三大核心功能
    • 2.3 多语言编写的好处


一、安卓系统框架

图为 Google 官方提供的经典分层架构图,从下往上依次分为 Linux 内核、HAL(硬件抽象层)、 系统 Native 库和 Android 运行时环境、 Java 框架层以及应用层这 5 层架构,其中每一层都包含大量的子模块或子系统。

1.1 系统应用层

Android 装配了核心应用程序集合,包括拨号、邮件、日历及相机等,所有的程序均为 Java 编程语言编写的, 用户开发的应用程序与核心应用程序均属于该层,基于 Android 的系统 API 构建。

1.2 Java 框架层

包含视图系统、内容管理器与内容、资源、通知、活动等管理器。

1.3 Native C/C++系统库和 Android Runtime

Andioid 框架 Native C/C++系统库,其中一些核心库包括系统 C 语言库、媒 体 库 、 界 面 管 理 以 及 浏 览 器 引 擎 等 。 Android Runtime (ART ) 是Android4.4 以后用来替换 Davlik 虚拟机的一种运行环境,通过在应用执行期间解析并动态的将应用程序片段字节码编译成本地机器码,提高了全局的执行效率并减少了电量消耗,提高了内存分配能力和更准确的 Application 解析能力。

1.4 硬件抽象层(HAL)

硬件抽象层提供标准接口, HAL 包括多个库模块,每个模块为特定的硬件组件提供一组接口,比如 WIFI/BT 模块; 当框架 API 请求访问设备硬件时,Android 将加载相对应的库模块。

1.5 Linux Kernel 内核层

Android 系统基于 Linux 内核,内核层为 Android 设备的各个硬件提供了相应驱动,如显示驱动、 音频驱动、 相机驱动、蓝牙/WIFI 驱动以及电源管理等。

在这里插入图片描述

在这里插入图片描述
Android 底层内核空间以 Linux Kernel 作为基石,上层用户空间由 Native 系统库、虚拟机运行环境、框架层组成, 通过系统调用(Syscall)连通系统的内核空间与用户空间。对于用户空间主要采用 C++和 Java 代码编写, 通过 JNI 技术打通用户空间的 Java 层和 Native 层(C++/C),从而连通整个系统。


二、Framework

2.1 关于Framework层:

Android的Framework是直接应用之下的一层,叫做应用程序框架Q层。这一层是核心应用程序所使用的AP!框架,为应用层提供各种API,提供各种组件和服务来支持我们的Android开发,包括ActivityManager,WindowManager,ViewSystem等。

  • 1.AcivityManagerSenvice(Ams);:负责管理所有应用程序中的Activity,它掌握所有Activity的情况,具有所有调度Activity生命周期的能力,简单来说,ActivityManagerService是管理和掌控所有的Activity.
  • 2.WindowManagerSenvice(Wms):控制窗口的显示、隐藏以及窗口的层序,简单来说,它就是管理窗口的,大多数和View有关系的都要和它打交道。
  • 3.内容提供器(Content Providers):可以让一个应用访问"另一个应用"的数据(比如联系人数据库),或者共享他们的数据
  • 4.视图系统(View System):丰富且可拓展,包括:列表(lists),网络(grids),文本框(text boxes),按钮(butons)等等
  • 5.通知管理器(Notification Manager):可以在"状态栏中"显示自定义的提示信息
  • 6.包管理器(Package Manger):对Android系统内的程序管理
  • 7.Telephony Manager主要提供了一系列用于访问与手机通讯相关的状态和信息的方法,査询电信网络状态信息,sim卡的信息等。
  • 8.Resource Manager提供非代码资源的访问,如本地字符串,图形,和布局文件(Layout files )。
  • 9.Location Manager提供设备的地址位置的获取方式。很显然,GPS导航肯定能用到位置服务。
  • 10.XMPP可扩展通讯和表示协议。前身为Jabber,提供即时通信服务。例如推送功能,Google Talk.

2.2 Android Framework的三大核心功能

  • 1、View.java:View工作原理,实现包括绘制view、处理触摸、按键事件等。
  • 2、ActivityManagerService.java:Ams 管理所有应用程序的Activity等
  • 3、WindowManagerService.java:Wms 为所有应用程序分配窗口,并管理这些窗口。

2.3 多语言编写的好处

Framework其实可以简单的理解为一些API的库房,android开发人员将一些基本功能实现,通过接口提供给上层调用,可以重复的调用
我们可以称Framework层才真正是java语言实现的层,在这层里定义的API都是用java语言编写。但是又因为它包含了JNI的方法,JNI用C/C++编写接口,根据函数表査询调用核心库层里的底层方法,最终访问到Linux内核。那么Framework层的作用就有2
个:

  • 1.用java语言编写一些规范化的模块封装成框架,供APP层开发者调用开发出具有特殊业务的手机应用,
  • 2.用Java Native lInterface调用core lib层的本地方法,JNI的库是在Dalvik虚拟机启动时加载进去的,Dalvik会直接去寻址这个JNI方法,然后去调用。

两种方式的结合达到了Java方法和操作系统的相互通信,Android为什么要用java编写FrameworK层呢?直接用C或C++不是更好?有关专家给出了如下解释:
C/C++过于底层,开发者要花很多的经历对C/C++的语言研究清楚,例如C/C++的内存机制,如果稍不注意,就会忘了开启或者释放。而Java的GC会自动处理这些,省去了很多的时间让开发者专注于自己的业务。所以才会从C/C++的底层慢慢向上变成了JAVA的开发语言,该层通过JNI和核心运行库层进行交互。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/586457.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于DCT(离散余弦变换)的图像水印算法,Matlab实现

博主简介: 专注、专一于Matlab图像处理学习、交流,matlab图像代码代做/项目合作可以联系(QQ:3249726188) 个人主页:Matlab_ImagePro-CSDN博客 原则:代码均由本人编写完成,非中介,提供…

红杉资本:2024年关于AI的4大预测

四大预测 预测一:Copilot 将逐渐向 AI Agent 转变。 2024 年,AI 将从辅助人类的 Copilot 转变为真正能替代一些人类工作的Agent。AI 将更像是一个同事,而不仅仅是一个工具,这点在软件工程、客服等行业已经初步显现。 预测二&…

AI音乐创作生成翻唱h5公众号流量主小程序开发

AI音乐创作生成翻唱h5公众号流量主小程序开发 五音不全? Ai音乐小程序系统让你秒变音乐家 分享赚钱 分享小程序给好友充值使用即可或分佣 Ai音乐素材 媒体配乐的绝佳利器 生成步骤 输入灵感/歌词 可手动输入&AI自动输入 ↓ 输入歌名 可手动输入&AI自动输入 ↓ 选择…

基于python爬虫与数据分析系统设计

**单片机设计介绍,基于python爬虫与数据分析系统设计 文章目录 一 概要二、功能设计设计思路 三、 软件设计原理图 五、 程序六、 文章目录 一 概要 基于Python爬虫与数据分析系统的设计是一个结合了网络数据抓取、清洗、存储和数据分析的综合项目。这样的系统通常…

【智能算法】蜣螂优化算法(DBO)原理及实现

目录 1.背景2.算法原理2.1算法思想2.2算法过程 3.结果展示4.参考文献 1.背景 2022年,Xue等人受到自然界中蜣螂生存行为启发,提出了蜣螂优化算法(Dung beetle optimizer, DBO)。 2.算法原理 2.1算法思想 DBO模拟了自然界蜣螂种…

Maplesoft Maple 2024(数学科学计算)mac/win

Maplesoft Maple是一款强大的数学计算软件,提供了丰富的功能和工具,用于数学建模、符号计算、数据可视化等领域的数学分析和解决方案。 Mac版软件下载:Maplesoft Maple 2024 for mac激活版 WIn版软件下载:Maplesoft Maple 2024特别…

【SpringBoot整合系列】SpirngBoot整合EasyExcel

目录 背景需求发展 EasyExcel官网介绍优势常用注解 SpringBoot整合EaxyExcel1.引入依赖2.实体类定义实体类代码示例注解解释 3.自定义转换器转换器代码示例涉及的枚举类型 4.Excel工具类5.简单导出接口SQL 6.简单导入接口SQL 7.复杂的导出(合并行、合并列&#xff0…

Linux利用Jenkins部署SpringBoot项目保姆级教程

在当今快速发展的软件开发领域,持续集成和持续部署(CI/CD)已经成为提升开发效率、缩短产品上市时间的关键实践。Linux系统以其稳定性和开源友好性,成为众多开发者和企业的首选平台。而Spring Boot,作为一个轻量级的Jav…

程序组织单元POU介绍(CODESYS)

CODESYS任务配置详细介绍请参考下面文章链接: 1、任务配置 CODESYS任务配置介绍-CSDN博客文章浏览阅读32次。看门狗是一种控制器硬件式的计时设备,看门狗的主要功能是监控程序执行时出现的异常或内部时钟发生的故障。当程序进入死循环时,看…

【THM】Burp Suite:Other Modules(其他模块)-初级渗透测试

介绍 除了广泛认可的Repeater和Intruder房间之外,Burp Suite 还包含几个鲜为人知的模块。这些将成为这个房间探索的重点。 重点将放在解码器、比较器、排序器和组织器工具上。它们促进了编码文本的操作,支持数据集的比较,允许分析捕获的令牌内的随机性,并帮助您存储和注释…

ObjectiveC-03-XCode的使用和基础数据类型

本节做为Objective-C的入门课程,笔者会从零基础开始介绍这种程序设计语言的各个方面。 术语 ObjeC:Objective-C的简称,因为完整的名称过长,后续会经缩写来代替;项目/工程:也称工程,指的是一个A…

Google DeepMind 大语言模型中的长形态事实性

🍉 CSDN 叶庭云:https://yetingyun.blog.csdn.net/ 论文标题:Long-form factuality in large language models 论文链接:https://arxiv.org/abs/2403.18802 论文的关键信息总结如下: 研究问题是什么?论文…