Jellyfish版Android Studio中KMP项目Compose Preview不显示
KMP项目Compose Preview无法显示的解决方案
针对你在Android Studio Jellyfish版本中遇到的KMP项目Compose预览不显示问题,以下是具体修复步骤:
1. 调整预览代码的存放位置
Compose Preview是Android专属调试工具,必须将带@Preview注解的函数及对应的PreviewParameterProvider放在androidMain源集下,不能放在commonMain里——Android Studio无法识别commonMain中的预览注解。
你可以把MainMenuPreview和MainMenuParameterProvider剪切到androidMain目录下的任意Kotlin文件中,比如新建一个Preview目录专门存放预览代码。
2. 修正依赖配置
当前依赖存在两处问题,需调整:
compose.components.uiToolingPreview是Android专用依赖,不应放在commonMain中,需移至androidMain- 缺少
ui-tooling核心依赖,这是预览渲染必需的基础组件
修改后的build.gradle配置:
sourceSets { val desktopMain by getting androidMain.dependencies { implementation(libs.compose.ui.tooling.preview) implementation(libs.compose.ui.tooling) // 新增:预览渲染必需依赖 implementation(libs.androidx.activity.compose) implementation(compose.components.uiToolingPreview) // 从commonMain移至此处 } commonMain.dependencies { implementation(compose.runtime) implementation(compose.foundation) implementation(compose.material) implementation(compose.ui) implementation(compose.components.resources) implementation(libs.kotlinx.serialization.json) implementation(libs.navigation.compose) implementation(libs.androidx.lifecycle.viewmodel.compose) } desktopMain.dependencies { implementation(compose.desktop.currentOs) } }
3. 验证资源与预览参数
- 若
stringResource(Res.string.all_purpose)使用的是Compose Multiplatform跨平台资源,确保Android端的资源配置正常(比如Res类在Android端的实现无问题) - 预览参数提供者
MainMenuParameterProvider若和预览函数一起放在androidMain,无需额外修改;若仍放在commonMain,需确保Android端能正确引用MainMenuState类
4. 项目重建与预览面板重置
完成上述修改后:
- 执行
Build -> Clean Project,再执行Build -> Rebuild Project - 关闭预览面板后重新打开,或重启Android Studio
- 确认预览面板右上角选择的是Android设备(而非Desktop)
内容的提问来源于stack exchange,提问作者Vlad Alexeev
相关产品推荐
相关产品推荐

