附录 D 速查索引与阅读指南

这个附录解决两个问题

  1. "我想查某个主题" → 看 D.1(按主题索引)
  2. "这个文件在哪几章被讲过" → 看 D.2(按工程文件索引)

另外还有 D.3 阅读指南 (路线、节奏、每章前置知识自检)和

D.4 一张"从零到发布"的全景图


D.1 按主题索引

用法:想到一个问题,查这张表找到章节。

D.1.1 Android 平台

主题 章节
App 是怎么启动的 ch04.1
AndroidManifest.xml 每个字段 ch04.2
applicationId vs namespace ch04.3
Activity 生命周期 ch04.4
旋转屏幕为什么不丢数据 ch04.5
ViewModel 存活边界 ch04.5、ch09
资源系统(res/ ch05
自适应图标 ch05.3
为什么只换 legacy 图标无效 ch05.4
密度(dpi) ch05.5
资源路径混淆 ch05.6、ch02 坑 3
DataStore 持久化 ch11
FileProvider 分享 ch04.2.3、ch12.7
ActivityResultContracts ch12.8
TTS 朗读 ch12.1--12.5
剪贴板 ch12.6
包可见性(<queries> ch04.2.2
作用域存储(为什么只有 Uri) ch12.8.3

D.1.2 Compose 与状态

主题 章节
声明式 vs 命令式 ch06.1
@Composable 约定 ch06.2
状态提升 ch06.3
重组与 remember ch06.4
LaunchedEffect 与 key ch06.5
Modifier 与顺序 ch06.6
页面骨架(Scaffold ch07.1
抽屉(ModalNavigationDrawer ch07.1.3
列表与 key ch07.2.3
状态列表(SnapshotStateList ch09.4
不可变更新与刷新 ch03.4.5、ch09.4.3
对话框状态设计 ch07.7
空状态设计 ch07.4.3
手写 Markdown ch07.6

D.1.3 异步与并发

主题 章节
为什么不能用 Thread ch08.1
suspend / launch / withContext ch08.2
三个调度器的边界 ch08.2.4
单线程调度器 ch08.2.5
Flow 是冷流 ch08.3.3
flowOn 切上游 ch08.4
协作式取消 ch08.5、ch10.2
CancellationException 必须重抛 ch10.4
catch 不重抛的陷阱 ch08.6
节流刷新 UI ch08.7
结构化并发与 Job 树 ch10.1
ANR 与主线程阻塞 ch10.5
资源收尾清单 ch10.6
状态容器为什么抽出来 ch09.1
工作副本 vs 快照 ch09.5
.first() vs collect ch09.6

D.1.4 JNI 与 C++

主题 章节
为什么需要 JNI ch13.1
external fun 声明 ch13.2.1
JNI 函数名规则 ch13.3
extern "C" 为什么必须 ch13.4
JNIEnv 与字符串转换 ch13.5
全局状态与互斥锁 ch13.6
为什么每个方法都加锁 ch13.6.2、ch13 练习 2
CMake 把 C++ 编进 .so ch13.7
-fsyntax-only 快速校验 ch13.9、ch02.7
GGUF 文件结构 ch14.2
小端序 ch14.2.2、附录 A.3.3
元数据类型系统 ch14.3
短读陷阱 ch14.7
DEFAULT_SKIP_KEYS ch14.8

D.1.5 模型与推理

主题 章节
量化是什么 ch01.2.2
GGUF 与元数据 ch01.2.3、ch14
端侧推理 ch01.2.4
token 与上下文长度 ch01.2.5
加载模型四个对象 ch15.1
n_ctx / n_batch / 线程数 ch15.4
KV cache 占多少内存(会算) ch15.5
prepare 失败路径清理 ch15.7.2
unload 释放后清零 ch15.8.2
prefill vs decode ch16.1
batch 与 position ch16.3
want_logit 优化 ch16.3.3
generateNextToken 逐行 ch16.4
三个停止条件 ch16.4.6
UTF-8 缓存(防乱码) ch16.5
chat template ch17.1--17.3
第二轮输出数字(24 字节事故) ch17.5
前缀比较 vs 长度切片 ch17.4.2、ch17.6
移窗(context shift) ch18.3
位置错乱事故 ch18.4
位置不变量检查 ch18 练习 5
temperature / top-k / top-p ch19.2--19.5
采样参数六环链路 ch19.6
"改了不生效"排查 ch19.7

D.1.6 构建与发版

主题 章节
五个组件(JDK/SDK/NDK/CMake/Gradle) ch02.1
版本对齐 ch02.4
local.properties / gradle.properties ch02.3
产物路径会变 ch02.5.4、ch20.6.2
Gradle vs AGP ch20.2
variant 与 buildTypes ch20.3
为什么关 R8 ch20.3.2
externalNativeBuild ch20.4
CMake 开关 ch20.5
ABI 过滤发生在哪一步 ch20.7
半残 ABI 切片事故 ch20.8
签名方案 v1/v2/v3/v4 ch21.2
keystore 为什么最重要 ch21.4
发版五步 ch21.6
校验五条清单 ch21.7
确认修复进包(MD5) ch21.7.5
覆盖安装的坑 ch21.8

D.1.7 方法论

主题 章节
五步排查框架 ch22.1
最小对照实验 ch22.1.3
静默失败四类 ch22.2
不变量 + 断言 ch22.8.3
纯逻辑模拟 ch22.8.4
二分法 ch22.8.5
根因分析报告模板 ch22.9
需求裁剪(MVP) ch23.2
最小架构 ch23.3
加回功能的顺序 ch23.10
分层思维 / 可验证 / 裁剪 ch23 结语

D.1.8 基础常识(补课)

主题 章节
编程最基本概念 附录 A.1
命令行与路径 附录 A.2
位/字节/十六进制/小端序 附录 A.3
UTF-8 与乱码原理 附录 A.4
JSON 与序列化 附录 A.5
CPU/内存/进程/线程/Binder 附录 A.6
编译与 APK 附录 A.7
Git 最小必需 附录 A.8

D.2 按工程文件索引

用法:你看到一个文件,想知道"它在哪几章被讲过"。

D.2.1 应用模块(app/

文件 被讲的章节
app/build.gradle.kts ch01.1、ch02、ch04.3、ch20.3/20.7/20.9
app/src/main/AndroidManifest.xml ch04.2
MainActivity.kt ch04.1/4.2/4.4/4.6
ui/MainScreen.kt ch01.1、ch19.6
ui/MainScreenState.kt(1132 行) ch09 全章、ch08.6、ch10.7、ch12.6、ch19.6
ui/ChatScreen.kt(419 行) ch06.3、ch07 全章
ui/MessageList.kt ch06.5、ch07.2
ui/MessageItem.kt ch07.5
ui/MarkdownText.kt(383 行) ch07.6
ui/InputArea.kt ch06.2/6.3
ui/SettingsScreen.kt ch19.6
model/ModelInfo.kt ch03.2/3.4/3.6
model/Message.kt ch03.4.2
model/ChatSession.kt ch03.4.3、ch11.6
util/AppSettings.kt ch03.5、ch11、ch19.6
util/ThinkStripper.kt ch03.7、ch16
util/TTSManager.kt(412 行) ch10.6、ch12
util/ModelImporter.kt ch10.3(半成品事故)、ch14.4
util/ModelManager.kt ch11.3(读改写事故)、ch11.4
util/ChatSessionStore.kt ch11.2/11.7
util/ChatExporter.kt ch11.8
res/mipmap-anydpi-v26/ic_launcher.xml ch05.3
res/drawable/ic_launcher_background.xml ch05.3.5
res/values/{strings,colors,themes}.xml ch05.7
res/xml/file_paths.xml ch04.2.3、ch12.7

D.2.2 推理库模块(lib/

文件 被讲的章节
lib/build.gradle.kts ch20.4、ch20.7.1
InferenceEngine.kt(接口 + 状态机) ch01.5.6
internal/InferenceEngineImpl.kt(338 行) ch01.5.6、ch08 全章、ch10.4/10.5、ch13.2、ch19.6
internal/gguf/GgufMetadataReaderImpl.kt(596 行) ch14 全章
gguf/GgufMetadataReader.kt ch14.8
gguf/FileType.kt ch14.5
gguf/GgufMetadata.kt ch14.3
src/main/cpp/ai_chat.cpp(882 行) ch13 全章、ch15 全章、ch16 全章、ch17.4、ch18.3、ch19.6
src/main/cpp/logging.h ch02.7
src/main/cpp/CMakeLists.txt ch13.7、ch20.6

D.2.3 构建与配置

文件 被讲的章节
settings.gradle.kts ch01.5.5
gradle.properties ch02.3.2
local.properties ch02.3.1
gradle/libs.versions.toml ch02.4
keystore.properties(不进版本库) ch21.5
运行命令.txt(发版 runbook) ch21 全章
BUG_AUDIT_2026-09-10.md(审查报告) ch22.5/22.8.6

D.2.4 本书自带

文件 说明 出处
book/code/ch01/count-lines.ps1 统计工程代码行数 ch01.4
book/code/ch03/Playground.kt Kotlin 语法示例 ch03
book/code/ch04/LifecycleDemo.kt 生命周期模拟 ch04.7
book/code/ch05/icon_build.py 生成全套图标 ch05.12
book/code/ch08/FlowCancelSim.kt 取消行为模拟 ch08.9
book/code/ch14/gguf_header_reader.py 解析 GGUF 头 ch14.9
book/code/ch23/mini-* 最小工程骨架 ch23 全章
book/code/verify_citations.py 行号引用复核器 README「行号引用会漂移」

D.3 阅读指南

D.3.1 三条路线

路线 A:完全零基础(推荐这条)

复制代码
附录 A(知识点补课,只读你缺的)
   ↓
ch01(建立全局观,慢读)
   ↓
ch02(只求"跑通构建",别纠结每个报错)
   ↓
ch03(Kotlin 速成,**这章要慢读**)
   ↓
ch04 → ch05 → ch06 → ch07(界面部分)
   ↓
ch08 → ch09 → ch10 → ch11 → ch12(异步与状态部分)
   ↓
ch13 → ch14 → ch15 → ch16(原生与推理)
   ↓
ch17 → ch18 → ch19(推理进阶)
   ↓
ch20 → ch21(构建与发版)
   ↓
ch22(方法论)
   ↓
ch23(动手做最小版)

路线 B:会别的语言,没写过 Android

复制代码
ch01 → ch02 → ch03(快过语法差异)→ ch04 → ch06 → ch09
   → ch13 → ch14 → ch16(先打通"能出字"这条主线)
   → 再回头补 ch07 / ch08 / ch11

路线 C:会 Android,想搞懂端侧推理

复制代码
ch01(只看 1.5 架构 + 1.3 规模)
   → ch13 → ch14 → ch15 → ch16 → ch17 → ch18 → ch19 → ch22
   (前两部分按需查)

D.3.2 每章的"前置知识自检"

读每一章前,自查这两三项。不满足就先补

前置自检
ch01 无(最重要的一章,谁都能读)
ch02 附录 A.2(命令行/路径)
ch03 附录 A.1(编程基本概念)
ch04 ch03(Kotlin 基本语法)
ch05 ch04(知道 Manifest 在哪)
ch06 ch04 + ch05(知道 App 怎么起来、资源怎么引用)
ch07 ch06(状态驱动 UI 的心智模型)
ch08 ch06(知道重组是什么)
ch09 ch08(Flow 与 cancel)
ch10 ch08 + ch09
ch11 ch09(状态容器)
ch12 ch09 + ch10
ch13 ch03(能看懂 Kotlin 函数);附录 A.6(进程/线程)
ch14 ch13;附录 A.3(字节/小端序)
ch15 ch14
ch16 ch15;附录 A.4(UTF-8)
ch17 ch16
ch18 ch16(位置管理)
ch19 ch16(采样在 decode 里)
ch20 ch02 + ch13
ch21 ch20
ch22 ch17 + ch18 + ch08(会用到这三章的事故)
ch23 全书

D.3.3 卡住了怎么办(四层兜底)

复制代码
第 1 层:该章末尾的「常见错误与排查」表
         ↓ 没有?
第 2 层:附录 C(FAQ,35 个常见问题)
         ↓ 没有?
第 3 层:附录 B(术语表,确认你没理解错某个词)
         ↓ 还没有?
第 4 层:ch22 的五步框架,自己排查
         复现 → 隔离变量 → 最小对照 → 修正 → 回归

D.3.4 三条"高效读法"

读法 怎么做
每章至少跑一次"动手验证" 那是"看懂"和"学会"的分界
先画结构图,再读细节 比如读 ch09 先画"状态清单",读 ch16 先画"循环图"
把结论讲给别人听 讲不顺的地方 = 没真懂的地方

D.3.5 三条"无效读法"(请避免)

无效 为什么
只读不动手 读代码能懂"是什么",写代码才知道"为什么"
追求读完而不是读透 每章都有勾选清单------按那个自测,不要按页数
遇到不懂就停下来查 会打断理解主线。标记后继续,读完一节再回来查

D.4 一张全景图:从零到发布

把全书串成一条线(这也是本书的目录结构):

复制代码
【第一部分:起步】ch01--ch03
   ch01 项目全景       ← 知道要做什么、有哪些层、代码量多少
   ch02 环境与构建     ← 能把它编出来
   ch03 Kotlin 速成    ← 能读懂它的语言

【第二部分:应用开发】ch04--ch12
   ch04 应用骨架       ← App 怎么被系统拉起来
   ch05 资源系统       ← 图标/文字/颜色从哪来
   ch06 Compose 入门   ← 状态驱动 UI 的心智模型
   ch07 Compose 实战   ← 组装一个聊天页
   ch08 协程与 Flow    ← 数据怎么流
   ch09 状态容器       ← 状态放哪、怎么管
   ch10 取消与释放     ← 资源怎么收回去
   ch11 持久化         ← 数据怎么存
   ch12 系统能力接入   ← 怎么用系统(TTS/剪贴板/分享/选择器)

【第三部分:原生与推理】ch13--ch19
   ch13 JNI            ← Kotlin 怎么调 C++
   ch14 GGUF           ← 模型文件里有什么
   ch15 加载与上下文   ← 怎么把它装进内存
   ch16 推理主循环     ← 怎么让它说话
   ch17 Chat Template  ← 怎么组织多轮对话
   ch18 KV cache 移窗  ← 上下文满了怎么办
   ch19 采样参数       ← 怎么挑下一个字

【第四部分:工程化与交付】ch20--ch23
   ch20 构建体系       ← 代码怎么变成 APK
   ch21 签名与发版     ← 怎么交付出去
   ch22 诊断方法论     ← 出问题怎么查
   ch23 综合复刻       ← 自己从零做一遍

【附录】
   附录 A 零基础补课     ← 读之前缺什么补什么
   附录 B 术语表         ← 遇到生词查这里
   附录 C 常见问题 FAQ   ← 卡住了先来这里
   附录 D 速查索引       ← 本文件:按主题/按文件定位

这张图的价值

迷路的时候回来看一眼------

知道自己在哪、下一步去哪。


D.5 一句话总结全书

从"点一下图标"到"屏幕上一个字一个字蹦出来",
中间隔着一整套工程:
界面、状态、异步、持久化、JNI、推理、构建、签名。
这本书把这套东西拆开,一块一块讲给你听,并让你亲手拼回去。


相关文档

  • 《00-教学设计与大纲》 ------ 全书的设计说明(每章目标、前置、对应源码)
  • 《README》 ------ 阅读须知、代码验证约定、术语约定、行号复核方法
  • 《附录 A/B/C》 ------ 补课 / 术语 / FAQ
相关推荐
ai2work1 小时前
ch22 诊断方法论:三个真实事故的根因分析
kotlin
Kapaseker2 小时前
你有搞明白 Volatile 什么意思吗?
android·kotlin
alexhilton11 小时前
藏在设备上的秘密,终究藏不住
android·kotlin·android jetpack
ai2work17 小时前
ch15 加载模型与初始化上下文
kotlin
hai_android17 小时前
Kotlin / Android 常用函数使用示例手册
android·java·kotlin
hai_android19 小时前
Android MeasureSpec 详解
android·java·kotlin
ai2work21 小时前
ch11 持久化:DataStore + Gson 多会话
kotlin
JMchen1 天前
实战案例:实现120fps流畅的渐变进度条
android·kotlin·canvas
传奇开心果编程2 天前
【Jetpack Compose基础语法学与练】第8课 rememberSaveable,页面旋转/系统重建保留状态
android·学习·ui·kotlin·android jetpack