该资源来自 maxrave-dev/kotlin-footguns 技能集合,名为 kmp-architecture-footguns,专注于 Kotlin Multiplatform 架构与语言层面的常见陷阱。内容源自一个生产级 Kotlin 与 Compose Multiplatform 应用,共提炼出 25 个陷阱,每个陷阱一个独立文件,位于 references/ 目录下,每个文件不超过 150 行。
每个陷阱文件通常包含三部分:可用的工作模式(working pattern)、陷阱的具体表现与失败原因(Traps),以及一个“验证”部分,提供可在用户自己的代码树上运行的命令。
使用方式:根据即将编写的代码或正在排查的症状,在索引中匹配对应条目;每个条目会说明其主题以及何种症状应查阅它。在提出代码或修复方案前,应先用 Read 工具阅读所有可能适用的文件。如果验证命令中引用了源项目的路径,需替换为用户代码树中的等效路径。文件内以反引号标注但未在当前索引列出的陷阱名,可能位于同级领域技能中,可通过 glob ../*/references/<name>.md 打开。
内容涵盖多个方面:模块结构、依赖注入与架构(如将 UI 模块拆分为共享库与各平台启动模块、开源与专有模块对、整洁架构就绪、用例层决策、Hilt 到 Koin 迁移、Koin ViewModel 作用域陷阱、仓库资源流模式、Gradle 设置目录、Git 子模块映射、双供应商包名版本偏差等);Kotlin 与多平台语言陷阱及工具(如纯 KMP 的 Levenshtein 模糊匹配、HTML 实体解码、kotlinx-datetime 辅助工具、位掩码事件包装器、空哨兵实例、@JvmName 消除擦除重载歧义、模型-实体映射扩展层、标记接口与嵌套枚举多态、expect/actual 可组合能力、小型集合工具、身份比较不可变设置、受限标记与 opt-in 区分、字符串资源格式限制、文字感知罗马化管道、组合字符破坏字符字面量等)。
适用场景包括:当 Android Gradle 插件不允许应用模块同时作为多平台目标时;当开源构建仍通过传递路径引入专有构件时;当 ViewModel 解析到错误实例或状态在屏幕间丢失时;当 Gradle 报告项目不存在或项目访问器无法解析时;当共享 UI 代码在某个目标上编译失败时;当字符串匹配返回错误候选时;当实体文本未解码或重复解码时;当时间戳因时区偏移显示错误时;当位运算表达式重复出现时;当空值检查与哨兵检查并存时;当编译器报告平台声明冲突时;当转换代码扩散到数据类或服务客户端时;当新添加的条目类型显示为空白行时;当共享 UI 需要设备能力测量或状态时;当差异比较报告所有项已更改时;当格式说明符原样显示时;当音译结果猜测错误语言时;当带变音符号的字符字面量编译失败时。
限制:资料未提供具体安装命令、代码示例、收费信息或平台支持细节;每个陷阱的完整内容需查阅对应文件。