
Android开发学习链路和教程规划教程定位这是一套重新规划的 Android 系统教程不再按“API 列表”平铺而是按 Android 的真实运行链路来讲Linux Kernel - init - Zygote - SystemServer - Framework 服务 - 应用进程 - 四大组件 - UI 渲染 - Jetpack 架构 - 工程化上线每个知识点都必须同时讲清楚四件事底层原理它为什么存在系统为什么这样设计不这样设计会有什么问题。源码链路从哪个类、哪个方法、哪个对象开始读关键对象之间如何协作。使用方法日常开发怎么写常见场景怎么选边界情况怎么处理。工程治理性能、稳定性、兼容性、测试、排查和原理核验。全链路总图Linux Kernel进程/线程/调度/内存/驱动init解析 rc / 启动系统守护进程Zygote预加载类和资源 / fork 应用进程SystemServer启动 AMS/WMS/PMS/IMS 等系统服务Binder跨进程调用系统服务ActivityThread应用主线程入口四大组件Activity / Service / Receiver / ProviderWindow 与 ViewRootImpl页面、输入、绘制入口View / Compose上层 UI 开发Jetpack 架构Lifecycle/ViewModel/Room/WorkManager业务工程模块化/网络/缓存/测试/性能/发布第一阶段Android 底层运行环境第1章 Android 全局架构与源码阅读方法Android 为什么不是普通 Java 程序应用沙箱、进程隔离、系统服务、Binder、生命周期托管。Android 分层App、Framework、Native Libraries、HAL、Kernel。AOSP 源码目录frameworks/base、system/core、art、packages/apps、external、hardware。如何读源码先读调用链再读对象职责最后读异常分支。工具准备Android Studio、AOSP 在线源码、jadx、adb、dumpsys、logcat、Perfetto。第2章 Linux Kernel、进程、线程与 Android 沙箱Linux 在 Android 中负责什么进程调度、线程、内存、文件系统、驱动、网络。UID/GID 与应用沙箱为什么每个 App 默认不能互相访问私有目录。进程和线程应用进程、system_server、binder 线程池、RenderThread。SELinux、权限边界和系统安全模型。从ps、top、dumpsys meminfo看 Android 进程状态。第3章 Binder IPC 底层原理为什么 Android 需要 Binder跨进程调用系统服务替代普通函数调用。Binder 四个角色Client、Server、ServiceManager、Binder Driver。Proxy/Stub、IBinder、Parcel、transact/onTransact 的协作。AIDL 的生成代码如何映射到底层 Binder 调用。Binder 线程池、同步/异步调用、oneway、死亡通知、事务大小限制。实战写一个 AIDL 服务再用 dumpsys 和日志观察调用过程。第4章 init、Zygote 与应用进程创建开机后第一个用户态进程 init 做了什么。init.rc 如何启动 zygote、servicemanager、surfaceflinger 等进程。Zygote 为什么要预加载类和资源为什么 App 进程要 fork 出来。app_process、ZygoteInit、ZygoteServer、RuntimeInit的调用关系。应用进程 fork 后如何进入ActivityThread.main()。第5章 SystemServer 与核心系统服务SystemServer 为什么是 Android Framework 的核心进程。AMS/ATMS管理进程、Activity、Service、Broadcast。WMS管理窗口、Display、焦点、窗口层级。PMS解析 APK、安装应用、管理权限、查询组件信息。IMS输入事件分发前的系统入口。SurfaceFlinger最终合成显示画面。用dumpsys activity/window/package/input观察系统服务状态。第6章 应用进程启动与主线程模型ActivityThread.main()为什么是应用进程主入口。主线程 Looper 是如何创建的。ActivityThread、H、Instrumentation、LoadedApk、ContextImpl分别负责什么。bindApplication如何创建 Application、安装 Provider、调用Application.onCreate()。为什么 Android 组件必须由系统调度而不是普通 new 对象就能正常工作。第二阶段项目、构建、安装与运行时第7章 Android 项目结构与 Gradle 构建app/module/src/main/res/manifest/java/kotlin 的职责。Gradle、AGP、Kotlin 插件、settings.gradle、build.gradle 的关系。build types、product flavors、variant、source sets。依赖管理implementation、api、compileOnly、kapt/ksp。Debug/Release 构建差异、签名、混淆、资源压缩。第8章 Manifest、组件注册与 PMS 解析Manifest 为什么是 Android 应用的系统声明文件。Activity、Service、Receiver、Provider 如何被 PMS 解析成系统记录。intent-filter、exported、permission、process、taskAffinity 的含义。Android 12 以后 exported 的强制要求。为什么未注册的 Activity 不能被系统正常启动。第9章 APK/AAB、安装、签名与包管理APK 内部结构classes.dex、resources.arsc、AndroidManifest.xml、lib、assets、res。AAB、Split APK、ABI、density、language split。v1/v2/v3/v4 签名差异。PMS 安装 APK 时做了什么扫描、解析、权限、dex 优化、数据目录。adb install、pm list packages、pm path、dumpsys package。第10章 Resource 资源系统源码链路aapt2 如何把 XML、图片、values 编译进 resources.arsc。R 文件为什么只是资源 ID不是资源本体。AssetManager、Resources、ResourcesImpl如何加载资源。qualifier 匹配规则语言、屏幕宽度、夜间模式、density。资源冲突、库资源合并、主题属性解析。第11章 Dex、ClassLoader 与 ART 运行时Java/Kotlin 代码如何变成 dex。Dalvik 与 ART 的区别解释执行、JIT、AOT、Profile Guided Optimization。PathClassLoader、DexClassLoader、BootClassLoader。MultiDex 的原因、加载时机、常见坑。类加载对插件化、热修复、反射、启动速度的影响。第12章 调试基础adb、logcat、dumpsys、Profileradb 常用命令安装、启动、清数据、抓日志、截屏、录屏。logcat 日志分级、tag 设计、线上日志收敛。dumpsys 如何定位 Activity 栈、窗口、内存、包信息。Android Studio Profiler 看 CPU、内存、网络、能耗。Perfetto/Systrace 的基本读法。第三阶段四大组件与应用通信第13章 Context、Intent 与组件调度基础Context 到底是什么ContextImpl、Activity、Application 的区别。Application Context 与 Activity Context 什么时候能替代什么时候不能。Intent 显式/隐式跳转、Action、Category、Data、Extras、Flags。系统如何根据 Intent 找到目标组件。Intent 传大对象、序列化、Parcelable、Bundle 限制和 TransactionTooLargeException。第14章 Activity 一为什么 Activity 不能直接 newActivity 是页面类也是系统组件不是普通对象。直接Activity()得到的对象缺少什么Context、Window、token、Instrumentation、mMainThread、Application。系统启动 Activity 的链路Launcher/App - ATMS/AMS - Zygote/App Process - ActivityThread - Instrumentation - Activity。ActivityThread.performLaunchActivity()如何通过 ClassLoader 反射创建 Activity。attach()如何把 Activity 绑定到 ContextImpl、PhoneWindow、token、WindowManager。实战对比直接 new Activity 为什么findViewById、startActivity、资源访问、生命周期都不可靠。第15章 Activity 二生命周期源码与状态保存onCreate/onStart/onResume/onPause/onStop/onDestroy/onRestart的调用时机。生命周期不是开发者主动调而是系统根据 ActivityRecord、生命周期事务调度。ClientTransaction、LaunchActivityItem、ResumeActivityItem、PauseActivityItem的作用。横竖屏切换、语言切换、深色模式导致重建的原因。onSaveInstanceState、ViewModel、SavedStateHandle 的分工。前后台切换、锁屏、权限弹窗、透明 Activity、多窗口对生命周期的影响。第16章 Activity 三启动模式、任务栈与返回栈Task、Back Stack、ActivityRecord、taskAffinity 的关系。standard、singleTop、singleTask、singleInstance、singleInstancePerTask 的差异。Intent flagsNEW_TASK、CLEAR_TOP、SINGLE_TOP、CLEAR_TASK、REORDER_TO_FRONT。浏览器、通知、登录页、首页、详情页、扫码页的启动模式选择。Deep Link、App Link、从外部拉起 App 的任务栈问题。用adb shell dumpsys activity activities分析真实栈结构。第17章 Activity 四setContentView 底层源码链路Activity.setContentView()为什么不是简单把 XML 塞进屏幕。Activity - PhoneWindow - DecorView - ContentParent 的层级。LayoutInflater.inflate()如何把 XML 标签变成 View 对象。AppCompatActivity 如何通过 delegate 接管主题、Toolbar、兼容逻辑。View 什么时候真正 attach 到 Window为什么 setContentView 后还没完成测量。ViewRootImpl、requestLayout、performTraversals 与第一次绘制。实战自定义 View、动态添加 View、Fragment View、ComposeView 与 setContentView 的关系。第18章 Activity 五页面跳转、结果返回和场景设计startActivity、startActivityForResult、Activity Result API 的演进。传参设计Intent Extras、Parcelable、导航参数、共享 ViewModel。权限申请、拍照、相册、文件选择、系统设置页跳转。防重复跳转、页面防抖、异常恢复。页面状态与业务状态的分离。第19章 Service 一后台任务和服务生命周期Service 为什么也不能普通 new 后直接用。startService、bindService、foregroundService 的底层差异。onCreate/onStartCommand/onBind/onUnbind/onDestroy调用链。START_STICKY/START_NOT_STICKY/START_REDELIVER_INTENT的选择。Android 8 后台服务限制、前台服务通知、类型声明。音乐播放、定位、下载、蓝牙连接等场景如何选服务方案。第20章 Service 二绑定服务、AIDL 与跨进程服务Binder、本地绑定、跨进程绑定的差别。ServiceConnection、onServiceConnected/onServiceDisconnected。Messenger、AIDL、Binder Pool 的使用场景。服务进程死亡、DeathRecipient、重连策略。多客户端并发调用、线程安全和权限控制。第21章 BroadcastReceiver 广播机制静态注册和动态注册的区别。普通广播、有序广播、粘性广播的历史和限制。系统广播为什么越来越受限制耗电、隐私、后台唤醒。Receiver 的创建和onReceive()调用链。onReceive()为什么不能做耗时任务goAsync 怎么用。开机广播、网络变化、电量、通知点击、应用内事件的正确替代方案。第22章 ContentProvider 数据共享机制Provider 为什么通常在 Application.onCreate 前初始化。Uri、Authority、Path、MIME Type 的设计。query/insert/update/delete/openFile 的实现方式。ContentResolver 如何跨进程访问 Provider。FileProvider、MediaStore、DocumentsProvider 的真实场景。Provider 权限、exported、grantUriPermission、临时授权。数据库升级、游标关闭、主线程访问和安全问题。第23章 PendingIntent、权限与组件安全PendingIntent 为什么是“延迟执行的身份令牌”。Notification、AlarmManager、Widget、快捷方式中的 PendingIntent。mutable/immutable 的安全差异。普通权限、危险权限、签名权限、自定义权限。exported 组件暴露风险、Intent 劫持、Provider 泄露。第四阶段UI 系统、窗口、输入与渲染第24章 Window、DecorView 与 ViewRootImplActivity、Window、DecorView、ViewRootImpl 的关系。WindowManager.addView 背后如何与 WMS 通信。token 为什么重要为什么没有 token 不能随便加系统窗口。Dialog、PopupWindow、Toast、悬浮窗的窗口类型差异。窗口焦点、软键盘、状态栏、导航栏、Insets。第25章 View 树、测量、布局、绘制View/ViewGroup 的职责。measure、layout、draw 三阶段。MeasureSpec 的 EXACTLY、AT_MOST、UNSPECIFIED。invalidate、requestLayout、postInvalidate 的区别。自定义 View、自定义 ViewGroup 的正确写法。ConstraintLayout、LinearLayout、FrameLayout 的性能和场景。第26章 事件分发与手势冲突输入事件从硬件到 AppInputReader、InputDispatcher、ViewRootImpl。dispatchTouchEvent、onInterceptTouchEvent、onTouchEvent。点击、长按、滑动、双击、多指触控。RecyclerView 嵌套滑动、ViewPager 冲突、父子 View 抢事件。GestureDetector、VelocityTracker、NestedScrolling。第27章 RecyclerView 深入Adapter、ViewHolder、LayoutManager、ItemAnimator、ItemDecoration。RecyclerView 缓存层级attached scrap、cached views、RecycledViewPool。DiffUtil、ListAdapter、分页加载、局部刷新。嵌套列表、复杂 item、多类型布局。卡顿来源频繁 notifyDataSetChanged、图片加载、布局过深。第28章 动画、Choreographer 与渲染性能ObjectAnimator、ValueAnimator、ViewPropertyAnimator。Transition、MotionLayout、属性动画与补间动画差异。Choreographer、VSync、16.6ms 帧预算。RenderThread、硬件加速、DisplayList。掉帧、过度绘制、布局抖动、动画泄漏。第29章 适配屏幕、字体、深色模式与无障碍dp、sp、px、density、scaledDensity。多分辨率、多窗口、折叠屏、横屏、平板适配。夜间模式、动态颜色、主题切换。字体放大、TalkBack、可点击区域、语义描述。RTL、国际化、日期货币格式。第五阶段Jetpack Compose 现代 UI第30章 Compose 基础与声明式 UI 思维声明式 UI 和命令式 View 的根本区别。Composable 函数、Composition、Recomposition。Slot Table、Recomposer、Snapshot State 的基本概念。remember、mutableStateOf、derivedStateOf。为什么不能把副作用直接写进 Composable。第31章 Compose 布局、状态与副作用Row、Column、Box、LazyColumn、ConstraintLayout Compose。Modifier 的链式顺序为什么会影响结果。State Hoisting、单向数据流。LaunchedEffect、DisposableEffect、SideEffect、rememberCoroutineScope。表单、列表、分页、弹窗、权限请求的 Compose 写法。第32章 Compose 与 View 混合开发ComposeView、AndroidView、Fragment 中使用 Compose。旧项目渐进迁移策略。Compose Navigation 与传统 Navigation 对比。Compose 性能稳定性、重组范围、key、Lazy 列表。UI 测试、预览、主题和 Design System。第六阶段线程、异步、后台任务第33章 Handler、Looper、MessageQueueAndroid 主线程为什么必须有 Looper。Handler 发送消息、MessageQueue 取消息、Looper 循环分发。同步屏障、IdleHandler、postDelayed。Handler 内存泄漏的原因和修复。HandlerThread、IntentService 的历史定位。第34章 Kotlin 协程在 Android 中的正确使用suspend、CoroutineScope、Job、Dispatcher。Main、IO、Default 的选择。lifecycleScope、viewModelScope、repeatOnLifecycle。取消、异常、超时、SupervisorJob。网络、数据库、文件 IO、并发请求的协程写法。第35章 Flow、StateFlow 与页面状态Flow 冷流、SharedFlow 热流、StateFlow 状态流。UI State、Event、Effect 的区分。collectAsStateWithLifecycle、repeatOnLifecycle。combine、flatMapLatest、debounce、retry。登录、搜索、分页、表单校验的状态建模。第36章 WorkManager、JobScheduler 与后台限制Android 后台限制演进Doze、App Standby、后台服务限制。WorkManager 和 JobScheduler 的关系。OneTimeWork、PeriodicWork、Constraints、Retry、Backoff。上传日志、同步数据、定时清理、失败重试。AlarmManager、Exact Alarm、前台服务的边界。第七阶段数据存储、网络与离线能力第37章 文件、SharedPreferences、DataStoreinternal/external/cache/files 目录区别。SharedPreferences 同步/异步提交和卡顿问题。Preferences DataStore、Proto DataStore。加密存储、密钥管理、敏感信息保护。配置、草稿、用户设置、缓存文件的选型。第38章 SQLite 与 RoomSQLite 表、索引、事务、游标。Room Entity、Dao、Database、Migration。Flow 查询、分页、事务、关系映射。数据库升级、降级、预置数据库。SQL 性能分析、索引设计和 N1 查询。第39章 网络OkHttp、Retrofit 与协议基础HTTP、HTTPS、DNS、TLS、缓存、连接池。OkHttp Interceptor、Dispatcher、Call、ConnectionPool。Retrofit 动态代理、Converter、CallAdapter。统一错误模型、超时、重试、取消。上传下载、断点续传、弱网、证书锁定。第40章 缓存、离线优先与数据一致性Repository 如何协调网络、本地数据库和内存缓存。Cache Aside、Single Source of Truth、离线优先。列表分页、本地搜索、增量同步。冲突解决、版本号、时间戳、乐观更新。弱网和无网场景下的用户体验设计。第41章 现代存储MediaStore、SAF 与权限变化Android 10 分区存储。图片、视频、音频、下载文件的访问方式。Storage Access Framework、DocumentFile。拍照、相册、文件选择、分享文件。READ_MEDIA_IMAGES/VIDEO/AUDIO、照片选择器。第八阶段架构设计与工程组织第42章 MVVM、MVI 与 Clean Architecture为什么 Activity/Fragment 不应该堆业务逻辑。UI、ViewModel、UseCase、Repository、DataSource 的职责。MVVM 和 MVI 的差异。UI State、User Intent、Reducer、Side Effect。什么时候需要 Clean Architecture什么时候会过度设计。第43章 Lifecycle、ViewModel、SavedStateLifecycleOwner、LifecycleObserver、DefaultLifecycleObserver。ViewModel 为什么能跨配置变化保留。SavedStateHandle 与进程死亡恢复。Fragment Result API、Navigation SavedStateHandle。生命周期感知的数据收集和资源释放。第44章 依赖注入Hilt 与对象生命周期为什么需要依赖注入。Component、Module、Provides、Binds、Scope。SingletonComponent、ActivityRetainedComponent、ViewModelComponent。Repository、UseCase、Network、Database 的注入方式。测试替换依赖、Mock/Fake/Test Module。第45章 模块化、组件化与大型项目结构app、feature、core、data、domain、design-system 的拆分。api/implementation 依赖边界。业务模块之间如何解耦。路由、资源命名、公共能力沉淀。构建速度、增量编译、模块依赖治理。第46章 登录、列表、详情、编辑等业务场景架构登录态、Token 刷新、游客模式。列表分页、下拉刷新、筛选排序。详情页缓存、收藏、评论、分享。表单编辑、草稿保存、校验、提交失败恢复。权限、相机、相册、地图、支付等能力接入方式。第九阶段性能优化、稳定性与线上治理第47章 启动优化冷启动、温启动、热启动。Application 初始化治理。ContentProvider 自动初始化问题。SplashScreen、首帧、懒加载、异步初始化。Baseline Profile、Profile Guided Optimization。用 Perfetto、Startup Timing、Macrobenchmark 定位启动耗时。第48章 UI 卡顿与渲染优化掉帧、Jank、VSync、主线程阻塞。布局层级、过度绘制、频繁 requestLayout。RecyclerView 卡顿、图片加载、DiffUtil。Compose 重组性能问题。FrameMetricsAggregator、JankStats、Perfetto 分析。第49章 内存、泄漏与 OOMJava 堆、Native 内存、Bitmap、线程栈。GC 触发、内存抖动、对象分配。Activity/Fragment/Context 泄漏。Handler、单例、静态引用、回调、协程泄漏。LeakCanary、Memory Profiler、hprof 分析。第50章 ANR、Crash 与稳定性治理ANR 类型Input、Broadcast、Service、ContentProvider。主线程阻塞、锁等待、Binder 阻塞、IO 阻塞。tombstone、traces.txt、ApplicationExitInfo。Crash 捕获、符号表、混淆映射、Native Crash。线上问题分级、告警、回滚、灰度发布。第51章 电量、网络与后台治理WakeLock、Job、Alarm、前台服务对电量的影响。网络请求合并、缓存、压缩、弱网策略。定位、蓝牙、传感器的生命周期管理。Doze、App Standby、后台限制适配。线上耗电问题如何定位。第52章 可观测性日志、埋点、监控日志分层开发日志、业务日志、异常日志。TraceId、用户路径、关键链路埋点。Crash、ANR、性能、网络质量监控。隐私合规和日志脱敏。线上排查 SOP。第十阶段测试、安全、发布与兼容第53章 单元测试、UI 测试与可测试架构JUnit、MockK/Mockito、Truth/AssertJ。Repository、UseCase、ViewModel 测试。Coroutine Test、Flow Test。Robolectric 与 Instrumentation Test。Espresso、Compose UI Test、截图测试。第54章 安全、隐私与权限合规Android 权限模型演进。敏感权限申请时机和用户解释。数据加密、证书校验、防抓包基础。WebView 安全、Deep Link 安全、导出组件安全。隐私政策、数据最小化、合规检查。第55章 多版本、多设备与兼容性minSdk、targetSdk、compileSdk 的区别。运行时版本判断和兼容库。厂商 ROM 差异、后台限制、权限弹窗。平板、折叠屏、车机、电视、ChromeOS。崩溃兼容、灰度实验、远程配置。第56章 发布、混淆、加固与 Play/国内渠道Release 构建、签名、版本号、mapping 文件。R8/ProGuard 规则、keep、反射和序列化。资源压缩、ABI 选择、包体积优化。多渠道包、灰度、热更新边界。应用商店审核、崩溃回滚、发布检查清单。第十一阶段源码专题路线第57章 源码专题一App 启动完整链路Launcher 点击图标到 Activity 显示的完整流程。Launcher - ATMS - Zygote - ActivityThread - Instrumentation - Activity。关键源码ActivityTaskManagerService、ActivityStarter、ZygoteProcess、ActivityThread、Instrumentation。冷启动耗时点和优化点如何对应到源码。第58章 源码专题二Activity 启动与生命周期事务ActivityRecord、Task、RootWindowContainer。ClientTransaction 如何把生命周期事件发到应用进程。performLaunchActivity、handleResumeActivity、performPauseActivity。生命周期和任务栈如何互相影响。dumpsys activity 与源码对象如何对应。第59章 源码专题三setContentView 到第一帧绘制Activity.setContentView - PhoneWindow.setContentView。DecorView、ContentParent、LayoutInflater。ViewRootImpl.setView、requestLayout、performTraversals。measure/layout/draw、Choreographer、Surface、RenderThread。为什么 onCreate 里拿不到最终宽高为什么 post 后可以。第60章 源码专题四Binder 调用系统服务getSystemService 如何拿到系统服务代理。ServiceManager、BinderProxy、transact。AMS/WMS/PMS 调用链示例。Binder 阻塞如何导致 ANR。AIDL 实战和 Framework 源码对照。第61章 源码专题五输入事件与触摸分发InputReader、InputDispatcher、WindowInputEventReceiver。ViewRootImpl 接收输入事件。DecorView、Activity、ViewGroup、View 的分发顺序。事件冲突和底层分发模型如何对应。第62章 源码专题六PackageManager 与应用安装APK 扫描、解析 Manifest、生成 PackageSetting。权限授予、签名校验、组件注册。安装、更新、卸载、数据保留。为什么修改 Manifest 会影响系统调度。第十二阶段综合项目实战第63章 综合项目需求2026 Android 学习管理 App登录、课程列表、章节详情、学习进度、笔记、收藏、离线缓存。网络 Room DataStore WorkManager Compose/View 混合。业务状态、页面状态、缓存状态、同步状态拆分。性能、异常、日志、测试从第一天纳入。第64章 综合项目工程搭建多模块结构app、core、feature-course、feature-note、data、domain、design-system。Gradle 版本管理、依赖约束、buildSrc/version catalog。Hilt、Navigation、Room、Retrofit、DataStore 基础集成。Debug/Release 配置、日志和环境切换。第65章 综合项目核心业务实现登录态和 Token 刷新。课程列表分页、详情缓存、笔记编辑。Repository 离线优先实现。UI State、Error State、Loading、Empty 的统一设计。Compose/View 两套页面实现对比。第66章 综合项目性能、测试与上线启动优化、列表优化、内存泄漏排查。单元测试、UI 测试、数据库迁移测试。Crash/ANR/性能日志接入。Release 构建、混淆、渠道、版本发布。项目复盘从源码原理回到业务工程。最终学习结果完成这套教程后学习者应该不仅会写 Android 页面还能说清楚一个 App 是怎么从系统底层启动起来的。Activity 为什么不能 new生命周期为什么由系统调用。setContentView 背后如何创建 DecorView、解析 XML、走到 ViewRootImpl。四大组件如何被 Manifest、PMS、AMS/ATMS 调度。View 和 Compose 分别如何完成 UI 构建和刷新。Handler、Looper、协程、WorkManager 各自解决什么异步问题。网络、数据库、缓存如何组成可维护的数据层。性能、ANR、Crash、内存泄漏该如何从源码和工具两条线定位。最终如何搭建一个能上线、能排查、能扩展的 Android 项目。