100% Kotlin:基于 KMP + Compose Multiplatform 的全栈架构实战(Clean Architecture + MVI)

前言

随着 Kotlin Multiplatform (KMP) 进入稳定期,Compose Multiplatform 的跨端能力也日益成熟。我们是否真的能用一套代码,搞定 Android、iOS、Web、Desktop 甚至后端?

答案是肯定的。

本文分享一个开源项目 KMP-Clean-MVI ,它演示了如何使用纯 Kotlin 构建一个包含移动端、网页、桌面端和后端服务的全栈系统,并深度集成 Clean Architecture 与 MVI 模式。


🚀 项目亮点

该项目实现了真正的"一码多端"与"全栈共享":

  • 全平台覆盖:Android, iOS, Desktop, Web (Wasm/JS), Server。
  • UI 共享 :基于 Compose Multiplatform 实现像素级一致的跨端 UI。
  • 全栈逻辑复用 :/core 模块中的业务逻辑与模型同时供前端各端与 Ktor Server 后端使用。
  • 现代架构 :严格遵循 Clean Architecture 分层,并结合 MVI (Model-View-Intent) 实现响应式状态管理。

🛠 技术栈

  • 语言:100% Kotlin
  • 跨端 UI:Compose Multiplatform
  • 后端框架:Ktor Server
  • 网络请求:Ktor Client
  • 架构驱动:Kotlin Coroutines + Flow

📸 运行效果

项目在各端表现高度一致,从移动端到桌面端,再到现代化的 Wasm 网页端,均能完美运行。

Android iOS
Desktop Web (Wasm)

🏗 核心架构设计

为了保证代码的可维护性,项目采用了经典的分层设计:

1. Core 模块 (Domain Layer)

这是纯 Kotlin 逻辑层。包含了所有的领域模型 (Entities) 和业务校验规则。

  • 后端复用:Ktor Server 直接引用该模块,实现前后端数据模型的"绝对同步"。

2. Shared 模块 (Presentation & UI)

基于 Compose Multiplatform。

  • MVI 模式 :通过 Intent 驱动状态更新,ViewState 统一管理 UI。这种单向数据流极大降低了跨端 UI 调试的复杂性。

3. Platform 模块

针对不同平台(Android, iOS, Web, Desktop)的极简入口封装。


📂 项目结构

  • /core: 核心逻辑与通用数据模型。
  • /server: 基于 Ktor 的后端服务。
  • /app/shared: 共享的 UI 与 ViewModel 逻辑。
  • /app/androidApp / iosApp / webApp / desktopApp: 各平台启动入口。

🏃 如何快速运行?

1. 启动后端 (Server)

后端默认运行在 http://localhost:8081

2. 启动前端

  • Android : 直接在 Android Studio 中运行 androidApp 配置。
  • Desktop : 执行 ./gradlew :app:desktopApp:run
  • Web (Wasm) : 执行 ./gradlew :app:webApp:wasmJsBrowserDevelopmentRun
  • iOS : 在 Xcode 中打开 app/iosApp/iosApp.xcodeproj 运行。

结语

Kotlin Multiplatform 不再仅仅是一个工具,它正演变成一种全新的开发范式。通过 KMP-Clean-MVI,我们可以看到"全栈 Kotlin"不仅可行,而且非常优雅。

如果你正在寻找一个现代化的跨端开发模版,或者想学习如何在 KMP 中应用 Clean Architecture,欢迎点个 Star!

GitHub 传送门 :github.com/yangcyzhang...


欢迎在评论区交流你对 KMP 全栈开发的看法!

相关推荐
超级架构师2 分钟前
让 Fortran 模型自己调用 Agent:原生 Fortran 2008 实现深度剖析
人工智能·python·架构·机器人·开源·fortran
暴走约伯18 分钟前
【VFX工具链源码拆解 01】总体架构:大型项目特效流程的程序化落地
开发语言·经验分享·3d·unity·架构·游戏引擎
Decay__7 小时前
05_MySQL 常用 SQL 大全 —— 诊断、管理、优化辅助 SQL 与三大系统库速查
运维·数据库·sql·mysql·架构
代码山河9 小时前
Python就业方向全解析:后端、爬虫、数据分析、AI你选哪个?
python·学习·架构·教程·面向对象·项目
驰骋工作流10 小时前
流程时效考核的表结构:从待办时限到 WF_CH 考核结果驰骋BPM驰骋低代码低代码工作流引擎
android·低代码·rxjava
微订校园外卖平台10 小时前
校园外卖平台选模板还是定制:架构、数据流与验收清单
大数据·架构·外卖系统·本地生活·微订
传奇开心果编程11 小时前
【Flutter踩坑排雷】第7课:巨型 build 函数坑|全部 UI 写在同一个 build,维护难、隐性异常
android·flutter·ios·移动开发·跨平台·dart·声明式ui
ZhengEnCi12 小时前
用 AI 写代码为什么拼到最后还是拼人:算力瓶颈与领域专家提示词的本质差异
算法·架构
Decay__12 小时前
04_MySQL DBA 日常运维手册 —— 会话管理、锁与阻塞、事务监控、慢查询与日志巡检
运维·数据库·sql·mysql·架构
方白羽15 小时前
Android 双开环境底层剖析与风控检测落地
android·安全·app