第1章 Android系统简介
依据2014年首版完整目录覆盖4个节点:从发展历程、系统特点和四层框架建立Android 4.3整体坐标
第1章 Android系统简介
本页依据林学森《深入理解Android内核设计思想》独立重构,不复制原文。版本锁定人民邮电出版社2014年5月首版、687页、ISBN 9787115348418,面向Android 4.3以上;全书为4篇22章、323个章/节/小节节点。
课程先复现首版Make构建、Binder、SurfaceFlinger、WMS、View、AudioFlinger、Ant与旧工具链,再用现代AOSP/Soong、Treble、ART和新调试工具建立迁移账本,绝不把第2版新增的虚拟机、安全与Gradle章节倒填进首版。
学习目标
- 能解释“第1章 Android系统简介”全部4个正式节点的入口、线程进程、数据与资源所有权。
- 能实现“从发展历程、系统特点和四层框架建立Android 4.3整体坐标”的最小复现实验并保存版本卡、命令、产物、状态和日志。
- 能区分源码事实、运行证据与版本变化,并用版本时间线、框架分层图、进程与库边界、设备启动基线验收。
- 能设计反例推翻“把Linux内核、Native库、Runtime、Framework和应用层画成互不交互的静态堆叠”,写出首版机制到现代Android的迁移和回退条件。
从版本与断点开始
↡记录AOSP标签、仓库、构建目标、文件路径和提交位置的溯源信息、↡从公开入口沿函数、线程、进程和语言边界到实际执行点的有序路径、↡规定进程、对象、缓冲区、文件描述符和线程由谁创建、共享与释放的责任、↡在跨线程、跨进程或跨层边界保存输入输出与身份信息的可复查位置、↡逐项记录首版机制、现代变化、行为差异、验证证据和回退条件的清单构成本页的分析协议。先预测入口会跨过哪些线程、进程、语言、驱动或硬件抽象边界,再在每个边界保存身份和输入输出;没有标签与证据断点的流程图不能复查。
本单元主线是从发展历程、系统特点和四层框架建立Android 4.3整体坐标。交互管线逐项选择目录节点;反例实验切换基线、错误版本、线程停滞、所有者丢失和数据损坏;证据门要求目录、版本、调用、所有权与迁移全部通过。
权威目录逐节点映射
第1章 Android系统简介
章节合同 1/4。 将本节点放入“从发展历程、系统特点和四层框架建立Android 4.3整体坐标”主线。先锁定AOSP标签与入口,再记录线程、进程、对象、缓冲区或文件的所有权,最后用版本时间线、框架分层图、进程与库边界、设备启动基线验证成功和失败路径。
1.1 Android系统发展历程
机制边界 2/4。 将本节点放入“从发展历程、系统特点和四层框架建立Android 4.3整体坐标”主线。先锁定AOSP标签与入口,再记录线程、进程、对象、缓冲区或文件的所有权,最后用版本时间线、框架分层图、进程与库边界、设备启动基线验证成功和失败路径。
1.2 Android系统特点
机制边界 3/4。 将本节点放入“从发展历程、系统特点和四层框架建立Android 4.3整体坐标”主线。先锁定AOSP标签与入口,再记录线程、进程、对象、缓冲区或文件的所有权,最后用版本时间线、框架分层图、进程与库边界、设备启动基线验证成功和失败路径。
1.3 Android系统框架
机制边界 4/4。 将本节点放入“从发展历程、系统特点和四层框架建立Android 4.3整体坐标”主线。先锁定AOSP标签与入口,再记录线程、进程、对象、缓冲区或文件的所有权,最后用版本时间线、框架分层图、进程与库边界、设备启动基线验证成功和失败路径。
证据解释
第一份证据是版本证据:AOSP标签、repo manifest、主机工具链、产品目标和产物哈希必须同时保存。Android源码长期重构,同名类和服务在不同分支可能承担不同职责;跨版本拼接得到的“完整流程”实际上无法编译,也无法在单一设备上运行。
第二份证据是调用证据。针对“从发展历程、系统特点和四层框架建立Android 4.3整体坐标”,从真实公开入口前向追踪,每次跨线程、跨进程、跨Java/Native、跨HAL/驱动边界都记录双方、数据形态、事务或函数编号和错误返回。版本时间线、框架分层图、进程与库边界、设备启动基线要能让另一位读者在相同标签上停在相同断点。
第三份证据是所有权证据。成功路径之外,主动让调用方退出、服务重启、缓冲区耗尽、输入损坏或超时发生,观察对象、引用计数、文件描述符、线程和映射是否释放。只画“谁调用谁”而不回答“谁负责释放”,无法解释系统泄漏、死锁和迟到回调。
第四份证据是迁移对照。现代AOSP可能以Soong、Treble、AIDL稳定接口、新渲染链或新调试工具替代首版机制。迁移时保持功能结果和故障样本不变,一次只替换一层;若线程、错误、性能或资源语义变化,先记录差异和回退,再更新结论。
历史节点: 第1章 Android系统简介
首版基线: Android 4.3 / 2014年第1版
现代候选: 待当前AOSP标签验证
不变量: 功能、线程进程、错误、资源释放
证据: 版本时间线、框架分层图、进程与库边界、设备启动基线
回退: 任一不变量失败即恢复首版路径从分层图还原一次真实调用
四层框架不是四个彼此独立的目录。以应用启动为例,应用进程先通过Framework中的客户端代理提出请求,Binder驱动把事务送入system_server中的系统服务,系统服务再协调包信息、进程调度、窗口与输入等状态;界面缓冲区最终经Native图形库、SurfaceFlinger和内核驱动送到显示设备。一次用户动作因此可能同时经过Java对象、Binder事务、Native句柄、共享缓冲区和内核文件描述符。分层图只有在标出这些跨层连接后,才具有解释运行行为的能力。
Android“基于Linux”也不等于“普通Linux发行版加一套Java界面”。内核仍负责进程、内存、调度、网络和设备驱动,但Android 4.3在用户空间采用自己的启动链、Runtime、系统服务、权限模型与图形栈。验证这一点时,可同时记录init创建的关键进程、servicemanager中的服务注册、应用进程的父子关系,以及SurfaceFlinger拥有的设备和缓冲区句柄。若图上的组件在目标映像中找不到对应进程、库或设备节点,该图就是概念草图而不是版本证据。
系统特点也要转换成可检验命题。所谓组件化,可以用同一Intent在不同过滤器下的候选集验证;所谓进程隔离,可以用UID、地址空间和Binder身份验证;所谓适配多设备,可以用同一资源请求在不同configuration下的选择结果验证;所谓受控生命周期,可以通过前后台切换和进程回收观察。把每个特点绑定到输入、状态和反例后,后续章节的AMS、WMS、资源、音频与Widget就能共享同一套系统坐标。
最终的版本坐标卡要能回答五个问题:设备运行哪个构建指纹,源码由哪个manifest与标签组成,应用和系统服务分别处在哪些进程,关键接口跨过哪种边界,失败时由哪一层返回错误并回收资源。把这些字段与一次启动日志、进程列表和服务列表一起归档,后续章节即使更换观察入口,也能判断看到的是Android 4.3首版机制、厂商改动,还是现代版本行为。缺少任一字段时,应标记为待验证,而不能用相似类名补齐结论。
本章回顾
从一次真实输入开始,依次回答源码属于哪个标签、入口在哪里、跨过哪些边界、每层保存什么状态、错误如何返回、资源由谁释放。再用版本时间线、框架分层图、进程与库边界、设备启动基线重放;无法在单一版本复现的结论退回研究阶段。
复习与独立交接
练习
问题 1:为什么必须保留4个正式节点?
问题 2:最小正确性合同是什么?
问题 3:怎样构造有效反例?
问题 4:为什么类名和静态流程图不够?
问题 5:怎样迁移而不改写首版?
问题 6:独立交接需要什么?
名词解释
本章出现的专业名词,用大白话再讲一遍。
- 源码版本卡
- 记录AOSP标签、仓库、构建目标、文件路径和提交位置的溯源信息。
- 调用链
- 从公开入口沿函数、线程、进程和语言边界到实际执行点的有序路径。
- 资源所有权
- 规定进程、对象、缓冲区、文件描述符和线程由谁创建、共享与释放的责任。
- 证据断点
- 在跨线程、跨进程或跨层边界保存输入输出与身份信息的可复查位置。
- 迁移账本
- 逐项记录首版机制、现代变化、行为差异、验证证据和回退条件的清单。