📢 1. 职业规划篇
📢 2.基础篇
基础篇.用 bugreport 带你看 Crash 和 ANR
📢 3. 系统应用篇
系统应用篇.解密 Partner、google PAI 机制
📢 4. 系统篇
系统篇.SystemServer 简介、自定义 Service 服务一
系统篇.SystemServer 简介、自定义 Service 服务二
系统篇.SystemServer 简介、自定义 Service 服务三
系统篇.SystemServer 简介、自定义 Service 服务四
📢 5. 性能篇
(省)低内存优化
性能篇 (省).SystemServer 与 LMK 的 socket 通信
(稳)稳定性优化
(快)开机优化
framework交流,答疑:251662478
Android 源码目录全解析:开发者必知的 AOSP 结构!
在深入 Android 系统开发 之前,我们必须先搞清楚 AOSP(Android Open Source Project)源码结构,否则面对几十 GB 的代码量,很容易迷失方向。
今天,就带你手把手解析 AOSP 源码目录结构,搞清楚各个文件夹的作用,让你不再迷路!
📌 AOSP 源码目录结构概览
Android 源码的目录结构大致如下:
Edit
|-- Makefile
|-- art
|-- bionic
|-- bootable
|-- build
|-- cts
|-- dalvik
|-- development
|-- external
|-- frameworks
|-- hardware
|-- out
|-- packages
|-- prebuilt
|-- sdk
|-- system
|-- vendor
每个文件夹的作用不同,接下来我们逐一解析。
🟢 1. 核心基础部分
🔹 bionic(Android C 标准库)
bionic是 Android 自己实现的 C 运行库(类似于 glibc),用于适配 嵌入式环境。- 它比标准的 glibc 更轻量,并经过优化以适应 低功耗设备。
适合深入学习的方向:如果你对 NDK 开发、系统底层优化 感兴趣,可以研究
bionic代码。
🔹 bootable(引导启动相关)
bootable/recovery:包含 Android Recovery 模式 代码,比如init.rc恢复脚本、OTA 升级工具等。bootable/bootloader:引导加载相关代码(但大多数厂商会使用自己的 Bootloader)。
适合深入学习的方向:如果你想研究 刷机、Recovery 定制,可以研究
bootable/recovery。
🔹 build(编译系统)
build/make:包含 Makefile 规则 和Android.bp(蓝图文件)。build/soong:soong是 Android 新一代构建系统(替代make)。build/tools:一些构建 Android 时用到的 工具脚本。
适合深入学习的方向:
研究 如何裁剪 AOSP 体积
自定义 Android.mk / Android.bp 文件
🔹 cts(兼容性测试套件)
- CTS(Compatibility Test Suite) 用于检测 厂商修改的 Android 版本是否符合 Google 兼容性标准。
适合深入学习的方向:如果你想做 设备适配 & Google 认证,一定要搞懂 CTS!
🟢 2. 核心系统代码
🔹 dalvik(早期的 Android 虚拟机)
dalvik是 Android 4.4 以前 使用的 Java 虚拟机。- Android 5.0 之后,Google 改用了 ART(Android Runtime) ,所以
dalvik现在已经不再被使用。
适合深入学习的方向:如果你想研究 ART 虚拟机、Java 执行环境,可以深入学习
art/目录。
🔹 frameworks(Android 核心框架层)
frameworks/base:Android Java API 实现层(AMS、WMS、各种 Service)。frameworks/native:C++ 层的 系统服务(Binder、SurfaceFlinger)。frameworks/av:多媒体相关代码(音视频、相机)。frameworks/opt:Google 额外提供的 可选组件(如 Google 登录)。
适合深入学习的方向:
AMS(ActivityManagerService) 源码
WMS(WindowManagerService) 源码
Binder IPC 机制
🔹 hardware(HAL 层适配代码)
hardware/libhardware:HAL 适配层(适用于不同芯片厂商)。hardware/interfaces:HIDL(Hardware Interface Definition Language)代码。
适合深入学习的方向:
想做 驱动适配 & 硬件抽象层开发 的工程师,需要研究
hardware/目录!
🟢 3. 应用 & UI 层
🔹 packages(系统应用 & UI 组件)
packages/apps:Android 系统应用,比如 设置(Settings)、相机(Camera)、联系人(Contacts) 等。packages/providers:数据提供者,比如 日历、联系人、下载管理。packages/inputmethods:输入法(如 拼音输入法)。
适合深入学习的方向:
研究 如何修改 Android 系统应用
定制 Settings / Launcher / SystemUI
🔹 system(系统底层代码)
system/core:Android 核心系统服务(如 init、logd、vold)。system/netd:网络相关代码(WIFI / VPN)。system/sepolicy:SELinux 权限管理。
适合深入学习的方向:
研究 Android 启动流程
学习 SELinux 权限策略
🔹 vendor(厂商定制代码)
- 厂商会在
vendor/目录 放入 自己的驱动、系统定制代码。 - 例如:小米的
vendor/xiaomi,华为的vendor/huawei。
适合深入学习的方向:如果你要 适配 AOSP 到不同设备,必须研究
vendor/目录!
🟢 4. 开发者工具 & 预编译库
🔹 external(第三方开源组件)
- 存放 Android 依赖的开源项目,比如:
-
external/openssl(SSL 库)external/libpng(PNG 图片解析)external/sqlite(数据库)
适合深入学习的方向:如果你想优化 Android 网络、安全、数据库性能,可以深入研究
external/目录。
🔹 prebuilt(预编译工具 & 资源)
prebuilt/sdk:预编译的 SDK 工具。prebuilt/x86/prebuilt/arm:x86 和 ARM 设备的 预编译库。
适合深入学习的方向:如果你想裁剪 AOSP 体积,可以看看
prebuilt/里有哪些不需要的内容。
🚀 结论
如果你想深入研究 Android 系统开发,可以这样学习:
- 学习
frameworks/base/目录 → 熟悉 AMS/WMS 源码 - 研究
system/core/目录 → 理解 Android 启动流程 - 尝试修改
packages/apps/Settings→ 定制你的系统应用 - 学习
hardware/libhardware/→ 了解 HAL 适配 - 研究
vendor/目录 → 适配不同手机
Android 源码目录 庞大但有逻辑,掌握它,你就能 真正入门 Android 系统开发!
🔥 如果你想系统学习 Android 开发,记得关注我的 AOSP 系统开发课程! 🚀🚀