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

能否创建含androidMain中Composable的KMP库?构建报错求助

在KMP库的androidMain中使用Composable组件的解决方案

完全可以在Kotlin Multiplatform Library的androidMain源码目录中包含Composable组件,你遇到的报错是由Gradle配置中的语法错误和依赖配置问题导致的,以下是具体修复步骤:

1. 修复语法错误

iOS目标配置的forEach循环中箭头符号写错,这是触发报错的核心原因之一:

// 错误写法
listOf(
    iosX64(),
    iosArm64(),
    iosSimulatorArm64()
).forEach { iosTarget -
    iosTarget.binaries.framework {
        baseName = "feature_dashboardKit"
        isStatic = true
    }
}

// 正确写法
listOf(
    iosX64(),
    iosArm64(),
    iosSimulatorArm64()
).forEach { iosTarget ->
    iosTarget.binaries.framework {
        baseName = "feature_dashboardKit"
        isStatic = true
    }
}

2. 修正Compose依赖配置

Compose Compiler的依赖无需在androidMain和androidDeviceTest中单独声明,composeCompiler插件会自动处理,移除以下两行:

// androidMain中移除
// implementation(libs.compose.compiler)

// androidDeviceTest中移除
// implementation(libs.compose.compiler)

同时确保libs.versions.toml中正确定义了Compose相关依赖别名,示例如下:

[versions]
composeBom = "2024.06.00"
composeUi = "1.6.8"
composeMaterial3 = "1.2.1"
navigationCompose = "2.7.7"

[libraries]
compose-bom = { module = "androidx.compose:compose-bom", version.ref = "composeBom" }
compose-ui = { module = "androidx.compose.ui:ui", version.ref = "composeUi" }
compose-ui-tooling = { module = "androidx.compose.ui:ui-tooling", version.ref = "composeUi" }
compose-ui-tooling-preview = { module = "androidx.compose.ui:ui-tooling-preview", version.ref = "composeUi" }
compose-material3 = { module = "androidx.compose.material3:material3", version.ref = "composeMaterial3" }
compose-runtime = { module = "androidx.compose.runtime:runtime", version.ref = "composeUi" }
compose-navigation = { module = "androidx.navigation:navigation-compose", version.ref = "navigationCompose" }

3. 优化插件配置

调整插件顺序并替换兼容性不佳的插件:

plugins {
    alias(libs.plugins.kotlinMultiplatform)
    alias(libs.plugins.androidLibrary) // 替换androidKotlinMultiplatformLibrary为传统androidLibrary插件
    alias(libs.plugins.composeCompiler)
    alias(libs.plugins.kotlinx.serialization)
}

4. 验证配置

同步Gradle后,在androidMain中创建测试Composable组件:

@Composable
fun DashboardScreen() {
    Text(text = "KMP Android Composable 测试")
}

完成以上修改后即可正常在androidMain中使用Composable组件。

内容的提问来源于stack exchange,提问作者Thomas Cirksena

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 00:39:55