Android 系统架构大图

news2024/11/21 17:48:09

android的系统架构和其操作系统一样,采用了分层的架构。从架构图看,android分为四个层,从高层到低层分别是应用程序层、应用程序框架层、系统运行库层和Linux核心层

1.应用程序

  Android会同一系列核心应用程序包一起发布,该应用程序包包括email客户端,SMS短消息程序,日历,地图,浏览器,联系人管理程序等。所有的应用程序都是使用JAVA语言编写的。

2.应用程序框架

  开发人员也可以完全访问核心应用程序所使用的API框架。该应用程序的架构设计简化了组件的重用;任何一个应用程序都可以发布它的功能块并且任何其它的应用程序都可以使用其所发布的功能块(不过得遵循框架的安全性限制)。同样,该应用程序重用机制也使用户可以方便的替换程序组件。

  隐藏在每个应用后面的是一系列的服务和系统, 其中包括;

  * 丰富而又可扩展的视图(Views),可以用来构建应用程序, 它包括列表(lists),网格(grids),文本框(text boxes),按钮(buttons), 甚至可嵌入的web浏览器。

  * 内容提供器(Content Providers)使得应用程序可以访问另一个应用程序的数据(如联系人数据库), 或者共享它们自己的数据

  * 资源管理器(Resource Manager)提供 非代码资源的访问,如本地字符串,图形,和布局文件( layout files )。

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

  * 活动管理器( Activity Manager) 用来管理应用程序生命周期并提供常用的导航回退功能。

3.系统运行库

  1)程序库

  Android 包含一些C/C++库,这些库能被Android系统中不同的组件使用。它们通过 Android 应用程序框架为开发者提供服务。以下是一些核心库:

  * 系统 C 库 - 一个从 BSD 继承来的标准 C 系统函数库( libc ), 它是专门为基于 embedded linux 的设备定制的。

  * 媒体库 - 基于 PacketVideo OpenCORE;该库支持多种常用的音频、视频格式回放和录制,同时支持静态图像文件。编码格式包括MPEG4, H.264, MP3, AAC, AMR, JPG, PNG 。

  * Surface Manager - 对显示子系统的管理,并且为多个应用程序提 供了2D和3D图层的无缝融合。

  * LibWebCore - 一个最新的web浏览器引擎用,支持Android浏览器和一个可嵌入的web视图。

  * SGL - 底层的2D图形引擎

  * 3D libraries - 基于OpenGL ES 1.0 APIs实现;该库可以使用硬件 3D加速(如果可用)或者使用高度优化的3D软加速。

  * FreeType -位图(bitmap)和矢量(vector)字体显示。

  * SQLite - 一个对于所有应用程序可用,功能强劲的轻型关系型数据库引擎。

  2)Android 运行库

  Android 包括了一个核心库,该核心库提供了JAVA编程语言核心库的大多数功能。

   每一个Android应用程序都在它自己的进程中运行,都拥有一个独立的Dalvik虚拟机实例。Dalvik被设计成一个设备可以同时高效地运行多个 虚拟系统。 Dalvik虚拟机执行(.dex)的Dalvik可执行文件,该格式文件针对小内存使用做了优化。同时虚拟机是基于寄存器的,所有的类都经由JAVA编 译器编译,然后通过SDK中 的 "dx" 工具转化成.dex格式由虚拟机执行。

  Dalvik虚拟机依赖于linux内核的一些功能,比如线程机制和底层内存管理机制。

4.Linux 内核

  Android 的核心系统服务依赖于 Linux 2.6 内核,如安全性,内存管理,进程管理, 网络协议栈和驱动模型。 Linux 内核也同时作为硬件和软件栈之间的抽象层。

 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Kubernetes快速部署

2 Kubernetes快速部署 kubeadm是官方社区推出的一个用于快速部署kubernetes集群的工具。 这个工具能通过两条指令完成一个kubernetes集群的部署&#xff1a; # 创建一个 Master 节点 $ kubeadm init# 将一个 Node 节点加入到当前集群中 $ kubeadm join <Master节点的IP和…

堆排序详解

如有错误&#xff0c;感谢不吝赐教、交流 文章目录 算法原理堆大根堆构建大根堆 小根堆 Java实现完整代码总结 算法原理 堆 堆是一个数组&#xff0c;可以被看成一个近似的完全二叉树&#xff0c;树上的每一个结点对应数组中的一个元素。除了最底层外&#xff0c;该树是完全…

Linux如何定时执行任务

目录 crontab 介绍 安装crontab 服务操作说明 操作案例 crontab 介绍 Linux crontab是采用定期执行程序的命令&#xff0c;当安装完成操作 系统后&#xff0c;默认便会启动此任务调度命令&#xff0c;crond命令每分钟都会定期检查是否要执行任务的工作&#xff0c;如果要执…

【链表】力扣206题:反转链表

【链表】力扣206题&#xff1a;反转链表 力扣206题&#xff1a;反转链表 建议在看题目之前先了解数组的具体知识点&#xff0c;可以看这里&#xff1a; 算法基础&#xff08;三&#xff09;&#xff1a;链表知识点及题型讲解。 其它题目&#xff1a; 【链表】力扣203题&#xf…

12 JS03——数据类型

目标&#xff1a; 1、数据类型简介 2、简单数据类型 3、获取变量数据类型 4、数据类型转换 5、拓展阅读 一、数据类型简介 1、为什么需要数据类型 在计算机中&#xff0c;不同的数据所需占用的存储空间是不同的&#xff0c;为了便于把数据分成所需内存大小不同的数据&#x…

GWO灰狼优化算法以及Matlab代码

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 GWO灰狼算法原理进化更新位置更新&#xff08;紧随3只头狼&#xff09; GWO灰狼算法流程图GWO优化算法matlab代码main函数适应度函数GWO主体代码测试结果F1~ F6测试…

ESP8266通过MQTT协议连接onenet云平台

中国移动onenet平台 文章目录 中国移动onenet平台前言一、onenet平台二、ESP82661.完整代码2.联网代码3.连云代码4.数据处理 总结 前言 最近在弄onenet平台&#xff0c;用arduino结合esp8266&#xff0c;就是不知道怎么回事&#xff0c;一直连不上wifi&#xff0c;然后就用esp…

基础知识回顾

1.数组 数组工具类 二维数组 1.1概念 数组&#xff0c;标志是[ ],用于存储多个相同类型数据的集合&#xff0c;获取数组中的元素通过脚标&#xff08;下标&#xff09;来获取&#xff0c;数组下标是从0开始的 1.2创建数组 创建数组的方式分为两种 动态初始化 int[] a ne…

〖ChatGPT实践指南 - 零基础扫盲篇②〗- 深度体验 ChatGPT

文章目录 ⭐ ChatGPT 最主要的对话功能⭐ ChatGPT 对话功能的演示&#x1f31f; 搞怪案例 ① - 询问如何做 "红烧肉"&#x1f31f; 演示案例 ② - 文本翻译[翻译源码]&#x1f31f; 演示案例 ③ - 代码问题&#x1f31f; 演示案例 ④ - 修复Bug&#x1f31f; 演示案例…

串口收发字符/字符串

分析过程&#xff1a; 框图&#xff1a; 通过以上框图分析可知&#xff0c;需要分析芯片手册 RCC / GPIO / UART 1.RCC章节&#xff1a;使能对应GPIOG/GPIOB/UART4控制器 2.GPIO章节&#xff1a;1)设置引脚为复用功能模式 2)设置复用功能为串口功能 3.UART章节&#xff1a;1…

Docker常用操作

1、单机&#xff08;非docker&#xff09;启动java程序&#xff1a;nohup java -jar springbootstudy.jar 2、启动docker&#xff1a;service docker start &#xff08;构建好以后&#xff0c;就不需要了&#xff1a;docker build -f Dockerfile -t springboot-jar .&#x…

确定因果随机森林的树木数量 the number of trees

前言 推断因果性和分析异质性是统计学家在处理混杂任务中的圣杯。传统且主流的方法有:倾向性评分、分层分享、比例风险模型等。新的方法也有很多,代表就是:因果随机森林。这种算法,浅看难度一般,深入探索发现坑还是很多的。这篇博客不对算法做深入探讨,仅仅是我在阅读文…

Hudi数据湖技术之快速体验

目录 1 编译 Hudi1.1 第一步、Maven 安装1.2 第二步、下载源码包1.3 第三步、添加Maven镜像1.4 第四步、执行编译命令1.5 第五步、Hudi CLI测试 2 环境准备2.1 安装HDFS2.2 安装Spark 3.x 3 spark-shell 使用3.1 启动spark-shell3.2 模拟数据3.3 插入数据3.4 查询数据3.5 表数据…

TVM: An Automated End-to-End Optimizing Compiler for Deep Learning

https://www.usenix.org/conference/osdi18/presentation/chen 文章目录 TVM: An Automated End-to-End Optimizing Compiler for Deep Learning引言1. 简介2. 总览3. 优化计算图4. 生成张量运算4.1 张量表达式和调度空间4.3 嵌套并行与协作4.3 张量化4.4 显式内存延迟隐藏 5 .…

2023年-测试工程师面试题(前期面试的题目)

背景&#xff1a;小型电商公司&#xff0c;薪资&#xff1a;8-11k&#xff0c;职位&#xff1a;测试工程师&#xff0c;学历&#xff1a;本科 打开微信小程序“casa品集”&#xff0c;找出该小程序存在哪些bug&#xff1f; 并列出「商品详情页」的测试用例A,B两张表&#xff0c…

[Golang] Go语言基础一知半解??这些你容易忽视的知识点(第一期)

&#x1f61a;一个不甘平凡的普通人&#xff0c;致力于为Golang社区和算法学习做出贡献&#xff0c;期待您的关注和认可&#xff0c;陪您一起学习打卡&#xff01;&#xff01;&#xff01;&#x1f618;&#x1f618;&#x1f618; &#x1f917;专栏&#xff1a;算法学习 &am…

液压控制系列之活塞位置测量(带原点标定功能)

液压轴位置控制详细内容请参看下面博客文章: 液压轴位置闭环控制(比例伺服阀应用)_RXXW_Dor的博客-CSDN博客液压阀的基础知识请参看下面的博客文章:PLC液压控制系列之比例流量阀结构分析_RXXW_Dor的博客-CSDN博客比例流量阀液压同步控制的PID闭环调节可以参看下面这篇博文三…

生命周期引入

实例&#xff1a;mouted&#xff1a;当vue完成模板解析并把真实的DOM元素放入页面后调用mounted 生命周期&#xff1a; 又名&#xff1a;生命周期回调函数、生命周期函数、生命周期钩子是什么&#xff1a;vue在关键时刻帮我们调用的一些特殊名称的函数生命周期函数的名字不可更…

CEF与Qt 结合注意事项

默认情况下&#xff0c;CEF 是/MT&#xff0c;而Qt是/MD 那么&#xff0c;如果你没有去在意MT、MD选项&#xff0c;那么极大可能性&#xff0c;会遇到程序崩溃的问题&#xff0c;并且表象会误导你查明原因的方向。并且&#xff0c;更换多个IDE也无法查明原因。 例子 当加载网…

【Linux】Linux开发工具

Linux开发工具 前言Linux编辑器 --- vimvim长啥样vim的基本概念vim的配置 Linux编译器 --- gcc/g编译和链接预处理编译汇编链接 细&#x1f512;链接静态库和动态库 Linux调试器 --- gdbLinux项目自动化构建工具 --- make/Makefile依赖关系和依赖方法 上方工具的简单示例 前言 …