📱 Android 系统目录与文件设计架构 — 完整知识体系

IT 技术 62 阅读 更新于 2026-09-05 09:10

首页

/ Android 系统目录与文件设计架构 — 完整知识体系

📱 Android 系统架构概述

Android 是基于 Linux 内核的移动操作系统,由 Google 领导的开放手机联盟 (OHA) 开发维护。其架构采用分层设计,从底层内核到上层应用框架各层职责明确。

Android 软件栈层次结构

┌─────────────────────────────────────────────────────────────┐ │ 📱 Applications │ │ (Home, Contacts, Phone, Browser, Games, 3rd Party Apps) │ ├─────────────────────────────────────────────────────────────┤ │ 📦 Java API Framework │ │ ┌─────────┬──────────┬─────────────┬──────────┬─────────┐ │ │ │ Activity│ Window │ View │ Package │ Resource│ │ │ │ Manager │ Manager │ System │ Manager │ Manager │ │ │ ├─────────┼──────────┼─────────────┼──────────┼─────────┤ │ │ │ Content │Telephony │ Notification│ Location │ Power │ │ │ │Providers│ Manager │ Manager │ Manager │ Manager │ │ │ └─────────┴──────────┴─────────────┴──────────┴─────────┘ │ ├─────────────────────────────────────────────────────────────┤ │ 🏛️ Native C/C++ Libraries │ Android Runtime │ │ ┌────────────────────────┐ ┌────────────────────────────┐ │ │ │ Surface │ Media │WebKit │ │ ART Runtime │ │ │ │ Flinger│Framework│SQLite│ │ (Core Libraries) │ │ │ │ OpenGL │ libc │ SSL │ │ (DEX → Machine Code) │ │ │ └────────────────────────┘ └────────────────────────────┘ │ ├─────────────────────────────────────────────────────────────┤ │ 🔧 Hardware Abstraction Layer (HAL) │ │ ┌──────┬──────┬────────┬───────┬────────┬─────────────┐ │ │ │Camera│Audio │Bluetooth│Sensors│Display │GPS/Location │ │ │ └──────┴──────┴────────┴───────┴────────┴─────────────┘ │ ├─────────────────────────────────────────────────────────────┤ │ 🐧 Linux Kernel │ Device Drivers │ │ ┌─────┬──────┬──────┬───────┬──────┬───────┬──────────┐ │ │ │Power│Memory│Process│Binder │Camera│Display│WiFi/BT │ │ │ │ Mgmt│ Mgmt│ Mgmt │ IPC │Drv │Driver │Drivers │ │ │ └─────┴──────┴──────┴───────┴──────┴───────┴──────────┘ │ └─────────────────────────────────────────────────────────────┘

Android 各层详细说明

层次语言位置说明
Linux 内核层C/汇编boot.img 内提供硬件抽象、进程管理、内存管理、安全机制、电源管理等核心操作系统功能。Android 使用定制化的 Linux 内核(通常基于 LTS 版本),包含 Binder 驱动、Ashmem、LowMemory Killer 等特有模块。
HAL 层C/C++/vendor/lib/hw/硬件抽象层,将硬件功能封装为标准接口暴露给上层。通过 HIDL/AIDL 定义接口规范,实现框架层与硬件驱动的解耦。是 Project Treble 的关键组成部分。
Native 库层C/C++/system/lib(64)/系统核心 C/C++ 共享库,包括图形引擎(Skia/OpenGL)、媒体框架(Stagefright/MediaCodec)、数据库(SQLite)、渲染引擎(SurfaceFlinger)、Binder 通信等。
ART 运行时C++/Java/system/lib/libart.soAndroid Runtime,替代早期的 Dalvik VM。使用 AOT(提前编译) + JIT(即时编译) + Profile-Guided Optimization 策略,将 DEX 字节码编译为机器码执行。提供 GC、JIT编译、JNI桥接等功能。
Java 框架层Java/system/framework/*.jarAndroid 应用开发 API 的实现层,包括 Activity/Window/View 系统、包管理、资源管理、通知系统、位置服务、电话服务等所有系统服务的 Java 实现。
应用层Java/Kotlin/data/app/, /system/app/系统预装应用和第三方安装的应用程序。所有应用通过 Android SDK 提供的 API 与系统交互,运行在独立的 Dalvik/ART 虚拟机实例中。

Android 版本演进关键里程碑

版本年份关键变革
Android 1.0-2.32008-2010Dalvik VM、基础API、Linux 2.6内核
Android 4.x2011-2013Project Butter (60fps)、Holo Design、Fragment
Android 5.02014ART替代Dalvik、Material Design、64位支持
Android 6.02015运行时权限、Doze省电、Fingerprint API
Android 7.02016A/B无缝升级、JIT编译器、Vulkan API、分屏
Android 8.02017Project Treble、通知频道、后台限制
Android 92018AI自适应、手势导航、Digital Wellbeing
Android 102019APEX模块化、Scoped Storage、隐私沙盒
Android 112020一次性权限、会话气泡、Conversations
Android 122021Material You、AIDL HAL、模糊渲染
Android 132022细化媒体权限、Themed Icons、多语言
Android 142023Ultra HDR、Health Connect、Path APIs
Android 152024卫星通信、Private Space、16KB页面
Android 162025-2026Health Connect扩展、预测性返回优化

📁 Android 根目录结构

Android 基于 Linux 内核构建,根目录包含系统分区挂载点和伪文件系统。从 Android 8.0 (Oreo) 引入 Project Treble 后,系统分区进一步解耦。

完整根目录树

/

根文件系统 (rootfs) — 由 initramfs 提供

├──

system/

系统分区 (read-only) — Android OS 核心文件

│ ├──

app/

普通系统预装应用

│ ├──

priv-app/

特权系统应用

│ ├──

framework/

Java 框架层核心 JAR 文件

│ ├──

lib/

32位 Native 共享库

│ ├──

lib64/

64位 Native 共享库

│ ├──

bin/

系统可执行文件和守护进程

│ ├──

etc/

系统配置文件目录

│ ├──

fonts/

系统字体文件

│ ├──

media/

系统媒体资源(铃声/动画)

│ ├──

vendor/

厂商文件(旧版兼容)

│ ├──

apex/

预置 APEX 模块

│ ├──

usr/

键盘布局/输入设备配置

│ ├──

tts/

TTS 语音合成资源

│ └──

build.prop

系统构建属性文件

│ ├──

data/

数据分区 (read-write) — 用户数据和APP数据

│ ├──

data/

各APP私有数据 (沙盒)

│ ├──

app/

用户安装的第三方APK

│ ├──

system/

系统运行时数据(packages.xml等)

│ ├──

dalvik-cache/

ART 编译缓存

│ ├──

misc/

WiFi/蓝牙/密钥库等杂项

│ ├──

anr/

ANR Trace 文件

│ ├──

tombstones/

Native Crash Dump

│ └──

media/

用户媒体文件

│ ├──

vendor/

厂商分区 — HAL/驱动/芯片厂商代码

├──

product/

产品分区 — 产品型号级定制

├──

odm/

ODM分区 — 硬件设计商定制

├──

system_ext/

系统扩展分区

├──

oem/

OEM自定义分区(可选)

├──

persist/

持久化数据分区(设备校准等)

│ ├──

cache/

缓存分区 — OTA/Recovery临时文件

├──

sdcard/

外部存储挂载点 → /storage/emulated/0

├──

storage/

存储挂载管理目录

│ ├──

proc/

进程信息伪文件系统 (/proc/*)

├──

sys/

内核设备和驱动信息 (/sys/*)

├──

dev/

设备文件 (/dev/*)

├──

mnt/

挂载点管理

├──

acct/

账户 cgroup 管理

├──

config/

内核配置 (configfs)

│ ├──

init

→ /system/bin/init (PID 1)

├──

init.rc

主初始化脚本

├──

init.${ro.hardware}.rc

硬件特定初始化脚本

├──

default.prop

默认系统属性

├──

fstab.${ro.hardware}

文件系统挂载表

├──

ueventd.rc

设备节点权限配置

└──

verity_key

验证启动公钥

💡 关键说明

• 根目录中的 /proc/sys/dev 是内存中的伪文件系统,由内核动态生成 • /system/vendor 等是实际分区,启动时由 init 根据 fstab 挂载 • /sdcard 是软链接,实际指向 /storage/emulated/0 • 早期Android还有 /sbin(adbd) 和 /charger(充电动画)

💿 分区架构演进

分区架构历史演进

时期分区方案特点
Pre-Treble (Android ≤ 7.1)/system 包含所有内容 (Google代码 + 厂商代码混合)• 升级 Android 需要芯片厂商重新适配 • 设备碎片化严重 • 大版本升级周期长(通常6-12个月)
Treble (Android 8.0+)/system + /vendor (Google/厂商分离)• 厂商HAL独立分区 • 系统升级无需重新适配HAL • GSI(通用系统镜像)成为可能
现代分区 (Android 10+)多分区: system/vendor /product/odm/system_ext• 更细粒度的定制 • APEX模块独立更新 • 动态分区(Dynamic Partitions)

现代 Android 完整分区布局:

┌────────────────────────────────────────────────────────┐ │ eMMC / UFS 存储芯片 │ ├────────────────────────────────────────────────────────┤ │ Bootloader 区 │ xbl / abl / tz / hyp / devcfg │ ├────────────────────────────────────────────────────────┤ │ │ ┌──────────────────────────────────┐ │ │ super 分区 │ │ Dynamic Partitions (动态分区) │ │ │ (Android10+) │ │ ┌────────┬──────────┬─────────┐ │ │ │ │ │ │system │ vendor │ product │ │ │ │ │ │ │(可大可小动态调整) │ │ │ │ │ │ ├────────┼──────────┼─────────┤ │ │ │ │ │ │odm │system_ext│ (free) │ │ │ │ │ │ └────────┴──────────┴─────────┘ │ │ │ │ └──────────────────────────────────┘ │ ├────────────────────────────────────────────────────────┤ │ 独立分区 │ boot │ dtbo │ vbmeta │ userdata │ cache │ ├────────────────────────────────────────────────────────┤ │ 持久分区 │ persist │ misc │ frp │ fsg │ └────────────────────────────────────────────────────────┘

✅ 动态分区 (Dynamic Partitions)

Android 10 引入的分区方案,所有逻辑分区(system、vendor、product、odm、system_ext)位于一个名为 super 的物理分区中。优势: • OTA时各分区大小可动态调整,无需预留空间 • 系统更新时可以调整分区大小 • 通过 dm-linear 设备映射实现

分区挂载机制 — fstab 详解

Android 使用 fstab(filesystem table)文件定义分区挂载关系。init 进程在启动早期解析 fstab 并挂载分区。

fstab.${ro.hardware} 文件示例 (Android 12+)

system partition

/dev/block/by-name/system

/system

ext4

ro,barrier=1,discard

wait,slotselect,avb=vbmeta,logical,first_stage_mount

/dev/block/by-name/vendor

/vendor

ext4

ro,barrier=1,discard

wait,slotselect,avb,logical,first_stage_mount

/dev/block/by-name/product

/product

ext4

ro,barrier=1,discard

wait,slotselect,avb,logical,first_stage_mount

/dev/block/by-name/odm

/odm

ext4

ro,barrier=1,discard

wait,slotselect,avb,logical,first_stage_mount

data partition (用户数据)

/dev/block/by-name/userdata

/data

f2fs

noatime,nosuid,nodev,discard

latemount,wait,check,fileencryption=aes-256-xts:aes-256-cts:v2+inlinecrypt_optimized,quota,formattable,reservedsize=128M

cache partition (可选)

/dev/block/by-name/cache

/cache

ext4

noatime,nosuid,nodev

wait,check

persist partition

/dev/block/by-name/persist

/mnt/vendor/persist

ext4

noatime,nosuid,nodev

wait

字段说明示例
设备路径分区块设备位置/dev/block/by-name/system
挂载点挂载到根文件系统的位置/system
文件系统分区使用的文件系统类型ext4, f2fs, erofs
挂载选项文件系统挂载参数ro(只读), discard(TRIM)
fs_mgr 标志Android fs_mgr 管理器参数wait, avb, logical, slotselect

fs_mgr 关键标志说明:

  • wait — 等待设备就绪后再挂载
  • avb / avb=vbmeta — 启用 Android Verified Boot 验证
  • slotselect — A/B 设备选择当前活动槽位
  • logical — 该分区是动态分区的一部分
  • first_stage_mount — 第一阶段 init 时挂载
  • latemount — 延迟到第二阶段挂载
  • fileencryption — 启用文件级加密
  • formattable — 允许格式化
  • quota — 启用磁盘配额
  • check — 启动时检查文件系统完整性

📂 /system 分区详解

/system 分区是 Android 系统的核心,通常在出厂后为只读状态。存放 Android 操作系统的所有关键文件,包括框架、库、应用和配置。

📱 system/app 与 system/priv-app 应用目录

目录说明权限特点
/system/app/普通系统预装应用,如计算器、日历、浏览器等。可被用户禁用(不能直接卸载)。系统签名或平台签名
/system/priv-app/特权应用,拥有系统级权限。包含系统UI、设置、启动器、电话、联系人等核心应用。使用 signature|privileged 权限保护级别。平台签名,拥有特殊权限白名单

/system/app/

普通系统应用

├──

Calculator/

计算器

│ └──

Calculator.apk

├──

Calendar/

日历

├──

Camera2/

相机(非特权版本)

├──

CertInstaller/

证书安装器

├──

Chrome/

Chrome 浏览器

├──

DeskClock/

桌面时钟/闹钟

├──

Email/

电子邮件客户端

├──

Gallery2/

图库应用

├──

KeyChain/

密钥链管理

├──

LatinIME/

AOSP输入法

├──

Music2/

音乐播放器

└──

PrintSpooler/

打印后台服务

/system/priv-app/

特权系统应用

├──

BackupRestoreConfirmation/

备份恢复确认

├──

BlockedNumberProvider/

黑名单提供者

├──

CallLogBackup/

通话记录备份

├──

CarrierConfig/

运营商配置

├──

CellBroadcastReceiver/

小区广播接收

├──

Contacts/

通讯录

├──

ContactsProvider/

联系人内容提供者

├──

Dialer/

拨号器

├──

DownloadProvider/

下载管理器

├──

EmergencyInfo/

紧急信息

├──

ExternalStorageProvider/

外部存储提供者

├──

GoogleServicesFramework/

GMS 框架

├──

Launcher3QuickStep/

系统桌面启动器

├──

MmsService/

彩信服务

├──

NetworkStack/

网络协议栈 (Android 10+ APEX化)

├──

PermissionController/

权限控制器

├──

Phonesky/

Google Play 商店

├──

PrebuiltGmsCore/

Google Play 服务

├──

Settings/

系统设置

├──

SettingsIntelligence/

设置智能搜索

├──

SettingsProvider/

设置数据库提供者

├──

Shell/

Shell 服务

├──

SystemUI/

系统UI(状态栏/通知/快捷设置)

├──

TeleService/

电话服务

├──

Telecom/

电信管理

├──

TelephonyProvider/

电话数据提供者

└──

WifiBackup/

WiFi备份

⚠️ APK 安装位置与权限

• 系统应用位于 /system/app//system/priv-app/ 的独立文件夹中 • 文件夹名必须与 APK 包名匹配 • 每个文件夹包含 APK 文件和可选的 lib/ 子目录 • priv-app 中的应用需在 privapp-permissions-*.xml 中声明权限白名单 • 系统应用使用 platform 签名,可访问系统级 API

🏛️ system/framework — Java 框架层

framework 目录包含 Android Java 框架层的核心文件,定义了所有 Java API 的实现。Zygote 进程在启动时预加载这些 JAR 文件。

文件说明大小(典型)
framework.jarAndroid 框架核心 JAR,包含 android.* 包下所有类。是应用开发依赖的核心库。包含 Activity、Service、View、Window 等所有组件。~30-50MB
services.jar系统服务实现,包含 SystemServer 中运行的所有系统服务(AMS, PMS, WMS, ConnectivityService 等)。~15-25MB
ext.jarApache Harmony 扩展库,包含 dalvik.system 等类。~2-5MB
core-oj.jarOpenJDK 核心库 (core openjdk),Java 基础类库实现(java.lang, java.util 等)。~10-20MB
core-libart.jarART 运行时相关的核心库。~5-10MB
conscrypt.jar加密相关库,TLS/SSL 实现(现已迁移至 APEX)。~2-3MB
okhttp.jarOkHttp 网络库实现。~1-2MB
bouncycastle.jarBouncyCastle 加密提供者。~2-3MB
apache-xml.jarApache XML 解析库。~1-2MB
telephony-common.jar电话相关公共 API。~2-3MB
voip-common.jarVoIP 通话公共 API。~0.5-1MB
ims-common.jarIMS (IP 多媒体子系统) 公共 API。~1-2MB
framework-res.apk框架资源包,包含系统级资源(drawable、layout、style、string 等)。所有应用共享此资源。~20-40MB

📚 BOOTCLASSPATH

系统启动时,BOOTCLASSPATH 环境变量定义了框架 JAR 的加载顺序。在 init.rc 中设置,Zygote 进程按顺序加载这些 JAR 来初始化 Java 运行时环境。加载顺序决定了类的查找优先级。

Zygote 启动时的 BOOTCLASSPATH 设置(简化版)

export

BOOTCLASSPATH

/apex/com.android.art/javalib/core-oj.jar

:

/apex/com.android.art/javalib/core-libart.jar

:

/apex/com.android.art/javalib/okhttp.jar

:

/apex/com.android.art/javalib/bouncycastle.jar

:

/apex/com.android.art/javalib/apache-xml.jar

:

/system/framework/framework.jar

:

/system/framework/ext.jar

:

/system/framework/telephony-common.jar

:

/system/framework/voip-common.jar

:

/system/framework/ims-common.jar

📚 system/lib 与 lib64 — Native 共享库

存放系统级 C/C++ 共享库(.so 文件),分为 32 位和 64 位两个目录。这些库提供了 Android 系统核心功能的 Native 实现。

库文件所属模块说明
libandroid.soNDKAndroid NDK 核心库,提供 Native Activity、ALooper、AAssetManager、ANativeWindow 等 API。
libandroid_runtime.soRuntimeAndroid 运行时桥接层,连接 Java 框架与 Native 层。实现 JNI 注册。
libandroidfw.soFrameworkAndroid Framework 底层,资源管理、Asset 管理、配置管理。
libart.soARTART 运行时核心库。包含 JIT 编译器、GC、Class Linker、JNI 桥接。
libart-compiler.soARTART AOT 编译器,将 DEX 编译为机器码 (dex2oat)。
libbinder.soIPCAndroid Binder IPC 机制核心库,实现跨进程通信。所有系统服务的基础。
libcamera_client.soCamera相机客户端库,与 CameraService 通信。
libcutils.soUtilsC 语言实用工具库(属性访问、日志、socket、atomic 等)。
libEGL.soGraphicsEGL 图形接口,连接 OpenGL ES 与本地窗口系统。
libGLESv2.soGraphicsOpenGL ES 2.0+ 可编程管线实现。
libgui.soGraphicsGUI 核心库,SurfaceFlinger 客户端、BufferQueue、Surface 等。
libhardware.soHAL硬件抽象层 (HAL) 接口定义和动态加载。
libhwui.soUI硬件加速 UI 渲染库。View 的 RenderThread 后端。
libicui18n.soICUICU 国际化库(本地化、日期格式、排序规则)。
libicuuc.soICUICU 通用库(Unicode 支持、字符集转换)。
libinput.soInput输入事件处理库。InputDispatcher, InputReader。
liblog.soLogAndroid 日志系统库(__android_log_print 等)。
libmedia.soMedia多媒体框架核心库。MediaPlayer, MediaRecorder 客户端。
libmediaplayerservice.soMedia媒体播放器服务实现。
libnativehelper.soJNIJNI 辅助工具库。简化 JNI 编程。
libOpenSLES.soAudioOpenSL ES 音频 API。低延迟音频。
libpowermanager.soPower电源管理服务库。
libselinux.soSecuritySELinux 策略库。强制访问控制实现。
libskia.soGraphicsSkia 2D 图形引擎。Canvas 绘制的后端实现。
libsqlite.soDatabaseSQLite 数据库引擎。Android 数据存储核心。
libstagefright.soMediaStagefright 多媒体框架。媒体编解码核心。
libsurfaceflinger.soGraphicsSurfaceFlinger 合成器。负责屏幕合成显示。
libui.soUI底层 UI 框架(GraphicBuffer, Fence, Rect 等)。
libutils.soUtils基础工具库(RefBase, String8, Vector, Looper 等)。
libwebviewchromium.soWebViewWebView 基于 Chromium 的实现(已迁移至 APEX)。
libz.soCompresszlib 压缩库。

📐 32位与64位

/system/lib/ 存放 32 位库,/system/lib64/ 存放 64 位库 • 系统根据设备架构(arm/arm64/x86/x86_64)和进程位数自动选择加载路径 • 从 Android 14 开始,Google 逐步推动纯 64 位设备(移除 32 位库支持) • 纯 64 位设备可减少存储占用和内存使用

⚙️ system/etc — 系统配置文件

文件/目录说明
/system/etc/permissions/权限声明目录,包含所有系统权限的 XML 声明文件。 • platform.xml — 平台权限与 GID 映射 • privapp-permissions-*.xml — 特权应用权限白名单 • android.hardware.*.xml — 硬件功能声明(camera、wifi、bluetooth 等) • android.software.*.xml — 软件功能声明
/system/etc/selinux/SELinux 策略目录plat_sepolicy.cil — 平台级 SELinux 策略(编译后的 CIL 格式) • plat_mac_permissions.xml — MAC 权限配置 • plat_property_contexts — 属性 SELinux 上下文 • plat_seapp_contexts — 应用 SELinux 上下文 • plat_service_contexts — 服务 SELinux 上下文
/system/etc/init/Init 脚本目录,各系统服务的初始化 RC 文件。 • bootanim.rc — 开机动画服务 • logd.rc — 日志守护进程 • lmkd.rc — 低内存杀手 • servicemanager.rc — 服务管理器 • surfaceflinger.rc — 显示合成器
/system/etc/security/安全相关配置cacerts/ — 系统 CA 证书库 • mac_permissions.xml — 强制访问控制权限
/system/etc/vintf/VINTF(Vendor Interface)清单manifest.xml — 系统 HAL 接口清单 • compatibility_matrix.xml — 兼容性矩阵
hostsDNS 主机名映射文件(类似 Linux 的 /etc/hosts)
apns-conf.xml运营商 APN 接入点配置数据库
event-log-tags事件日志标签定义
media_codecs.xml媒体编解码器能力声明
audio_policy_configuration.xml音频策略配置
public.libraries.txt公开的 NDK 共享库列表(Vendor Native Library)
sysconfig/系统配置目录 • hiddenapi-whitelist.xml — 隐藏 API 白名单 • component-overrides.xml — 组件覆盖配置
task_profiles.json任务配置文件(cgroup 调度配置,Android 11+)
fonts.xml字体映射配置,定义字体族和回退链
platform.xml权限与 Unix GID 的映射关系

🔧 system/bin — 可执行文件与守护进程

可执行文件说明
init系统初始化进程(PID 1),Android 启动后由内核启动的第一个用户空间进程。解析 init.rc 脚本,启动所有系统服务和守护进程。
app_process应用进程启动器,用于启动 Java 进程。Zygote 进程和所有应用进程都通过 app_process 启动。区分 app_process32/app_process64。
servicemanagerBinder 服务管理器,管理系统服务的注册和查找,是所有 Binder 通信的注册中心。所有系统服务必须在此注册。
surfaceflinger显示合成服务,负责将各个 Surface 合成后输出到显示屏。管理 Layer 树和 Vsync 同步。
cameraserver相机服务进程,管理相机硬件访问。处理 Camera API 请求。
installd安装守护进程,负责应用安装、卸载、数据清理、dex 优化等操作。由 PackageManagerService 调用。
vold卷管理守护进程,管理存储设备挂载、SD 卡、USB 存储、磁盘加密等。
netd网络守护进程,管理网络配置、防火墙、DNS、tethering 等。
keystore2密钥库服务,管理硬件/软件密钥存储。Android 12+ 重写为 Rust。
gatekeeperd门禁守护进程,管理锁屏密码验证。与 TEE 交互。
logd日志守护进程,收集和管理系统日志缓冲区。
lmkd低内存杀手守护进程,替代内核 LMK driver,在内存不足时杀死进程。
drmserverDRM 版权管理服务。
statsd统计数据守护进程 (Android 10+)。收集系统指标。
dumpstate系统状态转储工具,生成 bugreport。
adbdADB 守护进程,处理 ADB 调试连接。
logcat日志查看工具。
pm包管理器命令行工具 (Package Manager)。
am活动管理器命令行工具 (Activity Manager)。
wm窗口管理器命令行工具 (Window Manager)。
input输入事件注入工具。
cmd通用系统命令路由工具。
toybox轻量级 Unix 工具集合(替代 toolbox/busybox),提供 ls、cat、grep、ps 等基本命令。
shmksh Shell(通常指向 toybox sh)。
getprop / setprop读取/设置系统属性。
start / stop启动/停止系统服务。
reboot重启命令(支持 reboot bootloader/recovery/fastboot 等模式)。
bugreportBug 报告生成工具,收集系统完整状态。

💾 /data 分区详解

/data 分区是可读写分区,存放用户数据、应用数据、系统运行时数据。出厂后用户所有的数据修改都发生在此分区。

/data 完整目录结构

/data/

├──

app/

用户安装的第三方 APK

│ ├──

com.example.app-1/base.apk

│ ├──

com.example.app-1/lib/arm64/libnative.so

│ └──

com.another.app-2/base.apk

│ ├──

data/

各应用的私有数据目录(沙盒)

│ ├──

com.example.app/

│ │ ├──

cache/

应用缓存(系统可自动清理)

│ │ ├──

code_cache/

代码缓存(JIT/Profile)

│ │ ├──

databases/

SQLite 数据库

│ │ ├──

files/

内部文件存储

│ │ ├──

shared_prefs/

SharedPreferences XML

│ │ ├──

lib/

Native 库符号链接

│ │ └──

no_backup/

不参与备份的文件

│ └──

com.another.app/

│ ├──

system/

系统运行时数据

│ ├──

packages.xml

已安装包完整信息(核心)

│ ├──

packages.list

安装包列表

│ ├──

packages-backup.xml

包信息备份

│ ├──

users/

多用户数据

│ ├──

accounts/

账户信息

│ ├──

notification_policy/

通知策略(DND)

│ ├──

batterystats/

电池统计数据

│ ├──

sync/

同步状态

│ ├──

storage/

存储管理数据

│ └──

procstats/

进程统计

│ ├──

dalvik-cache/

DEX 编译缓存(ART 优化文件)

│ ├──

arm64/

│ │ ├──

system@framework@boot.art

启动镜像(预加载堆)

│ │ ├──

system@framework@boot.oat

编译后系统框架

│ │ ├──

system@framework@boot-framework.art

Framework 堆镜像

│ │ ├──

system@framework@boot-framework.oat

Framework 代码

│ │ └──

data@app@com.example@base.apk@classes.odex

应用优化 DEX

│ ├──

arm/

32位版本

│ └──

profiles/

Profile-guided optimization 数据

│ ├──

misc/

杂项系统数据

│ ├──

keystore/

密钥库数据

│ ├──

wifi/

WiFi 配置(WifiConfigStore.xml)

│ ├──

bluetooth/

蓝牙配对信息

│ ├──

vold/

卷管理数据

│ ├──

zoneinfo/

时区数据

│ ├──

profileinstaller/

性能 Profile 安装

│ └──

netd/

网络守护进程数据

│ ├──

media/

媒体数据

├──

anr/

ANR (Application Not Responding) trace 文件

│ └──

traces.txt

应用无响应时的线程快照

├──

tombstones/

Native 崩溃信息 (crash dumps)

├──

log/

系统日志

├──

backup/

应用备份数据

├──

ota/

OTA 升级相关数据

│ ├──

system_de/

系统设备加密数据 (Direct Boot)

├──

user_de/

用户设备加密数据

├──

user_ce/

用户凭据加密数据 (Credential Encrypted)

├──

system_ce/

系统凭据加密数据

├──

misc_ce/

杂项凭据加密

├──

misc_de/

杂项设备加密

├──

apexdata/

APEX 模块数据

└──

gsi/

GSI (Generic System Image) 数据

应用沙盒与存储路径详解

API 方法对应路径说明生命周期
getFilesDir()/data/data/{pkg}/files/应用内部文件存储应用卸载时删除
getCacheDir()/data/data/{pkg}/cache/应用缓存(系统可自动清理)系统低内存时可能清理
getDatabasePath()/data/data/{pkg}/databases/SQLite 数据库应用卸载时删除
getSharedPreferences()/data/data/{pkg}/shared_prefs/偏好设置 XML 文件应用卸载时删除
getExternalFilesDir()/storage/emulated/0/Android/data/{pkg}/files/外部私有文件应用卸载时删除 (Android 11+)
getExternalCacheDir()/storage/emulated/0/Android/data/{pkg}/cache/外部缓存可能被清理
getCodeCacheDir()/data/data/{pkg}/code_cache/代码缓存目录应用升级或卸载时清理
getNoBackupFilesDir()/data/data/{pkg}/no_backup/不参与备份的文件应用卸载时删除

Scoped Storage (Android 10+)

Android 10 引入 Scoped Storage,限制了应用对共享存储的访问方式:

  • 应用私有目录:通过 Context.getExternalFilesDir() 访问,无需存储权限
  • 媒体文件:通过 MediaStore API 访问图片、视频、音频
  • Downloads:通过 Storage Access Framework (SAF) 访问
  • MANAGE_EXTERNAL_STORAGE:需要此权限才能进行全局存储访问(Google Play 限制使用)

存储加密机制 — FDE vs FBE

特性FDE (Full Disk Encryption)FBE (File-Based Encryption)
引入版本Android 5.0Android 7.0
加密粒度整个 /data 分区每个文件独立加密
密钥数量单个主密钥每个文件一个密钥
Direct Boot不支持支持
多用户隔离弱(共享密钥)强(独立密钥)
性能较好(单密钥缓存)略差(多密钥管理)
算法AES-128-CBCAES-256-XTS (内容) + AES-256-CTS (文件名)
当前状态已弃用强制要求 (Android 10+)

🔑 Direct Boot (Android 7.0+)

Device Encrypted (DE) 存储:设备启动后即可访问,不需要用户解锁 路径:/data/system_de/、/data/user_de/ 用途:闹钟、来电、消息推送等需要在锁屏下工作的功能 • Credential Encrypted (CE) 存储:需要用户解锁后才可访问 路径:/data/user_ce/、/data/system_ce/ 用途:联系人、短信、邮件等敏感数据 • 应用可以通过 DIRECT_BOOT_AWARE 组件声明支持 Direct Boot

🏭 /vendor 分区(Project Treble)

/vendor 分区是 Project Treble 架构的核心,将厂商硬件相关代码与 Google 系统代码分离,实现系统升级时不需要等待芯片厂商适配。

/vendor 完整目录结构

/vendor/

├──

bin/

厂商 HAL 服务进程

│ ├──

hw/

HIDL/AIDL HAL 服务实现

│ │ ├──

android.hardware.audio@7.0-service

│ │ ├──

android.hardware.camera.provider@2.7-service

│ │ ├──

android.hardware.graphics.composer@2.4-service

│ │ ├──

android.hardware.keymaster@4.1-service

│ │ ├──

android.hardware.sensors@2.1-service

│ │ ├──

android.hardware.wifi@1.5-service

│ │ ├──

android.hardware.bluetooth@1.1-service

│ │ └──

android.hardware.neuralnetworks@1.3-service

│ └──

vendor.qti.*

高通厂商特定服务

│ ├──

lib/

&

lib64/

厂商 Native 库

│ ├──

hw/

HAL 模块实现 (.so)

│ │ ├──

audio.primary.{ro.hardware}.so

│ │ ├──

camera.device@3.5-impl.so

│ │ ├──

gps.{ro.hardware}.so

│ │ ├──

gralloc.{ro.hardware}.so

│ │ ├──

sensors.{ro.hardware}.so

│ │ └──

vulkan.{ro.hardware}.so

│ └──

egl/

GPU 驱动库

│ ├──

libGLES_android.so

软件渲染

│ ├──

libGLES_*.so

硬件 OpenGL

│ └──

libEGL_*.so

│ ├──

etc/

厂商配置

│ ├──

vintf/

厂商 VINTF 清单

│ │ ├──

manifest.xml

厂商 HAL 清单

│ │ └──

compatibility_matrix.xml

兼容性矩阵

│ ├──

selinux/

厂商 SELinux 策略

│ │ ├──

vendor_sepolicy.cil

│ │ └──

vendor_file_contexts

│ ├──

init/

厂商 init 脚本

│ │ └──

vendor_init.rc

│ ├──

permissions/

厂商权限声明

│ ├──

media_codecs.xml

厂商编解码器能力

│ ├──

media_profiles.xml

媒体配置文件

│ ├──

audio_policy_configuration.xml

音频策略

│ └──

public.libraries.txt

厂商公开 NDK 库

│ ├──

firmware/

芯片固件文件

│ ├──

wlan/

WiFi 固件

│ ├──

bluetooth/

蓝牙固件

│ └──

modem/

基带固件

│ ├──

app/

厂商预装应用

├──

priv-app/

厂商特权应用

├──

framework/

厂商 Java 库扩展

├──

overlay/

厂商资源覆盖 (RRO)

├──

media/

厂商媒体资源

├──

usr/

厂商输入设备配置

└──

build.prop

厂商构建属性

📦 /product 分区

/product 分区用于产品级别的定制,存放与特定产品型号(而非硬件平台)相关的文件和配置。例如同一芯片平台的不同手机型号。

/product 目录结构

/product/

├──

app/

产品级预装应用

├──

priv-app/

产品级特权应用

├──

etc/

产品级配置

│ ├──

sysconfig/

系统配置

│ ├──

permissions/

权限配置

│ ├──

selinux/

SELinux 策略扩展

│ └──

vintf/

产品 HAL 清单

├──

overlay/

产品级资源覆盖

├──

media/

产品级媒体资源

├──

fonts/

产品级字体

├──

framework/

产品级 Java 库

├──

lib/

&

lib64/

产品级 Native 库

└──

build.prop

产品构建属性

✅ Product vs Vendor 区别

Vendor 分区:包含硬件相关代码(HAL 驱动、芯片固件)— 芯片厂商维护 • Product 分区:包含产品型号相关的定制(不同市场版本配置、预装 APP 差异、UI 定制)— OEM 维护 • 覆盖优先级:product > odm > vendor > system

⚙️ /odm 分区 (ODM)

/odm (Original Design Manufacturer) 分区用于硬件设计商的特定定制,允许 ODM 在不修改 vendor 分区的情况下进行硬件适配。

/odm 目录结构与用途

/odm/

├──

bin/

ODM 特定可执行文件

├──

lib/

&

lib64/

ODM 特定库

├──

etc/

ODM 配置

│ ├──

vintf/

ODM HAL 清单

│ ├──

selinux/

ODM SELinux 策略

│ └──

permissions/

ODM 权限

├──

firmware/

ODM 固件

├──

overlay/

ODM 资源覆盖

├──

odm_manifest.xml

ODM 清单(可覆盖 vendor manifest)

└──

build.prop

ODM 构建属性

使用场景说明
多设备共享芯片平台同一 SoC 用于多个手机型号时,每个型号使用独立的 odm 分区
运营商定制运营商特定的硬件配置和固件更新
区域变体不同地区销售的硬件差异(如 NFC、5G 频段)

📂 /system_ext 分区

/system_ext 分区是系统扩展分区,存放不属于核心 system 但属于系统级的定制内容。

/system_ext 内容

/system_ext/

├──

app/

扩展应用

├──

priv-app/

扩展特权应用

├──

etc/

扩展配置

│ ├──

permissions/

│ ├──

selinux/

│ └──

vintf/

├──

framework/

扩展 Java 库

├──

lib/

&

lib64/

扩展 Native 库

├──

media/

扩展媒体资源

├──

overlay/

扩展资源覆盖

└──

build.prop

扩展构建属性

此分区通常被 OEM 用于放置需要与 system 一起更新但不属于 AOSP 核心的内容。

🚀 Android 完整启动流程

Android 从按下电源键到显示桌面,经历了多个阶段。理解启动流程对于系统开发和故障排查至关重要。

启动流程全景图

BootROM

Bootloader

Linux Kernel

Init (PID 1)

Native Daemons

Zygote

SystemServer

Launcher

阶段持续时间关键操作
BootROM~100msCPU 上电执行固化代码,验证并加载 Bootloader
Bootloader~500ms-2s初始化硬件,验证 boot.img,加载内核
Kernel~1-3s内核初始化,驱动加载,挂载 rootfs
Init 第一阶段~1s挂载分区,解析 fstab,初始化属性系统
Init 第二阶段~2-3s启动守护进程,加载 SELinux 策略
Zygote~1-2s预加载框架类和资源
SystemServer~2-5s启动所有系统服务
Launcher~1-3s显示主屏幕

🔓 Bootloader 阶段

Bootloader 是设备上电后执行的第一段软件代码,通常分为多个阶段:

Bootloader 启动链 (以高通平台为例): ┌─────────────────────────────────────────────────────────────┐ │ PBL (Primary Boot Loader) — 固化在 BootROM 中 │ │ • CPU 上电后自动执行 │ │ • 验证并加载 XBL │ └───────────────────────────┬─────────────────────────────────┘ ↓ ┌─────────────────────────────────────────────────────────────┐ │ XBL (eXtensible Boot Loader) — 替代早期 SBL │ │ • 初始化 DDR 内存 │ │ • 初始化显示(用于显示 OEM Logo) │ │ • 加载 TZ (TrustZone) 和 ABL │ └───────────────────────────┬─────────────────────────────────┘ ↓ ┌─────────────────────────────────────────────────────────────┐ │ ABL (Android Boot Loader) │ │ • 验证 boot.img 签名 (AVB) │ │ • 支持 fastboot 协议 │ │ • 加载 Linux Kernel + Ramdisk │ │ • 传递启动参数 (cmdline) 给内核 │ └───────────────────────────┬─────────────────────────────────┘ ↓ ┌─────────────────────────────────────────────────────────────┐ │ Linux Kernel 启动 │ └─────────────────────────────────────────────────────────────┘

Bootloader 关键功能:

  • 安全验证:验证 boot.img 签名,确保启动链完整性
  • 解锁/锁定:控制是否允许刷入非官方镜像
  • Fastboot 模式:提供刷机接口
  • Recovery 模式:启动到 Recovery 系统
  • A/B 槽位选择:在双分区方案中选择活动槽位

🐧 内核启动阶段

Linux 内核启动后执行以下关键步骤:

  1. 内核解压缩:如果内核是压缩格式,先解压缩到内存
  2. 硬件初始化:初始化 CPU、内存控制器、中断控制器
  3. Device Tree 解析:解析 DTB 获取硬件配置
  4. 驱动初始化:按顺序加载内核模块和内置驱动
  5. 内存管理初始化:设置页表、内存区域
  6. 进程调度器初始化:设置 CFS/EAS 调度器
  7. Rootfs 挂载:挂载初始内存盘(initramfs)为根文件系统
  8. 启动 init:执行 /init (PID 1) 进程
  9. 内核启动命令行参数 (kernel cmdline) 示例

    console=ttyMSM0,115200n8

    androidboot.hardware=qcom

    androidboot.console=ttyMSM0

    androidboot.memcg=1

    lpm_levels.sleep_disabled=1

    video=vfb:640x400,bpp=32

    earlycon=msm_geni_serial,0x880000

    androidboot.selinux=enforcing

    androidboot.verifiedbootstate=green

    androidboot.slot_suffix=_a

    androidboot.vbmeta.digest=...

    buildvariant=user

    androidboot.bootdevice=1d84000.ufshc

    关键参数说明:

    • androidboot.hardware — 硬件平台标识,决定加载哪个 init.${hardware}.rc
    • androidboot.selinux — SELinux 模式 (enforcing/permissive)
    • androidboot.verifiedbootstate — AVB 验证状态 (green/orange/yellow/red)
    • androidboot.slot_suffix — A/B 槽位 (_a 或 _b)
    • buildvariant — 构建类型 (user/userdebug/eng)

    ⚡ Init 进程详解 (PID 1)

    init 是 Android 系统的第一个用户空间进程(PID 1),位于 /system/bin/init。它负责整个系统的初始化和服务管理。

    Init 两阶段启动:

    阶段时间关键操作
    第一阶段 (Early Init)启动后 ~0.5s• 创建必要的目录 (/dev, /proc, /sys) • 挂载 tmpfs 到 /dev • 初始化属性系统 • 解析 fstab 并挂载分区 • 启用 SELinux (加载策略)
    第二阶段 (Late Init)~0.5s-5s• 解析所有 init.rc 脚本 • 触发 early-init/init/late-init 事件 • 启动各种系统服务 • 设置属性触发器 • 启动 Zygote • 进入主事件循环

    Init 核心职责:

    • 服务管理:解析 rc 文件中的 service 定义,fork 并管理子进程
    • 属性服务:维护系统属性数据库(类似 Windows 注册表)
    • 事件触发:监听属性变化和事件,执行相应动作
    • 设备节点管理:通过 ueventd 响应设备热插拔
    • 进程监控:监控子进程状态,异常退出时重启

    Init 进程启动序列: init 执行 ──→ 创建/dev, /proc, /sys │ ├──→ 初始化属性系统 │ ├──→ 解析 fstab,挂载分区 (first_stage_mount) │ ├──→ 加载 SELinux 策略 │ ├──→ 切换到 second stage init (/system/bin/init) │ ├──→ 解析所有 .rc 文件 │ ├──→ 触发 early-init → init → late-init 事件 │ ├──→ 启动 servicemanager │ ├──→ 启动 vold, netd, logd 等守护进程 │ ├──→ 启动 Zygote │ └──→ 进入 epoll 主循环,等待事件

    🥚 Zygote 进程详解

    Zygote 是 Android 系统最关键的 Java 进程,是所有应用进程的"母体"。通过预加载和 fork 机制大幅提升应用启动速度。

    Zygote 核心职责:

    1. 预加载 Java 类:加载约 8000+ 个框架类到内存(framework.jar 等)
    2. 预加载资源:加载 framework-res.apk 中的系统资源
    3. 预加载共享库:加载常用 Native 库
    4. 启动 SystemServer:fork 出 SystemServer 进程
    5. 监听 Socket:等待 AMS 请求创建新应用进程
    6. Fork 应用进程:收到请求后 fork 出新的应用进程
    7. Zygote 工作流程: ┌──────────────┐ │ init 进程 │ ← 读取 zygote.rc 启动 Zygote └──────┬───────┘ ↓ ┌──────────────────────────────────────────────────────┐ │ Zygote 进程 │ │ 1. 启动 Java VM (ART) │ │ 2. 预加载 BOOTCLASSPATH 中的所有 JAR │ │ 3. 预加载 framework-res.apk 资源 │ │ 4. 预加载常用 Native 库 │ │ 5. 注册 Zygote Socket (zygote/zygote_secondary) │ └──────────┬────────────────────┬──────────────────────┘ │ fork │ 监听 Socket ↓ ↓ ┌──────────────────┐ ┌──────────────────────────────┐ │ SystemServer │ │ 等待应用启动请求 │ │ 启动所有系统服务 │ │ 收到请求后 fork 出应用进程 │ └──────────────────┘ └──────────┬───────────────────┘ │ fork (每个应用) ↓ ┌──────────────────────────────┐ │ 应用进程 (com.example.app) │ │ - 继承 Zygote 预加载的类 │ │ - 执行 ActivityThread.main() │ │ - 运行应用程序代码 │ └──────────────────────────────┘

      🔬 为什么使用 Zygote?

      COW (Copy-On-Write):fork 后的子进程与 Zygote 共享内存页,只有被修改时才复制 • 启动加速:应用不需要重新加载 8000+ 个框架类,节省约 1-2 秒 • 内存节省:所有应用共享框架类的物理内存页 • 32位/64位:现代设备通常有两个 Zygote (zygote 和 zygote_secondary) 分别处理不同位数的应用

      zygote 启动命令(来自 init.rc)

      service

      zygote

      /system/bin/app_process64

      -Xzygote /system/bin --zygote --start-system-server

      class

      main

      priority

      -20

      user

      root

      group

      root readproc

      socket

      zygote stream 660 root system

      socket

      usap_pool_primary stream 660 root system

      onrestart

      exec_background u:object_r:system_server_exec:s0 -- /system/bin/servicemanager

      writepid

      /dev/cpuset/foreground/tasks

      🏗️ SystemServer 进程

      SystemServer 是 Android 系统中最核心的 Java 进程,由 Zygote fork 产生。它启动了所有系统服务。

      SystemServer 启动的服务分类:

      类别服务名称说明
      引导服务 (Bootstrap)Installer安装守护进程代理
      DeviceIdentifiersPolicyService设备标识策略
      ActivityTaskManagerServiceActivity 任务管理
      ActivityManagerService活动管理器 (AMS)
      PowerManagerService电源管理
      核心服务 (Core)BatteryService电池监控
      UsageStatsService使用统计
      WebViewUpdateServiceWebView 更新
      BugreportManagerServiceBug报告管理
      GraphicsStatsService图形统计
      PermissionPolicyService权限策略
      其他服务 (Other)WindowManagerService窗口管理器 (WMS)
      PackageManagerService包管理器 (PMS)
      TelephonyRegistry电话注册
      ConnectivityService连接管理
      WifiServiceWiFi 服务
      BluetoothService蓝牙服务
      LocationManagerService位置管理
      NotificationManagerService通知管理

      SystemServer 启动序列: SystemServer.main() │ ├── 1. 创建 Looper/MessageQueue ├── 2. 加载 Native 库 ├── 3. 创建 SystemServiceManager │ ├── 4. startBootstrapServices() ← 关键引导服务 │ ├── Installer │ ├── DeviceIdentifiers │ ├── ActivityTaskManagerService │ ├── ActivityManagerService │ ├── PowerManagerService │ ├── RecoverySystemService │ └── LightsService │ ├── 5. startCoreServices() ← 核心服务 │ ├── BatteryService │ ├── UsageStatsService │ └── WebViewUpdateService │ ├── 6. startOtherServices() ← 其他服务 (80+ 个) │ ├── WindowManagerService │ ├── PackageManagerService │ ├── AccountManagerService │ ├── ContentService │ ├── InputMethodManagerService │ ├── LocationManagerService │ ├── NotificationManagerService │ ├── ConnectivityService │ └── ... 更多服务 │ └── 7. 进入 Looper.loop() 主循环,处理消息

      📝 init.rc 语法教程

      init.rc 是 Android init 进程使用的配置文件,定义了系统启动时要执行的动作、要启动的服务以及事件触发器。

      init.rc 基本语法

      init.rc 文件由四种类型的语句组成:

      类型语法说明
      Actionson <trigger> [&&<trigger>] <command> <command>定义触发事件时要执行的命令序列
      Servicesservice <name> <pathname> [args] <option> <option>定义 init 要启动和管理的进程
      Commandsexec, start, stop, mkdir, chmod, chown, write, setprop...init 支持的内置命令
      Optionsclass, user, group, socket, oneshot, disabled, critical...服务的配置选项

      ============= Action 示例 =============

      在 init 触发时执行

      on

      init

      创建目录

      mkdir

      /system

      mkdir

      /data

      0771 system system

      mkdir

      /cache

      0770 system cache

      设置系统属性

      export

      PATH

      /sbin:/system/sbin:/system/bin:/system/xbin

      export

      ANDROID_ROOT

      /system

      export

      ANDROID_DATA

      /data

      写文件

      write

      /proc/sys/kernel/panic_on_oops

      1

      在 early-boot 触发时执行

      on

      early-boot

      设置 SELinux 为 enforcing 模式

      selinux_reload_policy

      属性触发器

      on

      property

      :

      sys.boot_completed

      =1

      exec

      u:r:system_app:s0 system --

      /system/bin/boot_complete_handler

      ============= Service 示例 =============

      service

      servicemanager

      /system/bin/servicemanager

      class

      core animation

      user

      system

      group

      system readproc

      critical

      关键服务,退出会重启设备

      onrestart

      restart zygote

      重启时连带重启 zygote

      writepid

      /dev/cpuset/system-background/tasks

      service

      zygote

      /system/bin/app_process64

      -Xzygote /system/bin --zygote --start-system-server

      class

      main

      priority

      -20

      高优先级

      user

      root

      group

      root readproc reserved_disk

      socket

      zygote stream 660 root system

      创建 Unix Socket

      socket

      usap_pool_primary stream 660 root system

      onrestart

      restart audioserver

      onrestart

      restart media

      task_profiles

      MaxPerformance

      service

      bootanim

      /system/bin/bootanimation

      class

      core animation

      user

      graphics

      group

      graphics audio

      disabled

      不自动启动

      oneshot

      运行一次,退出不重启

      常用内置命令:

      命令说明示例
      mkdir创建目录mkdir /data/misc 0770 system misc
      chmod/chown修改权限/所有者chmod 0660 /dev/binder
      write写入文件write /proc/sys/vm/swappiness 60
      setprop设置系统属性setprop service.bootanim.exit 1
      start/stop启动/停止服务start media
      exec执行命令exec -- /system/bin/shell_script.sh
      export设置环境变量export LD_LIBRARY_PATH /system/lib
      copy复制文件copy /src/file /dest/file
      symlink创建软链接symlink /system/bin/toolbox /system/bin/ls
      mount挂载文件系统mount ext4 /dev/block/sda1 /mnt
      trigger触发事件trigger early-boot
      class_start启动一类服务class_start main
      class_stop停止一类服务class_stop main

      常用触发器:

      触发器触发时机
      early-initinit 最早阶段,设备初始化前
      initinit 阶段,基本目录创建后
      late-init初始化后期,挂载完成后
      early-fs文件系统挂载前
      fs文件系统挂载时
      post-fs文件系统挂载后
      post-fs-data数据分区挂载后
      boot系统基本启动完成
      early-boot早于 boot 的阶段
      property:name=value属性值变化时触发
      device-added设备添加时
      service-exited服务退出时

      🖼️ Boot Image 结构

      boot.img 是 Android 设备的启动镜像,包含内核和初始内存盘。理解其结构对于系统定制和调试至关重要。

      boot.img 内部结构

      boot.img 文件布局 (Header V3, Android 11+): ┌─────────────────────────────────────────┐ │ Boot Image Header │ │ ┌─────────────────────────────────┐ │ │ │ Magic: "ANDROID!" │ │ │ │ Kernel Size: 0x1A3C000 │ │ │ │ Kernel Load Address: 0x80000 │ │ │ │ Ramdisk Size: 0x045600 │ │ │ │ Ramdisk Load Address: 0x1000000 │ │ │ │ Page Size: 4096 │ │ │ │ Header Version: 3 │ │ │ │ OS Version: 14.0.0 │ │ │ │ OS Patch Level: 2024-01 │ │ │ │ Product Name: shiba │ │ │ │ Command Line: console=tty... │ │ │ └─────────────────────────────────┘ │ ├─────────────────────────────────────────┤ │ Linux Kernel │ │ (编译后的内核二进制,如 Image.gz) │ │ (~15-25MB) │ ├─────────────────────────────────────────┤ │ Ramdisk │ │ (初始内存盘,cpio 格式,gzip 压缩) │ │ 包含: │ │ - /init (→ /system/bin/init) │ │ - /init.rc (主初始化脚本) │ │ - /fstab.${hardware} (挂载表) │ │ - /default.prop (默认属性) │ │ - /ueventd.rc │ │ - /verity_key (验证启动公钥) │ │ (~2-5MB) │ └─────────────────────────────────────────┘

      Header 版本Android 版本特性
      V0≤ 7.0基础格式,无签名
      V18.0-8.1添加 Recovery DTBO
      V29.0添加 Recovery DTBO 偏移
      V310-12简化结构,移除 Second Stage
      V413+添加签名信息,GKI 支持

      Ramdisk 内容详解:

      • /init — 符号链接到 /system/bin/init,是 init 进程的入口
      • /init.rc — 主初始化脚本,定义启动序列
      • /fstab.${ro.hardware} — 文件系统挂载表
      • /default.prop — 默认属性(ro.secure, ro.debuggable 等)
      • /ueventd.rc — 设备节点权限配置
      • /verity_key — AVB 验证启动公钥
      • /proc, /sys, /dev — 空目录,挂载后填充

      🔒 验证启动 (AVB)

      Android Verified Boot (AVB) 确保设备启动过程中所有代码的完整性,防止恶意篡改。

      AVB 验证链

      AVB 验证链 (Chain of Trust): ┌──────────────────┐ │ BootROM (硬件) │ ← CPU 内置,不可修改 │ 验证 XBL 签名 │ └────────┬─────────┘ ↓ 验证通过 ┌──────────────────┐ │ XBL/ABL │ ← Bootloader │ 验证 boot.img │ └────────┬─────────┘ ↓ 验证通过 ┌──────────────────┐ │ Linux Kernel │ ← 内核 │ dm-verity 模块 │ └────────┬─────────┘ ↓ 运行时验证 ┌──────────────────┐ │ dm-verity │ ← 内核设备映射模块 │ 实时验证分区数据 │ 读取任何数据块前验证 hash └────────┬─────────┘ ↓ ┌──────────────────┐ │ /system, /vendor │ ← 只读分区 │ (hashtree 验证) │ 每个数据块对应一个 hash └──────────────────┘

      验证状态含义显示
      Green完全验证通过,所有签名有效正常启动,无警告
      Yellow验证通过但使用自定义公钥短暂警告后启动
      OrangeBootloader 已解锁,无法验证警告后启动
      Red验证失败,镜像被篡改拒绝启动

      🛡️ dm-verity

      • dm-verity 是内核级的块设备完整性验证模块 • 为只读分区(system, vendor)建立 Merkle Hash Tree • 每次读取数据块时验证其 hash 值 • 如果数据被篡改,读取时返回错误 • 仅支持只读分区,/data 分区使用 dm-crypt 加密

      🔧 Recovery 系统

      Recovery 是一个独立的迷你操作系统,用于执行 OTA 升级、恢复出厂设置、ADB sideload 等操作。

      Recovery 系统详解

      文件/组件说明
      recovery.imgRecovery 分区镜像,包含独立内核 + ramdisk + mini Linux
      /cache/recovery/command传递给 Recovery 的命令文件
      /cache/recovery/logRecovery 运行日志
      /cache/recovery/last_kmsg上次内核崩溃信息
      /cache/recovery/last_install上次 OTA 安装结果

      Recovery 通信机制:

      系统通过写入 /cache/recovery/command 文件来向 Recovery 传递指令:

      恢复出厂设置时写入的命令

      --wipe_data

      OTA 升级时写入的命令

      --update_package=/cache/ota_package.zip

      ADB sideload 模式

      --sideload

      清除缓存

      --wipe_cache

      🔄 A/B 设备的变化

      • 采用 A/B 分区方案的设备没有独立 Recovery 分区 • Recovery 功能内置在 boot.img 中(通过 androidboot.mode=recovery 参数进入) • OTA 升级由 update_engine 服务在后台完成,写入非活动槽位 • 用户无需重启进入 Recovery 即可完成系统更新

      🏛️ 核心系统服务详解

      Android 系统服务运行在 SystemServer 进程中,通过 Binder IPC 机制向应用提供功能接口。

      📋 ActivityManagerService (AMS)

      AMS 是 Android 最重要的系统服务之一,负责管理四大组件的生命周期和系统资源调度。

      AMS 核心职责:

      • Activity 管理:管理 Activity 栈、启动/暂停/销毁
      • Service 管理:管理 Service 生命周期
      • Broadcast 分发:广播注册和分发
      • ContentProvider 管理:CP 启动和权限验证
      • 进程管理:进程优先级(oom_adj)、进程创建和销毁
      • 内存管理:低内存时回收进程
      • 任务栈管理:Task、BackStack 管理

      进程优先级 (oom_adj):

      级别Adj 值说明
      Foreground0前台进程(当前 Activity、前台 Service)
      Visible1可见但非前台(被 Dialog 部分遮挡)
      Perceptible2可感知的(如后台播放音乐)
      Backup3备份操作中的进程
      Service5-6普通 Service 进程
      Home6桌面应用
      Previous7上一个 Activity 进程
      Cached9-15缓存进程(LRU 列表)

      📦 PackageManagerService (PMS)

      PMS 负责管理设备上所有 APK 包的安装、卸载、权限、版本、签名验证等工作。

      PMS 启动流程:

      PMS 启动序列 (耗时约 2-5 秒): PMS 构造方法 │ ├── 1. 读取 /data/system/packages.xml (已安装包信息) ├── 2. 扫描系统目录: │ ├── /system/framework/ (框架 JAR) │ ├── /system/app/ (系统应用) │ ├── /system/priv-app/ (特权应用) │ ├── /vendor/app/ (厂商应用) │ ├── /product/app/ (产品应用) │ └── /data/app/ (第三方应用) │ ├── 3. 解析每个 APK 的 AndroidManifest.xml ├── 4. 验证 APK 签名 ├── 5. 构建权限映射表 ├── 6. 注册 ContentProvider ├── 7. 发送 Intent.ACTION_BOOT_COMPLETED (扫描完成后) └── 8. 写入 packages.xml 更新

      APK 安装流程:

      1. 复制 APK 到 /data/app/
      2. PMS 解析 APK (PackageParser)
      3. 验证签名 (PackageSigner)
      4. installd 创建数据目录
      5. dexopt/dex2oat 优化 DEX
      6. 更新 packages.xml
      7. 发送 PACKAGE_ADDED 广播
      8. 🪟 WindowManagerService (WMS)

        WMS 负责管理所有窗口的创建、销毁、显示顺序、动画和输入事件分发。

        WMS 核心职责:

        • 窗口管理:管理所有 Window (PhoneWindow, Dialog, Toast, SystemUI)
        • Z-order 管理:控制窗口的层叠顺序
        • 窗口动画:管理窗口转场动画
        • 屏幕旋转:处理方向变化
        • 输入法管理:与 InputMethodManagerService 协调
        • 截图/录屏:提供屏幕捕获功能

        窗口类型层级:

        层级类型Z-Order示例
        系统窗口TYPE_SYSTEM_OVERLAY2006系统级覆盖
        系统窗口TYPE_STATUS_BAR2000状态栏
        系统窗口TYPE_KEYGUARD2004锁屏
        系统窗口TYPE_SEARCH_BAR2005搜索栏
        应用窗口TYPE_APPLICATION1-99普通 Activity
        子窗口TYPE_APPLICATION_PANEL1000+Dialog、PopupWindow

        🔗 Binder IPC 机制

        Binder 是 Android 系统核心的进程间通信(IPC)机制,几乎所有的系统服务通信都基于 Binder 实现。

        Binder 工作原理

        Binder 通信模型: ┌──────────────────────┐ ┌──────────────────────────┐ │ 客户端进程 │ │ 服务端进程 │ │ │ │ │ │ ┌────────────────┐ │ │ ┌────────────────────┐ │ │ │ 应用代码 │ │ │ │ Service 实现 │ │ │ │ service.do() │ │ │ │ onTransact() │ │ │ └───────┬────────┘ │ │ └─────────▲──────────┘ │ │ │ │ │ │ │ │ ┌───────▼────────┐ │ │ ┌─────────┴──────────┐ │ │ │ Proxy (代理) │ │ │ │ Binder 实体 │ │ │ │ transact() │ │ │ │ (继承 Binder) │ │ │ └───────┬────────┘ │ │ └─────────▲──────────┘ │ │ │ │ │ │ │ │ ┌───────▼────────┐ │ IPC │ ┌─────────┴──────────┐ │ │ │ Binder Driver └──┼─────────┼──┤ Kernel Buffer │ │ │ │ (内核驱动) │ │ 1次拷贝 │ │ (共享内存映射) │ │ │ └────────────────┘ │ │ └────────────────────┘ │ └──────────────────────┘ └──────────────────────────┘ 关键优势: • 1次内存拷贝(vs System V 的2次) • 基于内存映射(mmap)实现共享 • 内核驱动(/dev/binder)负责进程间数据传递 • 支持同步和异步调用

        Binder 关键概念:

        概念说明
        Binder Driver内核驱动 /dev/binder,负责 IPC 数据传输
        Binder 实体服务端的 Binder 对象,继承 android.os.Binder
        Binder 代理客户端的代理对象(BinderProxy),转发调用
        ServiceManagerBinder 注册中心,管理所有系统服务
        onTransact()服务端接收远程调用的回调方法
        transact()客户端发起远程调用的方法
        AIDLAndroid Interface Definition Language,自动生成 Stub/Proxy
        线程池每个进程有 Binder 线程池(默认最多16个线程)处理请求

        ⚠️ Binder 限制

        传输大小限制:单次 Binder 调用数据不能超过 1MB(所有进程共享的 binder 内存),否则抛出 TransactionTooLargeException线程池限制:每个进程 Binder 线程池默认 16 个,高并发时可能阻塞 • 同步调用阻塞:默认同步调用会阻塞调用线程,直到服务端响应

        📡 ServiceManager

        ServiceManager 是 Binder 机制的注册中心(类似电话簿),所有系统服务在此注册,客户端通过它查找服务。

        ServiceManager 工作机制

        服务注册与查找流程: 1. 服务注册 (服务端): ┌──────────────┐ ┌─────────────────┐ │ SystemServer │ ──addService("activity", binder)──→ │ ServiceManager │ └──────────────┘ └─────────────────┘ 存储: {"activity": binder_ref_1, "package": binder_ref_2, "window": binder_ref_3, ...} 2. 服务查找 (客户端): ┌──────────────┐ ┌─────────────────┐ │ App 进程 │ ──getService("activity")──→ │ ServiceManager │ └──────┬───────┘ └────────┬────────┘ │ │ │ 返回 binder_ref_1 │ └──────────────────────────┘ │ ┌──────▼───────────────────────────┐ │ 获得 ActivityManager 代理对象 │ │ 可通过代理调用 AMS 方法 │ └──────────────────────────────────┘

        常用系统服务注册名:

        服务名对应服务管理器
        activityActivityManagerServiceActivityManager
        packagePackageManagerServicePackageManager
        windowWindowManagerServiceWindowManager
        inputInputManagerServiceInputManager
        connectivityConnectivityServiceConnectivityManager
        wifiWifiServiceWifiManager
        bluetooth_managerBluetoothManagerServiceBluetoothManager
        locationLocationManagerServiceLocationManager
        notificationNotificationManagerServiceNotificationManager
        powerPowerManagerServicePowerManager
        audioAudioServiceAudioManager
        phoneTelephonyRegistryTelephonyManager
        clipboardClipboardServiceClipboardManager
        alarmAlarmManagerServiceAlarmManager
        contentContentServiceContentResolver

        📐 HIDL / AIDL 接口定义

        HIDL 和 AIDL 是 Android 定义跨进程/跨分区接口的语言,是 Treble 架构的关键。

        HIDL vs AIDL 对比

        特性HIDLAIDL (Stable)
        引入版本Android 8.0Android 11 (稳定版)
        语法类 C 语法,.hal 文件类 Java 语法,.aidl 文件
        版本控制接口版本号(如 @1.0, @2.0)parcelable + version 字段
        通信方式hwbinder (独立 binder 域)Binder / hwbinder
        生成代码C++ / JavaJava / C++ / NDK
        未来方向逐步淘汰推荐方式
        使用位置System-Vendor 接口新增 HAL 首选

        HIDL 接口示例:

        // ICameraDevice@3.5.hal

        package

        android.hardware.camera.device

        @

        3.5

        ;

        import

        ICameraDeviceCallback

        ;

        import

        ICameraDeviceSession

        ;

        interface

        ICameraDevice

        {

        // 获取设备资源

        getResourceCost

        ()

        generates

        (

        CameraDeviceCost

        cost);

        // 打开设备会话

        open

        (

        ICameraDeviceCallback

        callback)

        generates

        (

        Status

        status,

        ICameraDeviceSession

        session);

        // 获取可用特性

        getCameraCharacteristics

        ()

        generates

        (

        Status

        status,

        CameraMetadata

        characteristics); };

        AIDL 稳定接口示例:

        // ICameraDevice.aidl (Android 12+)

        package

        android.hardware.camera

        ;

        parcelable

        CameraMetadata

        ;

        interface

        ICameraDevice

        {

        // 获取相机特性

        CameraMetadata

        getCharacteristics

        ();

        // 打开相机设备

        ICameraDeviceSession

        open

        (

        in

        ICameraDeviceCallback

        callback);

        // 断开连接

        void

        disconnect

        (); }

        🏗️ Project Treble 详解

        Project Treble 是 Android 8.0 引入的革命性架构变更,旨在解决 Android 碎片化升级问题。

        Treble 架构分层

        Treble 分层设计 (Android 8.0+): ┌─────────────────────────────────────────────────┐ │ Android Framework (Google 维护) │ │ /system/framework/.jar │ │ ──────────── Stable Interface ──────────── │ ├─────────────────────────────────────────────────┤ │ Vendor Interface (VINTF 定义) │ │ HIDL / Stable AIDL / VNDK │ │ ────── Vendor Interface Object ────── │ ├─────────────────────────────────────────────────┤ │ Vendor Implementation (厂商维护) │ │ /vendor/ — HAL 实现, 驱动, 固件 │ │ /odm/* — 硬件特定定制 │ ├─────────────────────────────────────────────────┤ │ Linux Kernel (芯片厂商) │ │ 设备驱动, Device Tree │ └─────────────────────────────────────────────────┘ 优势: • 升级 Android 版本 → 只需更新 /system (Framework) • 厂商 HAL 实现 (/vendor) 不需要重新适配 • 通过 GSI (Generic System Image) 快速测试 • 缩短了大版本升级周期

        Treble 兼容性要求:

        要求说明
        HAL 接口稳定性HIDL/AIDL 接口必须保持向后兼容
        VNDK 使用Vendor 只能使用 VNDK 库子集
        SELinux 隔离System 和 Vendor 运行在不同 SELinux 域
        文件系统隔离System 和 Vendor 位于不同分区
        命名空间隔离动态链接器使用独立命名空间

        VNDK (Vendor Native Development Kit)

        VNDK 是提供给 Vendor 分区使用的 Native 库子集,确保 vendor 代码不依赖不稳定的内部 API。

        库类型说明示例
        VNDK-CoreVNDK 核心库,vendor 可直接链接libutils, libcutils, liblog
        VNDK-SPSame-Process HAL 依赖库libhardware, libhidlbase
        LLNDKLinker-Namespace NDK,稳定ABIlibc, libm, libdl
        Framework-only仅 Framework 可用,vendor 禁止使用libmedia, libgui

        🚫 Vendor 禁止事项

        • 禁止直接链接 /system/lib 中的非 VNDK 库 • 禁止访问 /system 中非公开的 API • 禁止在 vendor 中修改 system 分区文件 • 禁止绕过 SELinux 策略

        🔑 APEX 模块化 (Mainline)

        APEX (Android Pony EXpression) 是 Android 10+ 引入的模块化方案,允许部分系统组件通过 Google Play 独立更新。

        APEX 模块列表与结构

        APEX 模块说明挂载点
        com.android.artART 运行时 (JIT/AOT编译器)/apex/com.android.art/
        com.android.runtime运行时公共库/apex/com.android.runtime/
        com.android.media媒体框架 (MediaCodec, Extractors)/apex/com.android.media/
        com.android.mediaprovider媒体存储提供者/apex/com.android.mediaprovider/
        com.android.conscryptTLS/SSL 加密库/apex/com.android.conscrypt/
        com.android.resolvDNS 解析器/apex/com.android.resolv/
        com.android.tzdata时区数据/apex/com.android.tzdata/
        com.android.wifiWiFi 框架和驱动/apex/com.android.wifi/
        com.android.bluetooth蓝牙协议栈/apex/com.android.bluetooth/
        com.android.neuralnetworksNNAPI (神经网络 API)/apex/com.android.neuralnetworks/
        com.android.permission权限控制器/apex/com.android.permission/
        com.android.ipsecIPSec VPN/apex/com.android.ipsec/
        com.android.adbdADB 守护进程/apex/com.android.adbd/
        com.android.cellbroadcast小区广播/apex/com.android.cellbroadcast/
        com.android.extservices扩展服务/apex/com.android.extservices/
        com.android.uwbUWB 超宽带/apex/com.android.uwb/
        com.android.nfcservicesNFC 服务/apex/com.android.nfcservices/
        com.android.virt虚拟化框架/apex/com.android.virt/

        APEX 文件内部结构:

        APEX 文件结构 (.apex 本质上是特殊的 zip)

        com.android.art.apex

        ├──

        apex_manifest.json

        模块清单

        │ { │ "name": "com.android.art", │ "version": 341100000, │ "requireNativeLibs": ["libc.so", "libm.so"] │ } ├──

        apex_pubkey

        签名公钥

        ├──

        lib/

        32位 Native 库

        ├──

        lib64/

        64位 Native 库

        ├──

        javalib/

        Java 库

        │ ├──

        core-oj.jar

        │ ├──

        core-libart.jar

        │ └──

        okhttp.jar

        ├──

        etc/

        配置文件

        │ └──

        init/

        模块 init 脚本

        │ └──

        art.rc

        └──

        bin/

        可执行文件

        └──

        dex2oat

        挂载方式

        APEX 在启动时被解压/挂载到 /apex/{module_name}/@{version}/

        通过 /apex/{module_name}/ 软链接到当前活跃版本

        🔐 安全架构概述

        Android 采用多层安全模型,包括 Linux 用户隔离、强制访问控制(SELinux)、应用沙盒、安全启动等机制。

        SELinux 强制访问控制

        SELinux 在 Android 上以 Enforcing 模式运行,为每个进程和文件分配安全上下文标签,严格控制访问权限。

        SELinux 上下文格式:

        格式:user:role:type:level

        u:r:untrusted_app:s0:c512,c768 │ │ │ │ │ │ │ │ │ └── MCS 类别 (多类别安全) │ │ │ └───── 安全级别 │ │ └──────────────────── 类型 (最关键的标识) │ └─────────────────────── 角色 └────────────────────────── 用户

        常见 SELinux 域:

        SELinux 域说明
        u:r:init:s0Init 进程
        u:r:system_server:s0SystemServer 进程
        u:r:zygote:s0Zygote 进程
        u:r:surfaceflinger:s0SurfaceFlinger
        u:r:servicemanager:s0ServiceManager
        u:r:system_app:s0普通系统应用
        u:r:platform_app:s0平台签名应用
        u:r:priv_app:s0特权应用
        u:r:untrusted_app:s0第三方应用
        u:r:hal_*_default:s0HAL 服务进程
        u:r:vold:s0卷管理守护进程
        u:r:netd:s0网络守护进程

        SELinux 策略规则示例:

        允许 system_app 读取 /data/data 下的文件

        allow

        system_app

        app_data_file

        :

        file

        {

        read

        open

        getattr

        };

        允许 untrusted_app 连接到 internet

        allow

        untrusted_app

        node

        :

        tcp_socket

        {

        name_connect

        };

        允许 system_server 创建 binder 调用

        allow

        system_server

        binder_device

        :

        chr_file

        {

        ioctl

        read

        write

        };

        不允许 untrusted_app 访问系统属性

        neverallow

        untrusted_app

        system_prop

        :

        property_service

        set

        ;

        ⚠️ SELinux 模式

        Enforcing:强制模式,所有违规操作被阻止并记录(生产环境) • Permissive:宽容模式,违规操作被允许但记录(调试用) • Disabled:禁用(仅早期工程设备) getenforce 命令查看当前模式 setenforce 0/1 切换模式(需要 root)

        权限体系详解

        权限级别说明示例
        normal低风险权限,安装时自动授予INTERNET, ACCESS_NETWORK_STATE, BLUETOOTH
        dangerous高风险权限,运行时需用户授权CAMERA, READ_CONTACTS, ACCESS_FINE_LOCATION, RECORD_AUDIO
        signature同签名应用自动授予BIND_ACCESSIBILITY_SERVICE
        signature|privileged同签名或特权应用授予系统内部特权权限
        internal仅系统内部使用BIND_DEVICE_ADMIN
        special特殊权限,需要特殊授权流程SYSTEM_ALERT_WINDOW, MANAGE_EXTERNAL_STORAGE

        运行时权限组 (Android 6.0+):

        权限组包含权限
        CALENDARREAD_CALENDAR, WRITE_CALENDAR
        CAMERACAMERA
        CONTACTSREAD_CONTACTS, WRITE_CONTACTS, GET_ACCOUNTS
        LOCATIONACCESS_FINE_LOCATION, ACCESS_COARSE_LOCATION, ACCESS_BACKGROUND_LOCATION
        MICROPHONERECORD_AUDIO
        PHONEREAD_PHONE_STATE, CALL_PHONE, READ_CALL_LOG 等
        SENSORSBODY_SENSORS, ACTIVITY_RECOGNITION
        SMSSEND_SMS, RECEIVE_SMS, READ_SMS
        STORAGEREAD_MEDIA_IMAGES, READ_MEDIA_VIDEO, READ_MEDIA_AUDIO (Android 13+)

        Seccomp 沙盒

        Seccomp (Secure Computing) 是 Linux 内核提供的系统调用过滤机制,限制进程可使用的系统调用。

        • Seccomp-BPF:使用 BPF 过滤器定义允许的系统调用列表
        • 应用进程:限制为约 300 个必要系统调用
        • MediaCodec:进一步限制为约 60 个系统调用
        • WebView:使用更严格的沙盒策略
        • 效果:即使应用被漏洞攻击,也无法执行任意系统调用

        密钥库系统

        Android 密钥库提供硬件/软件加密密钥的安全存储,防止密钥被提取。

        版本实现特点
        Keymaster 1-3C++ 实现早期版本
        Keymaster 4HIDL HALTreble 架构下
        Keystore2Rust 实现 (Android 12+)内存安全、更强的隔离

        密钥类型:AES、RSA、ECDSA、HMAC、Ed25519 等。支持密钥认证(Attestation)证明密钥存储在可信环境中。

        📋 配置文件详解

        build.prop 属性详解

        ============= 设备身份信息 =============

        ro.product.model

        =

        Pixel 8

        设备型号名

        ro.product.brand

        =

        google

        品牌

        ro.product.name

        =

        shiba

        产品代号

        ro.product.device

        =

        shiba

        设备代号

        ro.product.board

        =

        shiba

        主板代号

        ro.product.manufacturer

        =

        Google

        制造商

        ============= 系统版本信息 =============

        ro.build.id

        =

        UP1A.231005.007

        Build ID

        ro.build.display.id

        =

        UP1A.231005.007

        显示版本

        ro.build.version.incremental

        =

        10852558

        增量版本

        ro.build.version.sdk

        =

        34

        API Level

        ro.build.version.release

        =

        14

        Android 版本号

        ro.build.version.security_patch

        =

        2024-01-05

        安全补丁日期

        ro.build.date

        =

        Wed Oct 4 19:01:37 UTC 2023

        ro.build.type

        =

        user

        user/userdebug/eng

        ro.build.tags

        =

        release-keys

        签名标签

        ro.build.fingerprint

        =

        google/shiba/shiba:14/...:user/release-keys

        ============= 硬件信息 =============

        ro.hardware

        =

        taro

        硬件平台

        ro.board.platform

        =

        taro

        芯片平台

        ro.soc.model

        =

        Tensor G3

        SoC 型号

        ============= 显示与UI =============

        ro.sf.lcd_density

        =

        420

        屏幕密度 DPI

        persist.sys.timezone

        =

        Asia/Shanghai

        时区

        persist.sys.language

        =

        zh

        语言

        ============= 功能开关 =============

        persist.sys.usb.config

        =

        mtp,adb

        USB 配置

        ro.debuggable

        =

        0

        是否可调试

        ro.adb.secure

        =

        1

        ADB 安全认证

        ro.config.ringtone

        =

        Your_new_adventure.ogg

        dalvik.vm.heapsize

        =

        512m

        VM 最大堆内存

        dalvik.vm.heapgrowthlimit

        =

        256m

        VM 堆增长限制

        dalvik.vm.heapstartsize

        =

        8m

        VM 初始堆大小

        属性分类:

        前缀说明持久性
        ro.*只读属性,启动时设定,不可修改固定
        persist.*持久属性,修改后保存到 /data/property/重启保留
        sys.*系统运行时属性重启丢失
        init.*init 进程相关属性重启丢失
        dalvik.vm.*Dalvik/ART 虚拟机配置取决于来源
        net.*网络相关属性运行时
        dhcp.*DHCP 配置运行时

        重要 XML 配置文件

        文件路径说明
        platform.xml/system/etc/permissions/权限与 GID 映射
        privapp-permissions-*.xml/system/etc/permissions/特权应用权限白名单
        media_codecs.xml/vendor/etc/媒体编解码器能力声明
        audio_policy_configuration.xml/vendor/etc/音频路由策略
        manifest.xml (VINTF)/vendor/etc/vintf/HAL 接口清单
        compatibility_matrix.xml/system/etc/vintf/兼容性矩阵
        apns-conf.xml/system/etc/运营商 APN 数据库
        apex_manifest.json每个 APEX 内APEX 模块清单
        fonts.xml/system/etc/字体映射配置
        hiddenapi-*.csv/system/etc/sysconfig/隐藏 API 策略

        packages.xml 结构分析

        /data/system/packages.xml 是 PMS 的核心数据文件,记录了所有已安装包的完整信息。

        <?xml version='1.0' encoding='UTF-8'?>

        <packages>

        <!-- 权限定义 -->

        <permission

        name

        =

        "android.permission.INTERNET"

        package

        =

        "android"

        protection

        =

        "normal"

        />

        <!-- 安装包信息 -->

        <package

        name

        =

        "com.example.app"

        codePath

        =

        "/data/app/com.example.app-1/base.apk"

        nativeLibraryPath

        =

        "/data/app/.../lib/arm64"

        primaryCpuAbi

        =

        "arm64-v8a"

        version

        =

        "100"

        userId

        =

        "10123"

        installer

        =

        "com.android.vending"

        installTime

        =

        "1699999999"

        <sigs

        count

        =

        "1"

        <cert

        index

        =

        "0"

        key

        =

        "..."

        />

        </sigs>

        <perms>

        <item

        name

        =

        "android.permission.INTERNET"

        granted

        =

        "true"

        />

        <item

        name

        =

        "android.permission.CAMERA"

        granted

        =

        "false"

        />

        </perms>

        </package>

        </packages>

        🎨 图形与媒体系统

        图形渲染管线 — SurfaceFlinger

        Android 图形渲染管线: ┌─────────────────────────────────────────────────────────────────┐ │ 应用层 │ │ View.invalidate() → ViewRootImpl.draw() → RenderThread │ └─────────────────────────────┬───────────────────────────────────┘ │ 生成 GraphicBuffer ↓ ┌─────────────────────────────────────────────────────────────────┐ │ SurfaceFlinger (合成器) │ │ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ │ │ │ Layer 1 │ │ Layer 2 │ │ Layer 3 │ │ Layer 4 │ │ │ │(App UI) │ │(StatusBar│ │(Keyboard)│ │(Dialog) │ │ │ └────┬─────┘ └────┬─────┘ └────┬─────┘ └────┬─────┘ │ │ └─────────┬──┴─────────┬──┴──────────┬──┘ │ │ │ Compose │ │ │ │ ↓ ↓ ↓ │ │ ┌──────────────────────────────────────────┐ │ │ │ HWC (Hardware Composer) — GPU/HWC 合成 │ │ │ └────────────────────┬─────────────────────┘ │ └────────────────────────────────┼────────────────────────────────┘ │ ↓ ┌────────────────────────┐ │ Display Panel (显示屏) │ │ 60/90/120/144Hz │ └────────────────────────┘ 关键组件: • Surface — 一块可绘制的缓冲区 • GraphicBuffer — 共享图形缓冲区 • BufferQueue — 生产者-消费者队列 • SurfaceFlinger — 合成所有 Layer 到显示屏 • HWC (Hardware Composer) — 硬件加速合成 • Skia — 2D 图形引擎 (CPU/GPU 渲染后端) • HWUI — 硬件加速渲染管线

        音频系统架构

        Android 音频栈: ┌────────────────────────────────────────┐ │ 应用层 │ │ MediaPlayer / AudioTrack / SoundPool │ └──────────────────┬─────────────────────┘ ↓ ┌────────────────────────────────────────┐ │ Audio Framework (Java) │ │ AudioManager / AudioService │ └──────────────────┬─────────────────────┘ ↓ ┌────────────────────────────────────────┐ │ AudioFlinger (Native) │ │ 音频混合器、效果链、重采样 │ └──────────────────┬─────────────────────┘ ↓ ┌────────────────────────────────────────┐ │ Audio HAL (HIDL/AIDL) │ │ audio.primary, audio.usb 等 │ └──────────────────┬─────────────────────┘ ↓ ┌────────────────────────────────────────┐ │ ALSA / 内核音频驱动 │ │ Codec, Speaker, Mic 硬件 │ └────────────────────────────────────────┘

        音频流类型说明典型用途
        STREAM_MUSIC媒体播放音乐、视频、游戏音效
        STREAM_ALARM闹钟闹钟应用
        STREAM_NOTIFICATION通知消息提示音
        STREAM_RING铃声来电铃声
        STREAM_SYSTEM系统按键音、系统提示
        STREAM_VOICE_CALL通话电话通话
        STREAM_DTMF拨号音拨号键盘音

        相机框架 (Camera2 / CameraX)

        Android Camera 架构 (Camera2 API): ┌──────────────────────────────────────┐ │ 应用层 │ │ Camera2 API / CameraX (Jetpack) │ └──────────────────┬───────────────────┘ ↓ ┌──────────────────────────────────────┐ │ CameraService (系统服务) │ │ 相机资源管理、权限验证 │ └──────────────────┬───────────────────┘ ↓ ┌──────────────────────────────────────┐ │ Camera HAL (HIDL/AIDL) │ │ ICameraDevice@3.x / AIDL Camera │ │ 请求处理、结果回调 │ └──────────────────┬───────────────────┘ ↓ ┌──────────────────────────────────────┐ │ 内核 Camera Driver │ │ V4L2 / 自定义驱动 │ └──────────────────┬───────────────────┘ ↓ ┌──────────────────────────────────────┐ │ 相机硬件 (Sensor + ISP) │ └──────────────────────────────────────┘ Camera2 核心概念: • CameraManager — 相机管理器 • CameraDevice — 相机设备抽象 • CameraCaptureSession — 捕获会话 • CaptureRequest — 捕获请求(参数配置) • CaptureResult — 捕获结果(元数据) • ImageReader — 图像数据接收器

        媒体编解码 — MediaCodec

        编解码器类型说明
        OMX.google.h264.decoder软件Google H.264 软解码
        OMX.qcom.video.decoder.avc硬件高通 H.264 硬解码
        c2.android.aac.decoderCodec2 软件Android AAC 解码
        c2.qti.avc.decoderCodec2 硬件高通 AVC 解码

        OMX (OpenMAX) → Codec2 迁移:Android 10+ 使用 Codec2 框架替代旧的 OMX,提供更好的性能和灵活性。配置文件 media_codecs.xml 声明设备支持的编解码器列表。

        📡 通信与连接

        电话系统架构

        Android Telephony 架构: ┌─────────────────────────────────────────┐ │ 应用层 (Phone App / Dialer) │ │ TelecomManager / TelephonyManager │ └──────────────────┬──────────────────────┘ ↓ ┌─────────────────────────────────────────┐ │ Telecomm Framework │ │ TelecomService / Call 管理 │ └──────────────────┬──────────────────────┘ ↓ ┌─────────────────────────────────────────┐ │ Telephony Framework │ │ Phone / ServiceStateTracker │ └──────────────────┬──────────────────────┘ ↓ ┌─────────────────────────────────────────┐ │ Radio Interface Layer (RIL) │ │ RILD 守护进程 (C) │ │ 与 Modem 通信 │ └──────────────────┬──────────────────────┘ ↓ ┌─────────────────────────────────────────┐ │ HAL (IRadio@1.x) │ │ 与基带处理器通信 │ └──────────────────┬──────────────────────┘ ↓ ┌─────────────────────────────────────────┐ │ Modem / Baseband Processor │ │ 2G/3G/4G/5G 协议栈 │ └─────────────────────────────────────────┘

        WiFi 系统架构

        Android WiFi 架构 (Android 12+): ┌─────────────────────────────────────────┐ │ 应用层 │ │ WifiManager API │ └──────────────────┬──────────────────────┘ ↓ ┌─────────────────────────────────────────┐ │ WifiService (SystemServer) │ │ WifiServiceImpl │ └──────────────────┬──────────────────────┘ ↓ ┌─────────────────────────────────────────┐ │ Wifi HAL (AIDL) │ │ IWifi.aidl │ └──────────────────┬──────────────────────┘ ↓ ┌─────────────────────────────────────────┐ │ wpa_supplicant / hostapd │ │ WPA 协议实现、热点管理 │ └──────────────────┬──────────────────────┘ ↓ ┌─────────────────────────────────────────┐ │ 内核 WiFi 驱动 (nl80211) │ └──────────────────┬──────────────────────┘ ↓ ┌─────────────────────────────────────────┐ │ WiFi 芯片固件 │ └─────────────────────────────────────────┘ 关键文件: • /data/misc/wifi/WifiConfigStore.xml — WiFi 配置存储 • /vendor/etc/wifi/wpa_supplicant.conf — supplicant 配置 • /vendor/firmware/wlan/ — WiFi 芯片固件

        蓝牙协议栈

        Android 使用 Gabeldorsche(后更名为 Fluoride)蓝牙协议栈。

        组件说明
        BluetoothManagerService蓝牙管理服务
        AdapterService蓝牙适配器服务
        GattServiceGATT (BLE) 服务
        A2dpService音频流服务
        HidDeviceServiceHID 设备服务
        libbluetooth.so蓝牙 HAL 库

        连接管理服务 (ConnectivityService)

        ConnectivityService 管理所有网络连接类型,处理网络策略和流量控制。

        • 管理 WiFi、移动数据、以太网、VPN 等网络
        • 网络优先级策略:WiFi > Ethernet > Mobile
        • 网络验证(Captive Portal 检测)
        • 流量统计和限制
        • DNS 解析管理
        • 网络请求(NetworkRequest)和回调

        💾 存储与文件系统

        vold — 卷管理守护进程

        vold (Volume Daemon) 负责管理所有存储设备的挂载、格式化、加密等操作。

        职责说明
        存储设备检测监听内核 uevent,检测 SD 卡、USB 存储设备插入
        分区管理管理存储分区(Primary、Adoptable)
        文件系统格式化格式化分区为 ext4/f2fs/exFAT
        挂载管理将分区挂载到正确的挂载点
        加密管理管理 FBE/FDE 加密
        OTG 支持处理 USB OTG 存储设备

        Android 使用的文件系统

        文件系统用途特点
        ext4/system, /vendor, /product稳定可靠,日志文件系统,支持 TRIM
        f2fs/data (闪存优化)专为闪存设计,更好的随机写性能
        erofs只读分区(部分设备)压缩只读文件系统,节省空间
        squashfs旧版只读分区压缩只读文件系统(已被erofs替代)
        tmpfs/dev, /mnt内存文件系统,重启丢失
        proc/proc进程信息伪文件系统
        sysfs/sys内核设备信息伪文件系统
        exFAT外部 SD 卡支持大文件(>4GB)

        OTA 升级机制

        方案版本说明
        Block-based OTAAndroid 5.0+按块差分更新
        A/B Seamless UpdatesAndroid 7.0+双槽位无缝升级,更新在后台完成
        Virtual A/BAndroid 11+结合动态分区,只有一个完整系统
        Virtual A/B RetrofitAndroid 12+优化存储空间使用

        A/B 无缝升级流程: ┌─────────────────────────────────────────────┐ │ Slot A (当前活跃) │ Slot B (非活跃) │ │ system_a │ system_b (旧版) │ │ vendor_a │ vendor_b (旧版) │ │ boot_a ← 当前启动 │ boot_b │ └───────────────────────┴─────────────────────┘ 升级过程: 1. 下载 OTA 包到 /data 2. update_engine 解析更新 payload 3. 将更新写入 Slot B (非活跃槽位) 4. 验证 Slot B 完整性 5. 标记 Slot B 为可启动 6. 重启,Bootloader 选择 Slot B 7. 系统从 Slot B 启动 8. 标记 Slot B 为活跃 回滚机制: • 如果新系统启动失败,自动回退到 Slot A • Bootloader 维护 slot 状态和优先级

        📖 教程与实践

        编译 AOSP 教程

        环境要求:

        • Linux 系统(推荐 Ubuntu 20.04/22.04)
        • 至少 250GB 可用磁盘空间(建议 500GB+)
        • 至少 16GB 内存(建议 32GB+)
        • 64位 CPU 和多核心处理器

        编译步骤:

        1. 安装依赖

        sudo apt-get install

        git-core gnupg flex bison build-essential \ zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 \ libncurses5 lib32ncurses5-dev x11proto-core-dev libx11-dev \ lib32z1-dev libgl1-mesa-dev libxml2-utils xsltproc unzip \ fontconfig python3

        2. 安装 repo 工具

        mkdir

        ~/bin

        curl

        https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo

        chmod

        a+x ~/bin/repo

        export

        PATH

        =~/bin:$PATH

        3. 配置 git

        git config --global user.email "you@example.com" git config --global user.name "Your Name"

        4. 初始化 repo (以 Android 14 为例)

        mkdir

        aosp &&

        cd

        aosp repo init -u https://android.googlesource.com/platform/manifest -b android-14.0.0_r1

        5. 同步源码 (耗时 1-3 小时)

        repo sync -c -j8 --no-tags

        6. 设置编译环境

        source build/envsetup.sh

        7. 选择编译目标

        lunch aosp_oriole-userdebug

        Pixel 6

        或: lunch aosp_arm64-eng (模拟器)

        8. 开始编译

        m -j$(nproc)

        使用所有 CPU 核心

        或: make -j16

        编译产物位置:

        out/target/product/oriole/

        ├── system.img (系统镜像)

        ├── vendor.img

        ├── boot.img

        └── userdata.img

        AOSP 源码树导航

        aosp/

        ├──

        art/

        ART 运行时源码

        ├──

        bionic/

        Android C 库 (libc, libm, linker)

        ├──

        bootable/

        引导相关 (recovery, bootloader)

        ├──

        build/

        构建系统 (makefile, Soong)

        │ └──

        make/

        ├──

        compatibility/

        兼容性测试

        ├──

        cts/

        CTS 兼容性测试套件

        ├──

        dalvik/

        Dalvik VM (旧版)

        ├──

        developers/

        开发者示例

        ├──

        development/

        开发工具

        ├──

        device/

        设备特定配置

        │ ├──

        google/

        Google Pixel 设备

        │ └──

        generic/

        通用设备配置

        ├──

        external/

        第三方开源库

        │ ├──

        zlib/

        zlib 压缩

        │ ├──

        sqlite/

        SQLite

        │ ├──

        boringssl/

        BoringSSL (Google fork of OpenSSL)

        │ ├──

        icu/

        ICU 国际化

        │ └──

        skia/

        Skia 图形引擎

        ├──

        frameworks/

        Android 框架源码 (最重要)

        │ ├──

        base/

        基础框架

        │ │ ├──

        core/

        核心 Java API

        │ │ ├──

        services/

        系统服务实现

        │ │ │ ├──

        core/

        AMS, PMS, WMS

        │ │ │ └──

        java/

        Java 服务代码

        │ │ └──

        cmds/

        命令行工具

        │ ├──

        native/

        Native 框架

        │ │ ├──

        libs/

        Native 库

        │ │ │ ├──

        gui/

        GUI 库 (Surface)

        │ │ │ ├──

        binder/

        Binder 实现

        │ │ │ └──

        ui/

        UI 库

        │ │ └──

        services/

        Native 服务

        │ │ ├──

        surfaceflinger/

        SurfaceFlinger

        │ │ └──

        audioflinger/

        AudioFlinger

        │ ├──

        av/

        音视频框架

        │ │ ├──

        media/

        媒体库

        │ │ └──

        services/

        媒体服务

        │ └──

        opt/

        可选组件

        ├──

        hardware/

        HAL 接口定义

        │ ├──

        interfaces/

        HIDL/AIDL HAL 接口

        │ │ ├──

        camera/

        相机 HAL

        │ │ ├──

        audio/

        音频 HAL

        │ │ ├──

        graphics/

        图形 HAL

        │ │ └──

        wifi/

        WiFi HAL

        │ └──

        libhardware/

        HAL 加载库

        ├──

        kernel/

        内核源码

        ├──

        libcore/

        Java 核心库 (OpenJDK)

        ├──

        packages/

        预装应用

        │ ├──

        apps/

        普通应用

        │ │ ├──

        Settings/

        系统设置

        │ │ ├──

        Launcher3/

        启动器

        │ │ └──

        SystemUI/

        系统 UI

        │ ├──

        providers/

        内容提供者

        │ │ ├──

        ContactsProvider/

        联系人

        │ │ ├──

        MediaProvider/

        媒体

        │ │ └──

        TelephonyProvider/

        电话

        │ └──

        services/

        系统服务应用

        ├──

        platform_testing/

        平台测试

        ├──

        prebuilts/

        预编译工具

        │ ├──

        clang/

        Clang 编译器

        │ └──

        jdk/

        JDK

        ├──

        system/

        底层系统组件

        │ ├──

        core/

        核心工具 (init, logcat)

        │ ├──

        sepolicy/

        SELinux 策略

        │ ├──

        vold/

        卷管理

        │ └──

        netd/

        网络守护

        ├──

        tools/

        开发工具

        │ ├──

        adb/

        ADB 源码

        │ └──

        apkparser/

        APK 解析工具

        └──

        vendor/

        厂商代码

        调试工具使用指南

        工具用途常用命令
        adbAndroid 调试桥adb devices — 列出设备 adb shell — 进入 Shell adb logcat — 查看日志 adb push/pull — 文件传输 adb install — 安装 APK adb reboot — 重启设备
        logcat日志系统logcat -v time — 带时间戳 logcat *:E — 仅显示 Error logcat -s TAG — 按标签过滤 logcat -c — 清除日志
        dumpsys服务状态转储dumpsys activity — Activity 状态 dumpsys meminfo — 内存信息 dumpsys battery — 电池信息 dumpsys window — 窗口信息
        getprop/setprop属性管理getprop — 列出所有属性 getprop ro.build.version.sdk setprop debug.xxx 1
        top进程监控top -m 10 — 前10进程 top -d 1 — 1秒刷新
        ps进程列表ps -A — 所有进程 ps -ef — 完整信息
        strace系统调用跟踪strace -p PID
        bugreport完整 Bug 报告adb bugreport ./output.zip

        日志分析方法

        Logcat 日志级别:

        级别缩写说明
        VerboseV最详细,仅开发调试
        DebugD调试信息
        InfoI一般信息
        WarningW警告,可能有问题
        ErrorE错误,功能失败
        AssertA断言失败,严重错误
        SilentS不输出

        日志格式说明:

        典型 logcat 输出格式

        12-15 14:32:01.234 1234 5678 I ActivityManager: Start proc com.example.app │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── 日志消息 │ │ │ │ │ │ │ └── 日志标签 │ │ │ │ │ │ └── 日志级别 │ │ │ │ │ └── 线程 ID (TID) │ │ │ │ └── 进程 ID (PID) │ │ │ └── 毫秒 │ │ └── 秒:分 │ └── 时:分 └── 月-日

        日志缓冲区

        main — 应用日志(默认) system — 系统服务日志 radio — 电话/射频日志 events — 事件日志 crash — 崩溃日志 kernel — 内核日志

        Android 版本完整对照表

        版本代号API Level关键特性发布年份
        Android 16-36预测性返回动画、Health Connect 扩展2026
        Android 15Vanilla Ice Cream35卫星通信、Private Space、16KB 页面2024
        Android 14Upside Down Cake34Ultra HDR、Path APIs、Health Connect2023
        Android 13Tiramisu33细化媒体权限、Themed Icons2022
        Android 12LSnow Cone v232大屏优化2022
        Android 12Snow Cone31Material You、AIDL HAL2021
        Android 11Red Velvet Cake30一次性权限、Scoped Storage 强制2020
        Android 10Quince Tart29APEX 模块化、手势导航2019
        Android 9Pie28AI 自适应电池、Digital Wellbeing2018
        Android 8.1Oreo MR127Neural Networks API2017
        Android 8.0Oreo26Project Treble、通知频道2017
        Android 7.1Nougat MR125圆形图标、Daydream VR2016
        Android 7.0Nougat24A/B 升级、Vulkan、分屏2016
        Android 6.0Marshmallow23运行时权限、Doze、指纹2015
        Android 5.1Lollipop MR122多 SIM 卡、设备保护2015
        Android 5.0Lollipop21ART、Material Design、64位2014
        Android 4.4KitKat19低内存优化、打印框架2013
        Android 4.3Jelly Bean MR218BLE、DRM、限制配置2013
        Android 4.2Jelly Bean MR117多用户、Daydream、锁屏 Widget2012
        Android 4.1Jelly Bean16Project Butter (60fps)2012
        Android 4.0Ice Cream Sandwich14-15Holo Design、统一手机平板2011
        Android 3.0Honeycomb11-13平板专用、Fragment2011
        Android 2.3Gingerbread9-10NFC、下载管理、复制粘贴2010
        Android 2.2Froyo8JIT 编译、USB 热点2010
        Android 2.0-2.1Éclair5-7多账户、动态壁纸2009
        Android 1.6Donut4CDMA 支持、手势2009
        Android 1.5Cupcake3软键盘、Widget、视频录制2009
        Android 1.0-1.1-1-2基础 Android 功能2008

        术语表 (Glossary)

        缩写全称说明
        AOSPAndroid Open Source ProjectAndroid 开源项目
        AMSActivityManagerService活动管理器服务
        WMSWindowManagerService窗口管理器服务
        PMSPackageManagerService包管理器服务
        HALHardware Abstraction Layer硬件抽象层
        HIDLHAL Interface Definition LanguageHAL 接口定义语言
        AIDLAndroid Interface Definition LanguageAndroid 接口定义语言
        VNDKVendor Native Development Kit厂商 Native 开发工具包
        GSIGeneric System Image通用系统镜像
        ARTAndroid RuntimeAndroid 运行时
        DEXDalvik ExecutableDalvik 可执行文件
        OATOptimized Android ToolkitART 优化后的文件
        AVBAndroid Verified BootAndroid 验证启动
        FBEFile-Based Encryption文件级加密
        FDEFull Disk Encryption全盘加密
        SELinuxSecurity-Enhanced Linux安全增强 Linux
        APEXAndroid Pony EXpressionAndroid 模块化包格式
        OTAOver-The-Air空中下载升级
        CTSCompatibility Test Suite兼容性测试套件
        VTSVendor Test Suite厂商测试套件
        GMSGoogle Mobile ServicesGoogle 移动服务
        RILRadio Interface Layer射频接口层
        HWCHardware Composer硬件合成器
        JNIJava Native InterfaceJava Native 接口
        Binder-Android IPC 机制
        Soong-Android 构建系统 (替代 Make)
        VINTFVendor Interface Object厂商接口对象
        ANRApplication Not Responding应用无响应
        OOMOut Of Memory内存溢出
        LMKLow Memory Killer低内存杀手
        TEETrusted Execution Environment可信执行环境
        TZTrustZoneARM TrustZone 安全区
← 返回IT 技术 yicool 百科 · 📱 Android 系统目录与文件设计架构 — 完整知识体系

评论 0