Android | Android OS 源码结构

文章详细介绍了Android9.0.0Pie的源码目录结构,包括Android.bp、ART、HAL、框架层、硬件适配接口等关键部分,并阐述了从应用层到硬件交互的系统架构,涉及系统应用、应用框架、C/C++库以及硬件抽象层等核心组件。
摘要由CSDN通过智能技术生成
  • 参考:AndroidXRef (http://androidxref.com/)
  • 版本:Pie - 9.0.0_r3

在这里插入图片描述

整体结构

对于 Android OS 的源码目录来说,各个版本的结构大同小异,随不同版本特性会有个别目录差异。编译后会额外产生一个 out 文件夹用于存储编译产生的文件。对于 Android 9.0.0 系统来说,其源码根目录结构如下:

  • Android.bp:soong 编译配置文件,使用 soong 编译前会遍历源码目录树并找到所有 .dp 文件
  • art/:ART 运行环境
  • bionic/:针对 Android OS 定制的系统C库
  • bootable/:Android OS 启动引导相关
  • bootstrap.bash
  • build/:Android OS 编译规则存放路径
  • compatibility/:Android OS 兼容性计划
  • cts/:Android OS 兼容性测试套件标准
  • dalvik/:Android Dalvik 虚拟机相关
  • developers/:Android 开发者相关文档
  • development/:Android 应用开发基础设施相关
  • device/:Android OS 设备相关配置
  • external/:Android OS 开源模组相关
  • frameworks/:应用程序框架,Android 系统核心
  • hardware/:HAL 部分相关代码,硬件适配接口
  • kernel/:Linux Kernel,默认不提供,需要自己单独下载导入
  • libcore/:Android Java 核心类库
  • libnativehelper/:Android 动态库,实现 JNI 基础
  • Makefile:全局 Makefile 文件,指定编译规则
  • packages/:应用程序包
  • pdk/:Plug Development Kit,本地开发套件
  • platform_testing/:Android OS 测试程序相关
  • prebuilts/:x86 和 arm 架构下预编译资源
  • sdk/:Android Java 层 SDK 和模拟器
  • system/:Android 底层文件系统库、应用、组件相关
  • test/:Android Vendor 测试框架相关
  • toolchain/:Android 工具链相关
  • tools/:Android 工具文件相关

系统架构实现

Android OS 的系统架构从上(直接与用户交互)到下(直接与硬件交互)分为好几层,其中每层的核心代码位于如下位置:

  • System Apps:系统应用层部分的代码主要位于 package/ 路径下
  • Frameworks:应用框架层部分的代码主要位于 frameworks/ 路径下
  • Native C/C++ Libs:种类繁多,功能全面,并不完全位于同一路径中,常用且重要的 C/C++ 程序库包括:bionic/frameworks/native/external
  • Android Runtime:Android 运行时部分代码位于 art/ 路径下
  • HAL:硬件抽象层的代码主要位于 hardware/ 路径下
  • Linux Kernel:Linux 内核层主要位于 kernel/ 路径下

应用层

应用层在 Android 平台的最上层,是直接与用户交互的部分,包含系统内置应用与三方应用。在源码目录中应用层对应 package 目录,其结构如下:

  • apps/:系统核心应用程序
  • experimental/:第三方应用程序
  • inputmethods/:输入法路径
  • providers/:内容提供者路径
  • screensavers/:屏幕保护服务
  • services/:通信服务
  • wallpapers/:壁纸服务

应用框架

Android OS 核心部分,frameworks 部分。向上给应用层提供接口,向下与 C/C++ 程序库及 HAL 等衔接。应用框架部分的代码主要位于 frameworks/avframeworks/base 路径下。

framework 路径结构如下:

  • av/:多媒体框架相关
  • base/:Android Frameworks 的主要核心目录
  • compile/:编译相关
  • data-binding/:数据绑定相关组件
  • ex/:文件解析器相关
  • hardware/:硬件适配接口相关
  • layoutlib/:布局文件相关
  • minikin/:Android 原生字体效果
  • ml/:机器学习神经网络相关
  • multidex/:多 dex 文件加载相关
  • native/:native 实现相关
  • opt/:基础应用软件相关
  • rs/:Render Script,3D 接口相关
  • support/:frameworks 支持软件
  • wilhelm/:基于 Khronos 的 OpenSL ES 与 OpenMAX AL 的audio 与 multimedia 实现

frameworks/base 路径结构如下:

  • Android.bp
  • Android.mk
  • apct-tests/:性能优化测试
  • api/:Android 应用框架层声明类、属性、资源
  • CleanSpec.mk
  • cmds/:Android OS 启动时命令 commands
  • config/:配置相关
  • core/:frameworks 核心框架组件
  • data/:Android 资源,如字体、文本、音频、视频等数据文件
  • docs/:Android 项目说明文档
  • drm/:权限管理、数字解密等模块
  • graphics/:图像渲染模块
  • keystore/:密钥库
  • libs/:库文件
  • location/:位置信息模块
  • lowpan/:loWPAN 支持模块
  • media/:多媒体管理模块
  • MODULE_LICENSE_APACHE2
  • native/:本地方法模块
  • nfc-extras/:近场通信模块 NFC
  • NOTICE
  • obex/:蓝牙模块
  • opengl/:2D 与 3D 图形绘制
  • packages/:Android 应用层基础应用实现
  • pathmap.mk
  • PREUPLOAD.cfg
  • proto/:协议框架
  • rs/:资源框架
  • samples/:样例程序
  • sax/:XML 解析器模块
  • services/:系统服务程序
  • telecomm/:通信框架
  • telephony/:电话通讯管理相关模块
  • test-base/
  • test-legacy/
  • test-mock/
  • test-runner/
  • tests/:测试相关
  • tools/:工具相关
  • vr/:VR 相关模块
  • wifi/:Wi-Fi 相关模块
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值