我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Android系统架构

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Android系统架构

一、Android系统架构

         Android 是谷歌开发的一款基于 Linux 内核的操作系统。系统架构分为五层,从下到上依次是Linux内核层、硬件抽象层、系统运行库层、应用框架层和应用层。

1、应用层(System Apps)

        系统内置的应用程序以及非系统级的应用程序都属于应用层,负责与用户进行直接交互,通常都是用Java进行开发的。

2.应用框架层(Framework)

应用框架层为开发人员提供了开发应用程序所需要的API,我们平常开发应用程序都是调用这一层所提供的API,当然也包括系统应用。这一层是由Java代码编写的,可以称为Java Framework。下面来看这一层所提供的主要组件:

名称功能描述
Activity Manager(活动管理器)管理各个应用程序生命周期,以及常用的导航回退功能
Location Manager(位置管理器)提供地理位置及定位功能服务
Package Manager(包管理器)管理所有安装在Android系统中的应用程序
Notification Manager(通知管理器)使得应用程序可以在状态栏中显示自定义的提示信息
Resource Manager(资源管理器)提供应用程序使用的各种非代码资源,如本地化字符串、图片、布局文件、颜色文件等
Telephony Manager(电话管理器)管理所有的移动设备功能
Window Manager(窗口管理器)管理所有开启的窗口程序
Content Provider(内容提供者)使得不同应用程序之间可以共享数据
View System(视图系统)构建应用程序的基本组件

3.系统运行库层

        从Android系统框架图上可以看出,系统运行库层分为两部分,分别是 C/C++ 程序库和 Android 运行时库,下面分别进行介绍:

(1)C/C++程序库

名称功能描述
OpenGL ES3D绘图函数库
Libc从BSD继承来的标准C系统函数库,专门为基于嵌入式Linux的设备定制
Media Framework多媒体库,支持多种常用的音频、视频格式录制和回放。
SQLite轻型的关系型数据库引擎
SGL底层的2D图形渲染引擎
SSL安全套接层,是为网络通信提供安全及数据完整性的一种安全协议
FreeType可移植的字体引擎,它提供统一的接口来访问多种字体格式文件

(2)Android运行时库

        运行时库又分为核心库和ART(5.0系统之后,Dalvik虚拟机被ART取代)。核心库提供了Java语言核心库的大多数功能,这样开发者可以使用Java语言来编写Android应用。相较于JVM,Dalvik虚拟机是专门为移动设备定制的,允许在有限的内存中同时运行多个虚拟机的实例,并且每一个Dalvik 应用作为一个独立的Linux 进程执行。独立的进程可以防止在虚拟机崩溃的时候所有程序都被关闭。而替代Dalvik虚拟机的ART 的机制与Dalvik 不同。在Dalvik下,应用每次运行的时候,字节码都需要通过即时编译器转换为机器码,这会拖慢应用的运行效率,而在ART 环境中,应用在第一次安装的时候,字节码就会预先编译成机器码,使其成为真正的本地应用。

4.硬件抽象层(HAL)

        硬件抽象层是位于操作系统内核与硬件电路之间的接口层,其目的在于将硬件抽象化,为了保护硬件厂商的知识产权,它隐藏了特定平台的硬件接口细节,为操作系统提供虚拟硬件平台,使其具有硬件无关性,可在多种平台上进行移植。 从软硬件测试的角度来看,软硬件的测试工作都可分别基于硬件抽象层来完成,使得软硬件测试工作的并行进行成为可能。通俗来讲,就是将控制硬件的动作放在硬件抽象层中。

5.Linux内核层

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

二、SDK目录解析

1.安卓源码目录解析

Android源码根目录描述
abi应用程序二进制接口
art全新的ART运行环境
bionic系统C库
bootable启动引导相关代码
build存放系统编译规则及generic等基础开发包配置
ctsAndroid兼容性测试套件标准
dalvikdalvik虚拟机
developers开发者目录
development应用程序开发相关
device设备相关配置
docs参考文档目录
external开源模组相关文件
frameworks应用程序框架,Android系统核心部分,由Java和C++编写
hardware主要是硬件抽象层的代码
libcore核心库相关文件
libnativehelper动态库,实现JNI库的基础
ndkNDK相关代码,帮助开发人员在应用程序中嵌入C/C++代码
out编译完成后代码输出在此目录
packages应用程序包
pdkPlug Development Kit 的缩写,本地开发套件
platform_testing平台测试
prebuiltsx86和arm架构下预编译的一些资源
sdksdk和模拟器
system底层文件系统库、应用和组件
toolchain工具链文件
tools工具文件
Makefile全局Makefile文件,用来定义编译规则

2.u-boot目录解析

u-boot源码根目录描述
arch 与体系结构相关的代码,uboot的重头戏
board 根据不同开发板定制的代码,代码也不少
common 通⽤的代码,涵盖各个⽅⾯,以命令⾏处理为主
disk 磁盘分区相关代码
doc ⽂档,⼀堆README开头的⽂件
drivers 驱动,很丰富,每种类型的设备驱动占⽤⼀个⼦⽬录
examples ⽰例程序
fs ⽂件系统,⽀持嵌⼊式开发板常⻅的⽂件系统
include 头⽂件,已通⽤的头⽂件为主
lib 通⽤库⽂件
nand_spl NAND存储器相关代码
net ⽹络相关代码,⼩型的协议栈
post 加电⾃检程序

3.kernel目录解析

kernel源码根目录描述
COPYING 许可和授权信息
CREDITS 贡献者列表
Documentation Documentation与drivers下的模块对应
Kbuild 设置⼀些内核设定的脚本
Kconfig 这个脚本会在开发⼈员配置内核的时候⽤到
MAINTAINERS 这是⼀个⽬前维护者列表,他们的电⼦邮件地址,主⻚
Makefile 这个脚本是编译内核的主要⽂件
REPORTING-BUGS 这个⽂档提供如何报告问题的信息
arch 每个⽀持的处理器 架构 都在它相应的⽂件夹中,由KConfig维护,DTS也在其中修改
block 此⽂件夹包含块设备驱动程序的代码
crypto 这个⽂件夹包含许多加密 算法 的源代码
drivers ⽬录包含了驱动代码,添加修改驱动位置
frameworks应用程序框架,Android系统核心部分,由Java和C++编写
fs ⽂件系统的⽂件夹
include 包含了内核所需的各种头⽂件
init、ipc 包含了内核启动的处理代码(INITiation)
kernel 这个⽂件夹中的代码控制内核本⾝
lib 这个⽂件夹包含了内核需要引⽤的⼀系列内核库⽂件代码
mm 包含了内存管理代码
net net⽂件夹中包含了⽹络协议代码
samples  此⽂件夹包含了程序⽰例和正在编写中的模块代码
scripts 这个⽂件夹有内核编译所需的脚本
security 这个⽂件夹是有关内核安全的代码
sound 这个⽂件夹中包含了声卡驱动
usr 该⽬录中的代码为内核尚未完全启动时执⾏⽤⼾空间代码提供了⽀持
tools工具文件
virt 此⽂件夹包含了虚拟化代码,它允许⽤⼾⼀次运⾏多个操作系统

来源地址:https://blog.csdn.net/qq_53676406/article/details/130363638

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Android系统架构

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Android系统架构概况

Android的架构图如下,图中按照功能结构及面向人群进行划分,可以看出Android分成三个部分:应用部分:包含在Android设备上运行的所有应用,它们是Android系统中直接面向用户的部分。核心部分: Android系统中核心的功能
2022-06-06

002-android系统架构和分区

android的系统架构主要分为5层,包括应用层,应用框架层,核心库与运行环境层,Linux内核层。应用层: 提供了一些核心应用程序包,用来存放应用程序,主界面,联系人,浏览器,日历等。 android应用程序的界面,主要是由java程序编
2022-06-06

Android操作系统的架构是什么

Android操作系统的架构主要包括四个层级:Linux内核层:Android操作系统使用Linux内核作为基础,提供了与硬件交互的基本功能,包括进程管理、内存管理、驱动程序支持等。库层:包括Android Runtime、核心库以及面向不
Android操作系统的架构是什么
2024-04-03

Android操作系统的架构设计分析

之前一直在Android应用层上做工作,最近开始研究Android平台上的东东了,主要是在Android Frameworks层和系统库层进行研究。以下是我自己的理解,领悟,希望与大家一块分享。 Android系统架构分为Linux内核驱
2022-06-06

Android App的运行环境及Android系统架构概览

Android基于linux内核,面向移动终端的操作系统。主要包括以下几个方面: Application Framework: 这一层为应用开发者提供了丰富的应用编程接口,如 Activity Manager,Content Provide
2022-06-06

Android体系架构和开发库

Android的体系架构鼓励组件重用,允许开发者发布共享Activity、Service并且访问其他应用程序的数据,还可以根据开发者制定的安全限制进行管理。话虽如此,我将分享一些关于Android架构和开发库信息,供开发者创建下一个杀手级应
2022-06-06

浅析Android系统的架构以及程序项目的目录结构

Android框架结构 直接上图:由上图,我们可以看出Android系统架构由5部分组成, 分别是:Linux Kernel(linux内核)、Android Runtime(运行时环境)、Libraries(类库)、Application
2022-06-06

大型web系统架构详解

动态应用,是相对于网站静态内容而言,是指以c/c++、php、Java、perl、.net等服务器端语言开发的网络应用软件,比如论坛、网络相册、交友、BLOG等常见应用。动态应用系统通常与数据库系统、缓存系统、分布式存储系统等密不可分。  
2023-06-02

Linux系统架构的新视角

Linux系统架构是一个深度复杂的体系,它由多个层次的组件构成,每个组件都有不同的功能和定位。传统上,Linux系统的架构被划分为内核空间和用户空间两部分,内核空间包括内核和设备驱动程序等核心组件,用户空间包括应用程序和用户接口等高层组件。
Linux系统架构的新视角
2024-08-07

Tomcat系统架构是怎样的

这篇文章主要介绍“Tomcat系统架构是怎样的”,在日常操作中,相信很多人在Tomcat系统架构是怎样的问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Tomcat系统架构是怎样的”的疑惑有所帮助!接下来,请跟
2023-06-27

Facebook移动架构:Android Flux架构详解

要为Android应用找到一个好的架构不是一件容易的事情。谷歌似乎不太在乎这个事情,因此在设计模式上,除了Activity 生命周期管理之外,再也没有官方的推荐。但是,为你的应用打造一个架构是非常重要的。不管你是否喜欢,任何应用终都会有一个
2022-06-06

Docker在Linux系统中支持多架构构建

Docker在Linux系统中确实支持多架构构建,允许用户为不同的硬件架构(如x86_64、ARM等)构建相应的镜像。这对于在不同平台上运行容器化应用程序非常有用。以下是Docker在Linux系统中支持多架构构建的相关信息:Docker
Docker在Linux系统中支持多架构构建
2024-10-07

Linux系统架构是怎么样的

这篇文章主要介绍了Linux系统架构是怎么样的,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。我以下图为基础,说明Linux的架构(architecture)。最内层是硬件,最
2023-06-13

软考系统架构设计师多少分过?系统架构设计师45能过吗?

  软考系统架构设计师多少分过?系统架构设计师45能过吗?软考分数线自2022年开始实行相对固定合格标准,各级别、各专业、各科目的合格分数线均按满分的60%来划分。软考系统架构设计师各科目满分均为75分,也就是说45能过。  软考分数线自2022年开始实行相对固定合格标准,各级别、各专业、各科目的合格分数线均按满分的6
软考系统架构设计师多少分过?系统架构设计师45能过吗?
2024-04-19

Linux下怎么查看系统架构

这篇文章给大家分享的是有关Linux下怎么查看系统架构的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。计算机的体系结构从指令集的复杂度上可以分两类,一是复杂指令集CISC,主要是X86架构。另一类是精简指令集RIS
2023-06-28

Prometheus系统的架构是怎样的

Prometheus系统的架构主要包括以下几个组件:Prometheus Server:Prometheus服务器是整个架构的核心组件,负责收集、存储和查询指标数据。它定期从各个目标服务中拉取指标数据,并将其存储在本地时间序列数据库中。同时
Prometheus系统的架构是怎样的
2024-03-04

系统架构设计师考什么

  系统架构设计师包含三个考试科目,各科目考试形式都是笔试。系统架构设计师各科目满分均为75分,考试时间分别安排在上午和下午,上午考试题型和下午考试题型有所不同。  软考系统架构设计师包含综合知识、案例分析以及论文三个科目,各科目的考试形式都是笔试。  软考初级(信息处理技术员除外)、中级的基础知识科目和软考高级的综合
系统架构设计师考什么
2024-04-18

系统架构设计师好考吗?

  系统架构设计师属于软考高级,那么系统架构设计师好考吗?系统架构设计师考试难度大不大?编程学习网小编就跟大家来说说软考架构这门考试。  系统架构设计师好考吗?  系统架构设计师有三个考试科目,包含了综合知识、案例分析以及论文,因此难度肯定是有的。综合知识主要是选择题,相对来说会比案例分析与论文要容易一些,但是对于考试大纲
系统架构设计师好考吗?
2024-04-18

编程热搜

  • Android:VolumeShaper
    VolumeShaper(支持版本改一下,minsdkversion:26,android8.0(api26)进一步学习对声音的编辑,可以让音频的声音有变化的播放 VolumeShaper.Configuration的三个参数 durati
    Android:VolumeShaper
  • Android崩溃异常捕获方法
    开发中最让人头疼的是应用突然爆炸,然后跳回到桌面。而且我们常常不知道这种状况会何时出现,在应用调试阶段还好,还可以通过调试工具的日志查看错误出现在哪里。但平时使用的时候给你闹崩溃,那你就欲哭无泪了。 那么今天主要讲一下如何去捕捉系统出现的U
    Android崩溃异常捕获方法
  • android开发教程之获取power_profile.xml文件的方法(android运行时能耗值)
    系统的设置–>电池–>使用情况中,统计的能耗的使用情况也是以power_profile.xml的value作为基础参数的1、我的手机中power_profile.xml的内容: HTC t328w代码如下:
    android开发教程之获取power_profile.xml文件的方法(android运行时能耗值)
  • Android SQLite数据库基本操作方法
    程序的最主要的功能在于对数据进行操作,通过对数据进行操作来实现某个功能。而数据库就是很重要的一个方面的,Android中内置了小巧轻便,功能却很强的一个数据库–SQLite数据库。那么就来看一下在Android程序中怎么去操作SQLite数
    Android SQLite数据库基本操作方法
  • ubuntu21.04怎么创建桌面快捷图标?ubuntu软件放到桌面的技巧
    工作的时候为了方便直接打开编辑文件,一些常用的软件或者文件我们会放在桌面,但是在ubuntu20.04下直接直接拖拽文件到桌面根本没有效果,在进入桌面后发现软件列表中的软件只能收藏到面板,无法复制到桌面使用,不知道为什么会这样,似乎并不是很
    ubuntu21.04怎么创建桌面快捷图标?ubuntu软件放到桌面的技巧
  • android获取当前手机号示例程序
    代码如下: public String getLocalNumber() { TelephonyManager tManager =
    android获取当前手机号示例程序
  • Android音视频开发(三)TextureView
    简介 TextureView与SurfaceView类似,可用于显示视频或OpenGL场景。 与SurfaceView的区别 SurfaceView不能使用变换和缩放等操作,不能叠加(Overlay)两个SurfaceView。 Textu
    Android音视频开发(三)TextureView
  • android获取屏幕高度和宽度的实现方法
    本文实例讲述了android获取屏幕高度和宽度的实现方法。分享给大家供大家参考。具体分析如下: 我们需要获取Android手机或Pad的屏幕的物理尺寸,以便于界面的设计或是其他功能的实现。下面就介绍讲一讲如何获取屏幕的物理尺寸 下面的代码即
    android获取屏幕高度和宽度的实现方法
  • Android自定义popupwindow实例代码
    先来看看效果图:一、布局
  • Android第一次实验
    一、实验原理 1.1实验目标 编程实现用户名与密码的存储与调用。 1.2实验要求 设计用户登录界面、登录成功界面、用户注册界面,用户注册时,将其用户名、密码保存到SharedPreference中,登录时输入用户名、密码,读取SharedP
    Android第一次实验

目录