Skip to main content

Android14源码包分析说明

老手直接看最后的总结

项目总览

指标数量
Java/Kotlin 源文件~130,700
C/C++ 源文件~388,700
系统应用 (packages/apps/)52 个
APEX 模块 (packages/modules/)45 个
外部依赖库 (external/)400+
支持语言90+
支持设备型号11+

一、整体架构逻辑框图

┌─────────────────────────────────────────────────────────────────────────┐
│ 应用层 (Applications) │
│ ┌──────────┐ ┌────────┐ ┌──────────┐ ┌────────┐ ┌──────────────────┐ │
│ │ Settings │ │Camera2 │ │Launcher3 │ │Gallery │ │ Messaging/Dialer │ │
│ └──────────┘ └────────┘ └──────────┘ └────────┘ └──────────────────┘ │
│ ┌──────────┐ ┌────────┐ ┌──────────┐ ┌────────┐ ┌──────────────────┐ │
│ │ Music │ │DeskClk │ │Calculator│ │ Tag │ │ 其他 40+ 系统应用 │ │
│ └──────────┘ └────────┘ └──────────┘ └────────┘ └──────────────────┘ │
│ packages/apps/ │
├─────────────────────────────────────────────────────────────────────────┤
│ APEX 模块层 (Modular System Components) │
│ ┌───────────┐ ┌──────────┐ ┌──────┐ ┌─────────┐ ┌──────────────────┐ │
│ │Connectivity│ │Bluetooth │ │ WiFi │ │Telephony│ │ DnsResolver │ │
│ └───────────┘ └──────────┘ └──────┘ └─────────┘ └──────────────────┘ │
│ ┌───────────┐ ┌──────────┐ ┌──────────────┐ ┌───────────────────────┐│
│ │Permission │ │NetworkStk│ │NeuralNetworks│ │ Virtualization/UWB ││
│ └───────────┘ └──────────┘ └──────────────┘ └───────────────────────┘│
│ packages/modules/ │
├─────────────────────────────────────────────────────────────────────────┤
│ Android 框架层 (Framework) │
│ ┌─────────────────────────────────────────────────────────────────┐ │
│ │ frameworks/base/ │ │
│ │ ┌──────────┐ ┌──────────┐ ┌────────┐ ┌────────┐ ┌─────────┐ │ │
│ │ │ android. │ │ android. │ │android.│ │android.│ │android. │ │ │
│ │ │ app.* │ │content.* │ │ view.* │ │widget.*│ │ os.* │ │ │
│ │ │ Activity │ │ContentPro│ │ View │ │TextView│ │Handler │ │ │
│ │ │ Service │ │ Intent │ │ViewGrp │ │ListView│ │Parcel │ │ │
│ │ │ Fragment │ │BroadcastR│ │Window │ │ ... │ │Bundle │ │ │
│ │ └──────────┘ └──────────┘ └────────┘ └────────┘ └─────────┘ │ │
│ │ ┌──────────┐ ┌──────────┐ ┌────────┐ ┌────────┐ ┌─────────┐ │ │
│ │ │ android. │ │ android. │ │android.│ │android.│ │android. │ │ │
│ │ │graphics.*│ │ media.* │ │ net.* │ │ hw.* │ │telephony│ │ │
│ │ │ Canvas │ │MediaPlayr│ │ Uri │ │Sensor │ │ Mgr │ │ │
│ │ │ Bitmap │ │AudioMgr │ │ConnMgr │ │Camera │ │SmsMgr │ │ │
│ │ └──────────┘ └──────────┘ └────────┘ └────────┘ └─────────┘ │ │
│ └─────────────────────────────────────────────────────────────────┘ │
│ ┌──────────────────────┐ ┌──────────────────────────────────────┐ │
│ │ frameworks/av/ │ │ frameworks/native/ │ │
│ │ 音频/视频子系统 │ │ SurfaceFlinger / InputSystem │ │
│ └──────────────────────┘ └──────────────────────────────────────┘ │
│ │
│ ┌──────────────────────────────────────────────────────────────────┐ │
│ │ System Services (frameworks/base/services/) │ │
│ │ ActivityManagerService WindowManagerService PackageManager │ │
│ │ PowerManagerService InputMethodManager NotificationMgr │ │
│ │ ConnectivityService TelephonyRegistry SensorService │ │
│ └──────────────────────────────────────────────────────────────────┘ │
├─────────────────────────────────────────────────────────────────────────┤
│ Android 运行时 (Runtime) │
│ ┌────────────────────────────┐ ┌──────────────────────────────────┐ │
│ │ ART Runtime │ │ libcore/ │ │
│ │ (art/) │ │ Core Java Libraries │ │
│ │ ┌────────┐ ┌───────────┐ │ │ java.lang / java.util / │ │
│ │ │Compiler│ │Interpreter│ │ │ java.io / java.net / │ │
│ │ │dex2oat │ │ │ │ │ java.security / javax.* │ │
│ │ └────────┘ └───────────┘ │ └──────────────────────────────────┘ │
│ │ ┌────────┐ ┌───────────┐ │ ┌──────────────────────────────────┐ │
│ │ │ GC │ │ Profiler │ │ │ libnativehelper/ │ │
│ │ │垃圾回收│ │ 方法分析 │ │ │ JNI 辅助工具库 │ │
│ │ └────────┘ └───────────┘ │ └──────────────────────────────────┘ │
│ └────────────────────────────┘ │
├─────────────────────────────────────────────────────────────────────────┤
│ 原生库与系统组件 (Native Libraries & System) │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌─────────────┐ │
│ │ bionic/ │ │ system/ │ │ system/ │ │ system/ │ │ system/ │ │
│ │ libc │ │ core/ │ │ security │ │ keymastr │ │ apex/ │ │
│ │ libm │ │ adb │ │ keystore │ │ keymint │ │ APEX框架 │ │
│ │ linker │ │ init │ │ │ │ │ │ │ │
│ │ libdl │ │ logd │ │ │ │ │ │ │ │
│ └──────────┘ └──────────┘ └──────────┘ └──────────┘ └─────────────┘ │
│ ┌──────────────────────────────────────────────────────────────────┐ │
│ │ external/ (400+ 第三方库) │ │
│ │ openssl / boringssl / icu / sqlite / zlib / libpng / freetype │ │
│ │ protobuf / v8 / chromium / libjpeg / ffmpeg ... │ │
│ └──────────────────────────────────────────────────────────────────┘ │
├─────────────────────────────────────────────────────────────────────────┤
│ 硬件抽象层 (HAL) │
│ ┌──────────────────────────────────────────────────────────────────┐ │
│ │ hardware/ │ │
│ │ ┌──────────┐ ┌─────────┐ ┌──────────┐ ┌────────┐ ┌──────────┐ │ │
│ │ │ Camera │ │ Audio │ │ Graphics │ │Sensors │ │ Bluetooth│ │ │
│ │ │ HAL │ │ HAL │ │ HAL │ │ HAL │ │ HAL │ │ │
│ │ └──────────┘ └─────────┘ └──────────┘ └────────┘ └──────────┘ │ │
│ │ ┌──────────┐ ┌─────────┐ ┌──────────┐ ┌────────┐ │ │
│ │ │ WiFi │ │ NFC │ │ GPS │ │ USB │ │ │
│ │ │ HAL │ │ HAL │ │ HAL │ │ HAL │ │ │
│ │ └──────────┘ └─────────┘ └──────────┘ └────────┘ │ │
│ └──────────────────────────────────────────────────────────────────┘ │
├─────────────────────────────────────────────────────────────────────────┤
│ Rockchip 设备定制层 (Device BSP) │
│ ┌──────────────────────────────────────────────────────────────────┐ │
│ │ device/rockchip/ │ │
│ │ ┌──────────────┐ common/ <- 共享配置、脚本、overlay │ │
│ │ ├──────────────┤ │ │
│ │ │ rk3326/ │ PX30_u / rk3326_u / rk3326_ugo │ │
│ │ ├──────────────┤ │ │
│ │ │ rk3399/ │ rk3399_u / preinstall 变体 │ │
│ │ ├──────────────┤ │ │
│ │ │ rk3562/ │ rk3562_t │ │
│ │ ├──────────────┤ │ │
│ │ │ rk3588/ │ rk3588_s / rk3588_t / rk3588_u │ │
│ │ └──────────────┘ │ │
│ └──────────────────────────────────────────────────────────────────┘ │
│ ┌─────────────┐ ┌─────────────┐ ┌────────────────────────────────┐ │
│ │ vendor/ │ │ rkbin/ │ │ RKTools/ & RKDocs/ │ │
│ │ 厂商定制代码 │ │ Rockchip │ │ 瑞芯微工具和文档 │ │
│ │ │ │ 固件二进制 │ │ SDK指南/OTA/SELinux/性能 │ │
│ └─────────────┘ └─────────────┘ └────────────────────────────────┘ │
├─────────────────────────────────────────────────────────────────────────┤
│ 内核与引导 (Kernel & Bootloader) │
│ ┌──────────────────────────────┐ ┌────────────────────────────────┐ │
│ │ kernel-6.1/ │ │ u-boot/ │ │
│ │ Linux Kernel 6.1 │ │ U-Boot 引导程序 │ │
│ │ 设备树 / 驱动 / 调度 / 内存 │ │ 初始化硬件 / 加载内核 │ │
│ └──────────────────────────────┘ └────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────────────────┘

二、构建系统逻辑

┌─────────────────────────────────────────────────────┐
│ 构建入口 │
│ build.sh (Rockchip 定制) │
└──────────────────────┬──────────────────────────────┘

┌────────────┼────────────┐
v v v
┌────────────┐ ┌─────────┐ ┌─────────┐
│ Soong │ │ Bazel │ │ Make │
│ Android.bp │ │ BUILD │ │.mk 文件 │
│ (主构建) │ │(新集成) │ │ (遗留) │
└─────┬──────┘ └────┬────┘ └────┬────┘
└─────────────┼───────────┘
v
┌──────────────────────────────┐
│ 产物 (Build Output) │
│ system.img / boot.img / │
│ vendor.img / recovery.img │
│ -> 完整刷机固件 │
└──────────────────────────────┘

三、数据流与关键模块交互

用户操作 (触摸/按键)

v
┌──────────┐ ┌───────────────┐ ┌──────────────┐
│ Input │───>│ WindowManager │───>│ Activity │
│ System │ │ Service │ │ Manager │
└──────────┘ └───────────────┘ │ Service │
└──────┬───────┘

┌─────────────────────────┼──────────────────┐
v v v
┌───────────┐ ┌──────────────┐ ┌────────────┐
│ App层 │ │ Content │ │ System │
│ Activity │<────────>│ Provider │ │ Services │
│ Fragment │ │ (数据共享) │ │ (后台) │
│ View树 │ └──────────────┘ └────────────┘
└─────┬─────┘
│ 渲染
v
┌───────────┐ ┌──────────────┐ ┌──────────────┐
│ Surface │───>│ SurfaceFlinger│───>│ Display │
│ (绘图缓冲)│ │ (合成引擎) │ │ (屏幕输出) │
└───────────┘ └──────────────┘ └──────────────┘

v
┌──────────────┐
│ Hardware │
│ Composer HAL │
│ (GPU/DPU) │
└──────────────┘

四、系统启动流程

上电

v
┌────────┐ ┌────────┐ ┌────────┐ ┌─────────────┐
│ rkbin/ │────>│U-Boot │────>│ Kernel │────>│ init │
│BootROM │ │引导加载 │ │ 6.1 │ │ (system/core│
│ 固件 │ │ │ │ │ │ /init) │
└────────┘ └────────┘ └────────┘ └──────┬──────┘

┌───────────────┼───────────┐
v v v
┌──────────┐ ┌──────────┐ ┌─────────┐
│ Zygote │ │ ServiceMgr│ │ SurfaceF│
│ (ART启动)│ │ (Binder) │ │ linger │
└────┬─────┘ └──────────┘ └─────────┘

┌────┴─────┐
v v
┌──────────┐ ┌──────────┐
│SystemSrvr│ │ Launcher│
│系统服务 │ │ 桌面 │
└──────────┘ └──────────┘

五、核心功能模块说明

模块路径功能
Framework Coreframeworks/base/core/Android 核心 API:Activity、Service、ContentProvider、BroadcastReceiver 四大组件
System Servicesframeworks/base/services/AMS、WMS、PMS、PowerManager 等系统服务,Android 的"大脑"
AV 子系统frameworks/av/音视频编解码、MediaPlayer、Camera Service、AudioFlinger
Native Frameworkframeworks/native/SurfaceFlinger 显示合成、InputDispatcher 输入分发、Binder IPC
ART 运行时art/DEX 字节码编译(dex2oat)、解释执行、GC 垃圾回收、JIT 编译
Bionicbionic/Android 定制 C 库(libc/libm/linker),替代 glibc
HALhardware/Camera/Audio/Graphics/Sensor 等硬件抽象接口,隔离上层与驱动
Kernelkernel-6.1/Linux 6.1 内核,含 Rockchip 特定驱动和设备树
U-Bootu-boot/引导加载程序,初始化硬件并启动内核
Device BSPdevice/rockchip/各芯片型号的 BoardConfig、产品定义、Overlay、SEPolicy
System Appspackages/apps/52 个系统应用:Settings、Camera、Launcher、Gallery 等
APEX Modulespackages/modules/可独立更新的模块化组件:Connectivity、Bluetooth、WiFi 等

六、顶层目录结构说明

目录说明
frameworks/核心 Android 框架 (base/av/native/rs/minikin等)
packages/系统应用和模块化组件
external/400+ 外部第三方库和依赖
system/系统级组件 (core/security/apex/keymaster等)
art/Android Runtime (Dalvik/ART)
device/设备特定配置 (Rockchip 各板型)
hardware/硬件抽象层
build/构建系统 (Soong/Blueprint)
bionic/C 库和系统工具
libcore/核心 Java 库
libnativehelper/JNI 辅助工具
kernel-6.1/Linux 内核
u-boot/引导加载程序
rkbin/Rockchip 二进制工具
prebuilts/预编译工具
vendor/厂商定制
dalvik/Dalvik 虚拟机
cts/兼容性测试套件
test/ / platform_testing/测试套件
tools/ / development/开发工具
RKDocs/Rockchip 文档
RKTools/Rockchip 工具

七、系统应用列表 (packages/apps/)

应用说明
Settings系统设置
Camera2 / rkCamera2相机应用
Launcher3桌面启动器
Gallery2 / Gallery相册
Messaging短信
Dialer / Contacts拨号器/联系人
Music音乐播放器
DeskClock闹钟/时钟
Calculator计算器
Calendar日历
DocumentsUI文件管理
StorageManager存储管理
SystemUIGo系统 UI
ThemePicker主题选择
WallpaperPicker2壁纸选择
KeyChain密钥链
CertInstaller证书安装
SoundRecorder录音
StkSIM 工具包
TvSettings / TvSystemUI电视版设置/UI
Car车载模块
TagNFC 标签

八、总结

这是一个 风火轮YY3588 Android 14 SDK 完整系统源码工程,包含从底层 U-Boot 引导 -> Linux Kernel -> HAL 硬件抽象 -> Android Framework -> 系统应用的全部代码。

关键特点:

  1. 多芯片支持:RK3326/RK3399/RK3562/RK3588,通过 device/rockchip/ 下不同目录区分
  2. 标准 AOSP 分层架构:严格遵循 Application -> Framework -> Runtime -> Native -> HAL -> Kernel 的分层
  3. 模块化设计:通过 APEX 支持系统组件独立更新(Connectivity/Bluetooth/WiFi 等)
  4. Binder IPC 是跨进程通信的核心机制,连接 App 与 System Services
  5. 构建系统混合:Soong (主) + Bazel (迁移中) + Make (遗留),统一由 build.sh 入口驱动

YY3588 的工程定义主要集中在以下位置:

核心目录

device/rockchip/rk3588/rk3588_u/ — 这是 YY3588 的主配置目录

device/rockchip/rk3588/rk3588_u/
├── BoardConfig.mk ← 板级配置 (关键: PRODUCT_KERNEL_DTS := rk3588-yyt)
├── rk3588_u.mk ← 产品定义 (PRODUCT_NAME/DEVICE/MODEL)
├── AndroidBoard.mk ← Android 板级构建
├── Android.mk ← 构建入口
├── bt_vendor.conf ← 蓝牙配置
├── config.cfg / config.cfg_ab / config.cfg_ab_gki ← 分区/固件配置
├── dt-overlay.in ← 设备树 overlay
├── recovery.fstab ← Recovery 分区表
├── media_profiles_default.xml ← 媒体能力配置
├── resolution_white.xml ← 分辨率白名单
└── ota/ ← OTA 升级相关

关键配置文件内容

BoardConfig.mk 中 YY3588 特有配置:

  • PRODUCT_KERNEL_DTS := rk3588-yyt — 指定内核设备树
  • BOARD_CAMERA_SUPPORT_EXT := true — 外接摄像头支持
  • BOARD_HS_ETHERNET := true — 高速以太网
  • BOARD_HAS_REMOTECONTROL := true — 遥控器支持
  • BOARD_HDMI_IN_SUPPORT := true — HDMI 输入
  • PRODUCT_KERNEL_CONFIG += pcie_wifi.config — PCIe WiFi

关联的上层配置
┌───────────────────────────────────────────┬────────────────────────────┐
│ 文件 │ 作用 │
├───────────────────────────────────────────┼────────────────────────────┤
│ device/rockchip/rk3588/AndroidProducts.mk │ 注册 rk3588_u 产品变体 │
├───────────────────────────────────────────┼────────────────────────────┤
│ device/rockchip/rk3588/BoardConfig.mk │ RK3588 芯片级通用板配 │
├───────────────────────────────────────────┼────────────────────────────┤
│ device/rockchip/rk3588/device.mk │ RK3588 通用设备定义 │
├───────────────────────────────────────────┼────────────────────────────┤
│ device/rockchip/common/ │ 所有 Rockchip 设备共享配置 │
└───────────────────────────────────────────┴────────────────────────────┘
内核设备树 & 构建脚本
文件: kernel-6.1/ 中的 rk3588-yyt.dts
作用: YY3588 硬件描述 (引脚/外设/时钟等)
────────────────────────────────────────
文件: device/rockchip/common/build/rockchip/build-kernel.sh
作用: 包含 rk3588-yyt.img 的内核构建命令
编译命令

lunch rk3588_u-userdebug # 或 rk3588_u-user