当前位置: 首页 > news >正文

【新手入门】Android基础知识(一):系统架构

目   录

Android 系统架构图

 1. 应用

2. JAVA API 框架

3. 原生 C/C++ 库

4. Android 运行时(Android Runtime)

5. 硬件抽象层 (HAL)

6. Linux 内核

参考资料


Android 系统架构图

    Android底层内核空间以Linux Kernel作为基石,上层用户空间由Native系统库、Android运行时、JAVA API框架和应用组成,通过系统调用(Syscall)连通系统的内核空间与用户空间。对于用户空间主要采用C++和Java代码编写,通过JNI技术打通用户空间的Java层和Native层(C++/C),从而连通整个系统。下图所示为Android系统架构。

Android系统架构

 1. 应用

       应用程序是 android 架构的顶层,包含在Android设备上运行的所有应用(包括系统应用和第三方应用),它们是Android系统中直接面向用户的部分。

        第三方应用都是基于Android提供的SDK(Sofware Development Kit)开发,并受到 SDK接口的约束。系统应用则可以调用整个框架层的接口和模块,其中的很多接口在 SDK 中是隐藏的,因此系统应用具有比第三方应用更多的权利。

2. JAVA API 框架

        Java API 框架是指构建应用所依据的一组 Java 类、接口和其他预编译代码,是 Android 的核心部分,为开发人员提供构建应用程序所需的工具和服务。

        框架层包括几项重要的服务,可以更轻松地构建功能强大且一致的 Android 应用程序,而无需从头开始创建所有内容。服务如下表所示。

关键组件功能
Activity Manager (AM)管理应用生命周期、任务栈、Activity 切换
Window Manager (WM)管理应用界面窗口、布局和绘制
Content Provider (CP)数据访问接口,实现不同应用间的数据共享
Notification Manager管理通知栏消息
Resource Manager管理资源文件,如图片、布局、字符串
Package Manager (PM)管理安装的应用包、权限信息
Telephony Manager / Location Manager提供电话、定位等硬件功能访问
View 系统 / UI 组件提供 Button、TextView、RecyclerView 等界面元素
其他系统服务SensorManager、MediaPlayer、ClipboardManager 等

3. 原生 C/C++ 库

       Native系统库主要基于C\C++实现的一些原生组件,开发者需要通过 Java API 框架层调用这些库。

库名称功能描述
OpenGL ES用于 2D 和 3D 图形渲染,提供高性能的图形处理能力,直接与 GPU 交互,可实现复杂图形效果。
Media Framework基于 PacketVideo OpenCORE,支持多种常用音频、视频格式的回放和录制,以及静态图像文件的处理。
SQLite一个轻量级的关系型数据库引擎,为所有应用程序提供数据存储和管理功能。
Surface Manager对显示子系统进行管理,为多个应用程序提供 2D 和 3D 图层的无缝融合。
Libc标准 C 系统函数库,专门为嵌入式 Linux 设备定制,提供基础的系统调用和功能支持。
OpenMAX AL一个多媒体应用程序的标准框架,用于构建和管理多媒体应用程序。
Webkit用于 WebView 的功能实现,支持网页浏览和渲染。

4. Android 运行时(Android Runtime)

        Android 运行时主要包括以下两个关键部分:

  • 核心库(Core Libraries):提供了一系列的 Java 和 Kotlin 标准库,是 Android 应用开发的基础。
  • 运行时环境(ART):负责运行Android应用程序。

从 Android 5.0(Lollipop)开始,Android 运行时默认使用 ART(Android Runtime),取代早期的 Dalvik 虚拟机。Dalvik 虚拟机采用 JIT(Just-In-Time)的解释器在程序运行时进行编译,而ART 通过预先编译(Ahead-Of-Time, AOT)应用程序代码为机器代码,显著提高了应用程序的运行效率,但同时ART需要更多的存储空间。

5. 硬件抽象层 (HAL)

      硬件抽象层(Hardware Abstraction Layer,HAL)主要提供对Linux内核驱动的封装,这种封装可以向上提供各种设备的编程接口,并且隐藏底层实现细节。HAL 让 Android 无需关注较低级别的驱动程序实现,当框架API请求访问设备硬件时,Android系统将为该硬件加载相应的库模块。

6. Linux 内核

       Android系统基于Linux内核实现,同时在该基础上添加了Android专用的驱动,例如:Binder。由于Linux系统的优秀性,基于Linux在安全性、内存管理、进程管理等都有了很大优势。
Linux内核提供安全性、内存管理、进程管理、网络协议栈和驱动模型等核心系统服务,同时也是系统硬件和软件叠层之间的抽象层。

参考资料:

1.《Android全面分析》

2.《最强Android书:架构大剖析》

3. 架构概览  |  Android Open Source Project

4. Android 架构 - GeeksforGeeks

5.《疯狂Android讲义》

http://www.lryc.cn/news/622248.html

相关文章:

  • 打靶日常-sql注入(手工+sqlmap)
  • 【Java EE进阶 --- SpringBoot】初识Spring(创建SpringBoot项目)
  • 本地生活|MallBook 分账赋能浙江本地生活服务平台,助力实现资金流转效率与合规性的双提升!
  • 一个集成多源威胁情报的聚合平台,提供实时威胁情报查询和播报服务、主动拦截威胁IP,集成AI等多项常用安全类工具
  • 超级云 APP 模式:重构移动互联网生态的新引擎
  • 高频量化详解,速度和程序化的满足!
  • QT|windwos桌面端应用程序开发,当连接多个显示器的时候,如何获取屏幕编号?
  • Storage.AI解读:构建AI数据基础设施的开放标准
  • 【nginx】如何在本地代理外部链接
  • 《探秘浏览器Web Bluetooth API设备发现流程》
  • Web 安全之 Cookie Bomb 攻击详解
  • 前端动画库之gsap
  • 【Python】一些PEP提案(六):元类、默认 UTF-8、Web 开发
  • 【LeetCode 热题 100】55. 跳跃游戏
  • 开源数据发现平台:Amundsen Frontend Service 应用程序配置
  • Cursor 分析 bug 记录
  • 基于RobustVideoMatting(RVM)进行视频人像分割(torch、onnx版本)
  • 【机器学习深度学习】客观评估主观评估:落地场景权重比例
  • 四、图与网络模型
  • 大模型性能测试完全指南:从流式响应到多模态的深度实践
  • [激光原理与应用-286]:理论 - 波动光学 - 不同频段电磁波的特点与差异性
  • Docker Compose部署Clickhouse最新版
  • 区块链技术原理(13)-以太坊燃料费Gas
  • 力扣top100(day04-03)--二分查找
  • whisper 语种检测学习笔记
  • canoe面板中的进度条的使用
  • 机器学习——PCA(主成分分析)降维
  • 岩石薄片图像数据及标签-一些研究参考
  • Ceres Solver中 SetParameterization函数的完整详解
  • MySQL视图:虚拟表的强大用途与限制