Android 系统框架结构_android框架-程序员宅基地

技术标签: java  android  Android  开发语言  

 目录

1.应用层(System Apps):

2.应用框架层(Java API Framework):

3.系统运行库层(Native):

4.硬件抽象层(HAL):

5.Linux内核层(Linux Kernel):


        大部分开发的同学是不太清楚Android的系统的基本架构的,特别是应用层开发的同学,故经过该文章的介绍,希望同学们对Android的架构有基本的认识。

         类似于网络的五层结构,Android系统结构也有着其五层结构,从底层到上层是一个把硬件抽象化,然后再接口化以及应用调用接口的过程。

        由上层至下层的共分为五层,依次是应用层,应用框架层,系统运行库层,硬件抽象层和Linux内核层,结构图如下所示:

1.应用层(System Apps):

        我们开发者开发的应用就是属于这一层,应用层是整个Android系统的最上层,该层包含核心的系统应用、输入法以及第三方应用等。

2.应用框架层(Java API Framework):

        应用框架层是一层衔接层,衔接再下一层的C/C++程序资源库层与应用层,应用层通过应用框架层可以调用到底层的C/C++库层。应用框架层给应用层提供调用接口API,这一层是由java代码编写的,可以称为java Framework。

框架层有以下内容:

Android manager(活动管理器):

        管理各个应用程序的生命周期;

Location Manager (位置管理器):

        提供定位功能服务;

package manager (包管理器) :

        管理安装再Android系统中的所有应用程序;

Notification manager(通知管理器):

        管理状态栏自定义提示信息;

Resource manager(资源管理器):

        管理除了代码之外的一系列资源,例如图片,布局文件,颜色文件等资源;

Telephony manager(电话管理器):

        管理移动设备功能;

Window Manager(窗口管理器):

        管理所有开启了窗口的程序;

Content Provider (内容提供器):

        使不同应用程序之间可以共享数据;

View System (视图系统) :

        构建应用程序基本组件;

3.系统运行库层(Native):

        该层分为两部分,分别是C/C++程序库和Android运行时库。

(1)C/C++程序库

        C/C++程序库能被Android系统中的不同组件所使用,并通过应用框架层这一衔接层向上给应用层提供服务。

(2)Android 运行时库(Android Runtime)

        运行时库分为核心库和ART,核心库集成了java语言核心库的大多数功能,因此可以使用开发者可以使用java语言编写Android应用。在ART机制下,系统在安装应用的时候就会进行一次预编译,将字节码预先编译成机器码并存储在本地中,这样在应用每次运行启动时就不需要再去执行编译了,大大提高了效率。

4.硬件抽象层(HAL):

        该层是位于操作系统和硬件之间的接口层,该硬件接口层将硬件抽象化,使用某个硬件功能的时候不必知道其具体硬件,该层的存在为操作系统提供了虚拟硬件平台,可在多种平台上进行移植。

5.Linux内核层(Linux Kernel):

        Android的核心服务是基于Linux内核的,并在linux的基础上添加了一些Android专用的驱动。Android系统的安全性、内存管理、进程管理、网络协议栈和驱动模型等都需要依赖该内核。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_42433094/article/details/127314911

智能推荐

什么是GNU?GNU/Linux和Linux有何区别?_linux和gnu-程序员宅基地

文章浏览阅读508次,点赞8次,收藏7次。GNU工程的目标,是构建一个包括内核在内的操作系统生态。GNU工程也在开发一个操作系统内核,叫hurd,但是开发不是很顺利,后来Linus Torvalds编写一个类似Unix的内核(Linux) ,这样,整个操作系统的组件就齐全了,GNU/Linux操作系统就发布了。GNU工程一个巨大的工程:开发一整套操作系统,包括内核、编译器、调试器、开发工具、应用软件等,绝非一个人或一个团队所能完成的,因此在1985年10月,成立了自由软件基金会,它初期用来给GNU募集资金。GNU与GNU Linux。_linux和gnu

vscode 更新后报错 Couldn‘t start dlv dap_couldn't start dlv dap-程序员宅基地

文章浏览阅读8.7k次,点赞2次,收藏6次。visio studio code port` is ignored with the 'dlv-dap'解决方法:在配置文件中加上, "debugAdapter":"legacy",参考博文:https://gitee.com/snow2zhou/vscode-go/blob/master/docs/dlv-dap.md_couldn't start dlv dap

[Java教程 25] 二维数组定义详解_java二维数组的定义-程序员宅基地

文章浏览阅读4.1k次,点赞5次,收藏10次。转载声明:商业转载请联系作者获得授权,非商业转载请注明出处.原文来自 呆萌钟【JavaSe必知必会】27-二维数组定义详解 二维数组概述二维数组其实就是一个元素为一维数组的数组。二维数组定义格式格式1数据类型[][] 变量名 = new 数据类型[m][n]; m表示这个二维数组有多少个一维数组 n表示每一个一维数组的元素个数 举例: int[][] arr =..._java二维数组的定义

python怎样控制继电器_Python 控制220V ??? 老板,你没看错!-程序员宅基地

文章浏览阅读643次。这是武散人著《自拍教程》(自动化测试Python教程)系列第60篇文章。重要提醒:本案例涉及220v危险电压上电下电测试,存在安全风险,请切勿随意尝试!!!案例故事 很多移动终端都不带电池,都是直接电源插头供电,比如Android电视机(220v),小米小爱同学智能音箱(220v转5v的电源转换器),智能后视镜(12v)等智能终端设备,Android家庭信息机平板(5v),还有电饭煲,微波炉,空调..._python实现继电器对android手机进行上下电

资源 | 分享几个强大的网站_电子世家-程序员宅基地

文章浏览阅读8.5k次,点赞5次,收藏9次。分享几个强大的网站:1、电子世家电子世家汇总了大量电子、嵌入式等网站、论坛。网址如下:http://www.dianzishijia.com/2、极客导航极客导航汇总了大量的技术、产品、设计、运营、职能等方面的内容。网址如下:https://www.gogeeks.cn/nav3、在线工具-程序员的工具箱这个网站有大量的在线工具可以使用,工具包含开发类、站长类、极客类、..._电子世家

css的animation动画_css animation-程序员宅基地

文章浏览阅读7.6k次,点赞2次,收藏12次。顾名思义,它可以控制动画的状态 – 运行或者暂停,类似于视频播放器的开始和暂停,是 CSS 动画中有限的控制动画状态的手段之一。在 1-2 秒范围内随机,这样,我们就可以得到非常自然且不同的上升动画效果,基本不会出现重复的画面,很好的模拟了随机效果。属性或其子属性,该属性允许配置动画时间、时长以及其他动画细节,但该属性不能配置动画的实际表现,动画的实际表现是由。中定义的第一帧这种说法,因为动画运行的第一帧和最后一帧的实际状态还会受到动画运行方向。,可以有效的构建更为随机的动画效果,让动画更加的自然。_css animation

随便推点

Tensorflow 使用时cpu编译报错your CPU supports instructions that this TensorFlow binary was not compiled to-程序员宅基地

文章浏览阅读1.1w次,点赞6次,收藏33次。使用TensorFlow模块时,弹出错误Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX AVX2原因是下载TensorFlow的版本不支持cpu的AVX2编译。可能是因为安装时使用的pip install tensorflow ,这样默认会下载X86_64的SIMD版本。有两种解决办法:1.忽略这个警告,不看它! 1 2 3 4_your cpu supports instructions that this tensorflow binary was not compiled

计算机本地连接无internet访问权限,ipv4连接无internet访问权限怎么解决-程序员宅基地

文章浏览阅读4.1w次,点赞7次,收藏26次。ipv4和6都没访问权限怎么办?其实这个问题很大一部分原因是因为我们的路由器设置出现了问题,我们只需要进入路由器官网重新设置一下就可以搞定了,今天我就来为各位老铁介绍一下,ipv4连接无internet访问权限解决方法吧。1、打开控制面板2、打开网络和Internet3、在网络和Internet页面中,选择网络和共享中心4、选择右边的本地连接,进入到本地连接后,点击查看详情。5、在这里我们查看一下..._ipv4无网络访问权限怎么解决

metaq学习笔记-程序员宅基地

文章浏览阅读918次。简介 metaq作为一款消息中间件,是支撑双11最为核心的系统之一,解耦收发双方,使得系统异步化,同时利用消息中间件堆积消息的功能,可以使得下游系统在可以慢慢消费消息,增强系统的缓冲能力,达到“削峰填谷”的目的思维导图 在学习前先建立了思维导图,这样在学习过程中逐步深入,理解更加透彻流程发送端 1. UML图 ..._metaproducer如何找到metaproducerimpl

MySQL5.7中mysql.user表变化_mysql5.7 table中mysql.user-程序员宅基地

文章浏览阅读5.3k次。问题描述: 逻辑全备MySQL5.6.24后,导入到MySQL5.7.18. 经测试发现部分应用账号授权有问题,无法正常访问数据库。错误信息 query failed: [1142] SELECT command denied to user ‘monitor’@’10...100’ for table ‘history_uint’ [select clock,ns,value from his_mysql5.7 table中mysql.user

面试总结9-接口测试面试题:如何做接口测试_xing2516_新浪博客-程序员宅基地

文章浏览阅读415次。关于面试总结9-接口测试面试题前言接口测试最近几年被炒的火热了,越来越多的测试同行意识到接口测试的重要性。接口测试为什么会如此重要呢?主要是平常的功能点点点,大家水平都一样,是个人都能点,面试时候如果问你平常在公司怎么测试的,你除了说点点点,还能说什么呢,无非就是这个项目点完了点那个项目,这就是为什么各行各业的只要手指能点得动的人都来转行软件测试了。面试的时候面试官希..._1,没有接口文档,如何做接口测试,面试题

SAP是什么_sap scdn-程序员宅基地

文章浏览阅读8.8k次,点赞14次,收藏60次。SAP,为“System Applications and Products”的简称,是SAP公司的产品——企业管理解决方案(ERP)的软件名称。SAP公司(纽交所代码:SAP)成立于1972年。总部位于德国沃尔多夫市,在全球拥有6万多名员工,遍布全球130个国家,并拥有覆盖全球11,500家企业的合作伙伴网络。定义从企业后台到公司决策层、从工厂仓库到商铺店面、从电脑桌面到移动终端—SAP助力用户和企业高效协作,获取商业洞见,并从竞争中脱颖而出。SAP的软件和服务能够帮助客户实现盈利性的运营_sap scdn