Sublime Text 无法用于 Kotlin Multiplatform(KMP)项目开发——它不解析 androidTarget()、iosX64() 等多平台 DSL,不识别 commonMain/iosMain 源集结构,不支持 expect/actual 绑定导航,无法触发 Gradle 任务,也无类型检查与跨平台符号索引能力。

Sublime Text 不能用于 Kotlin Multiplatform(KMP)项目开发,它不解析 build.gradle.kts 中的 androidTarget()、iosX64() 等多平台 DSL 块,也无法识别 commonMain、iosMain 等源集结构。
Sublime Text 无法加载 KMP 源集和依赖
你打开一个 KMP 项目的 shared/src/commonMain/kotlin/ApiService.kt,Sublime 只会把它当作普通 Kotlin 文件高亮——它不知道这个文件属于哪个源集,也不理解 expect 和 actual 的绑定关系。更关键的是,它完全不读取 Gradle 构建配置,所以:
-
commonMain里引用的kotlinx-coroutines-core不会提供跳转或补全 -
iosMain中的HttpClient(Ios)会被标为“未解析类”,哪怕实际编译完全通过 - 修改
sourceSets后,Sublime 不会刷新源路径映射,也不会重新索引符号
Gradle 任务在 Sublime 中不可触发
KMP 开发强依赖命令行驱动的 Gradle 任务,而 Sublime 没有集成能力。你无法在编辑器内直接运行:
-
./gradlew shared:compileKotlinIosX64—— iOS 真机编译必须手动敲命令 -
./gradlew androidApp:assembleDebug—— Android 构建不会响应快捷键或右键菜单 -
./gradlew :shared:generateDummyFramework—— iOS Framework 生成必须走终端,且需 Xcode 工具链支持
即使装了 Sublime 的 Shell Commands 插件,也仅能执行固定脚本,无法动态识别当前模块、平台目标或构建变体。
没有类型检查与跨平台导航支持
当你在 commonMain 写 expect fun getStorage(): Storage,Sublime 不知道它对应 androidMain 的 actual 实现,也无法:
- 按住 Ctrl 点击跳转到
androidMain或iosMain中的actual函数 - 在重命名
expect函数时同步更新所有actual声明 - 检测
iosMain中漏写某个actual导致的编译错误(如Unresolved reference: getStorage)
这些是 KMP 开发中最常踩的坑,而 Sublime 完全不参与构建流程,也就无法提前暴露问题。
KMP 项目本质是 Gradle 驱动的多源集、多目标平台构建系统,IDE 必须深度介入构建生命周期才能提供有效支持。如果你坚持用 Sublime 编辑 KMP 代码,它只能当一个带语法高亮的纯文本编辑器——所有验证、补全、跳转、编译都得切到终端,且每次改完 build.gradle.kts 都要手动 reload 项目结构。


















