Kotlin Multiplatform 跨平台共享
KMP 让业务逻辑只写一遍、Android 与 iOS 各自保留原生体验,但源集划分、expect/actual 边界与产物对齐都有讲究。本文讲透工程结构与源集层级、expect/actual 机制、共享网络与序列化层、平台差异处理、与 Swift 的互操作、Compose Multiplatform 共享 UI,以及构建产物发布与版本对齐。
category
KMP 让业务逻辑只写一遍、Android 与 iOS 各自保留原生体验,但源集划分、expect/actual 边界与产物对齐都有讲究。本文讲透工程结构与源集层级、expect/actual 机制、共享网络与序列化层、平台差异处理、与 Swift 的互操作、Compose Multiplatform 共享 UI,以及构建产物发布与版本对齐。
R8 与 Baseline Profile 是 release 包性能的两个编译期杠杆:一个把无用代码删掉并内联,一个把启动关键路径提前 AOT 编译。本文讲透 R8 的收缩优化混淆三段流程、keep 规则编写与反射误伤排查、资源收缩、mapping 与崩溃还原、Baseline Profile 的生成集成、Play 云端 profile 分发与 Macrobenchmark 验证。
测试金字塔在 Android 上有自己的形状:JVM 单测跑得快但受限于无 Android 运行时,仪器测试真实但慢且易碎。本文讲透 JUnit 与断言库选型、协程测试调度器、MockK 打桩、Robolectric 本地跑 Android 代码、Espresso 与 IdlingResource、Compose 语义查找与断言、Hilt 测试替换,以及 CI 分片与设备农场。
后台任务要在 Doze、省电模式与厂商保活策略之间可靠执行,靠 Service 或定时器都撑不住。本文讲透 WorkManager 的 Worker 与 CoroutineWorker 写法、约束条件与触发时机、链式与并行任务、唯一工作与替换策略、重试退避、加急工作、前台服务长任务,以及 Doze 下的执行保证与测试调试手段。
Flow 是 Android 上连接数据库、网络与界面的数据管道,但冷热流选错、背压处理不当就会写出丢事件或卡顿的代码。本文讲透冷流与热流的语义差别、StateFlow 与 SharedFlow 的选型依据、常用操作符与背压策略、flatMapLatest 的并发语义、生命周期感知收集、异常重试,以及 Room 与 Retrofit 的集成写法。
单 Activity 架构下页面跳转变成返回栈设计问题。本文讲透 NavHost 与 NavController 的职责划分、Navigation 2.8 的类型安全路由、参数传递与结果回传、嵌套图与底部导航的多返回栈、深链与隐式 Intent 映射、返回栈管理与状态恢复,以及与 ViewModel 作用域和转场动画的集成。
打包上架是每个 Android 项目的最后一公里,签名与合规细节出错就会卡住发布。本文讲透上架与签名打包:密钥库生成与应用签名密钥的分工、分发包格式差异、混淆与映射文件上传、版本号策略与分阶段发布,以及后台的数据安全表单、目标版本适配与持续集成自动发布。文中附打包工具的本地验证流程与上架常见坑清单,帮你顺利过审并稳定迭代。
启动速度直接影响用户留存,而冷启动耗时往往被初始化代码悄悄吃掉。本文聚焦启动加速与性能优化:冷启动全链路拆解、启动库延迟初始化、基准配置文件与宏基准测试的落地写法、代码压缩优化与启动追踪,以及内存泄漏、过度绘制与首帧优化。文中给出可量化的指标与测量命令,帮你把启动耗时压到目标线以内并守住不回归。
模块拆得好不好,直接决定 Android 项目的编译速度与协作效率。本文讲多模块架构与构建优化:接口暴露与实现隐藏的边界、按功能与核心分层、约定插件与构建逻辑独立构建、版本目录统一依赖、配置缓存与构建缓存、注解处理并行,以及新版本构建插件的命名空间迁移与声明式界面编译器插件。文末附依赖约束与循环依赖治理清单,帮你把构建时间压下来。
依赖注入能显著降低大型 Android 项目的耦合度,而 Hilt 把这件事做成了编译期可校验的标准方案。本文用 Hilt 2.52 与 KSP 落地依赖注入:应用与页面入口注解体系、模块与安装组件的绑定方式、组件层级与作用域、限定符与入口点用法,以及同视图模型、后台任务的集成和测试写法。文中附编译期错误解读表,并与手写依赖注入做取舍对比,帮你判断何时该引入框架。
网络层是 Android 应用最脆弱的一环,超时、重试与错误封装稍有疏漏就会引发线上问题。本文用 Retrofit 2.11 与 OkHttp 4.12 搭建可维护的网络层:接口注解与挂起函数设计、转换器工厂在三种序列化方案间的取舍、拦截器与认证器、超时与连接池配置、统一错误封装与退避重试,以及证书固定、模拟服务器测试与混淆保留规则。文末给出网络层常见坑清单与排查思路。
本地数据该怎么存、迁移怎么做,是 Android 项目绕不开的工程问题。本文以 Room 2.7 与 KSP 为主线讲本地持久化:实体与数据访问对象建模、流式响应查询、事务与关系映射、类型转换器、数据库迁移与自动迁移的取舍,以及索引唯一约束、加密与预写日志并发。文中给出与 DataStore 的分工对照表,帮你为不同数据选出可维护的持久化方案。
生命周期错配是 Android 内存泄漏与崩溃的主要成因,视图模型则是官方给出的隔离方案。本文梳理两者的协作关系:页面回调链路、生命周期与观察者、安全收集流的方式、视图模型作用域的自动取消、状态保存句柄与进程死亡恢复,以及声明式界面中视图模型与可保存状态的配合。文末附常见内存泄漏清单与对应的修复手段,帮你写出生命周期安全的代码。
重组性能是 Compose 项目最常见的瓶颈,很多卡顿都源于不必要的重复重组。本文讲清重组的触发条件、稳定性判定规则与稳定注解的语义边界、集合与数据类不稳定造成的多余重组、键与派生状态等优化手段、快照流的用法与组合局部变量的代价,以及如何用布局检查器与组合追踪定位问题,并覆盖新版编译器的强跳过模式。
声明式界面正在取代传统的视图树写法,而 Compose 是 Android 官方给出的答案。本文带你从零上手 Jetpack Compose:可组合函数与内容设置、修饰符链式的顺序语义、常用布局容器、列表的键策略、Material 3 主题与页面骨架,以及状态记忆、预览和与旧视图的互操作方式。配合官方物料清单版本对照表,给出可直接落地的写法与常见坑清单。
协程是 Android 异步编程的事实标准,但结构化并发一旦理解错位,就会写出泄漏、错序与吞异常的代码。本文讲透协程的作用域与作业层级、挂起函数与状态机改写、启动与异步的取舍、异常传播与取消机制,以及冷热流与状态流在页面中的落地方式。文中给出调度器选型表与协程泄漏排查清单,帮你在视图模型作用域里写出可取消、可测试的并发代码。
扩展函数与高阶函数是 Kotlin 最常用也最容易误用的两块能力,写错时既拖慢性能又破坏可读性。本文讲清扩展的静态解析本质、成员优先规则,以及 let、run、with、apply、also 五个作用域函数的差异与选择依据,并覆盖内联函数、具体化类型参数、非内联与交叉内联、惰性序列求值和领域特定语言构建。读完可写出既高效又可读的链式接口,并避开内联与类型擦除的常见陷阱。
空指针异常是 Android 线上崩溃的头号来源,Kotlin 的空安全正是为此设计。本文梳理 Kotlin 2.x 的语言基础与空安全机制:从变量声明与类型推断、可空类型与平台类型的区别,到安全调用、Elvis 运算符与 let 组成的调用链,再到智能转换、密封类穷尽分支、数据类与拷贝,以及同 Java 互操作时的空安全边界。文中给出写法对照表与常见坑清单,帮你把空指针异常挡在编译期。
Kotlin 已成为 Android 官方首选语言,配合 Jetpack Compose、协程与 Hilt 构成了现代 Android 开发的标准组合。本专题覆盖从语言到上架的完整链路:Kotlin 空安全与语言基础、扩展函数与高阶函数、协程与结构化并发、Jetpack Compose 声明式 UI、Compose 状态管理与重组优化、Activity/Fragment 生命周期与 ViewModel、Room 数据持久化、Retrofit 网络层、Hilt 依赖注入、多模块架构与 Gradle 构建优化、启动加速与性能调优,以及 AAB 打包签名与 Google Play 上架流程。后续补充的 6 篇进阶内容进一步覆盖 Compose Navigation 与深链、Kotlin Flow 响应式数据流、WorkManager 后台调度、单元测试与 Espresso/Compose 测试体系、R8 混淆与 Baseline Profile,以及 Kotlin Multiplatform 跨平台共享。