You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JetBrains向导生成的composeApp/与shared/模块架构差异及职责咨询

Compose Multiplatform项目里composeApp和shared模块的分工说明

核心定位区别

  • composeApp/:专门负责UI界面与用户交互的模块,所有和Compose渲染直接相关的代码都放在这里,是用户能直观接触到的部分。
  • shared/:承载跨平台通用的业务逻辑、数据处理及工具代码,完全不依赖Compose框架,就算后续更换UI框架,这部分代码也能直接复用。

各自该存放的内容

composeApp/

  • commonMain:跨平台通用的Compose组件(比如通用按钮、列表布局)、页面导航逻辑、UI与状态绑定的代码(比如将ViewModel数据渲染成界面)
  • androidMain:Android专属的UI适配(比如Material3主题的Android特有配置、权限申请弹窗)
  • iosMain:iOS专属的UI适配(比如Cupertino风格组件、iOS状态栏适配)
  • 其他平台源集:对应平台的Compose UI定制代码

shared/

  • commonMain:核心业务逻辑(比如登录校验、数据解析)、数据层代码(Repository、数据源封装)、通用工具类(日期处理、字符串工具)、纯逻辑的ViewModel(不带UI绑定的部分)、数据模型(data class)
  • androidMain:Android特有的逻辑实现(比如用Android原生API做本地存储)
  • iosMain:iOS特有的逻辑实现(比如适配iOS的网络配置)

两者的关联

  • composeApp依赖shared:UI层需要调用业务逻辑和数据,所以composeApp的Gradle配置里会引入shared模块。
  • shared不依赖composeApp:业务逻辑层不需要知晓UI的具体实现,保证了逻辑的独立性,就算以后不用Compose,shared的代码依然能正常使用。
  • 交互靠数据模型和状态类:shared层提供状态数据,composeApp监听状态更新界面;用户操作后,UI层通知shared层执行对应的业务逻辑。

内容的提问来源于stack exchange,提问作者Nishant Jalan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 23:11:01