如何在Compose Multiplatform项目中引入Java代码
在Compose Multiplatform项目中引入Java代码的正确方式
一、Android目标中添加Java代码
Android原生支持Java与Kotlin混合开发,按以下步骤操作即可:
- 手动在项目目录创建
src/androidMain/java文件夹,按Java包结构(对应你的indi.midreamsheep.app.tre命名空间)存放Java类。 - 若IDE未自动识别Java目录,在
android块中补充配置:
android { // ... 保留原有配置 sourceSets["main"].java.srcDirs("src/androidMain/java") }
- 在Kotlin代码中直接导入Java类调用即可,例如:
import indi.midreamsheep.app.tre.YourJavaClass
二、Desktop(JVM)目标中添加Java代码
KMP的JVM目标默认只识别Kotlin源码,需手动配置Gradle识别Java目录:
- 创建
src/desktopMain/java文件夹,按包结构存放Java类。 - 在
kotlin块的sourceSets中,给desktopMain添加Java源码目录配置:
kotlin { // ... 保留原有配置 sourceSets { val desktopMain by getting { java.srcDirs("src/desktopMain/java") dependencies { implementation(compose.desktop.currentOs) } } // ... 保留其他sourceSet配置 } }
三、解决setDir未解析问题
Copilot给出的setDir属于Groovy DSL写法,而你的项目使用Kotlin DSL,需替换为srcDirs(支持单个或多个路径集合)。
修改后的核心build.gradle.kts片段
整合上述配置的关键代码如下:
plugins { alias(libs.plugins.kotlinMultiplatform) alias(libs.plugins.androidApplication) alias(libs.plugins.jetbrainsCompose) } kotlin { androidTarget { compilations.all { kotlinOptions { jvmTarget = "1.8" } } } jvm("desktop") sourceSets { val desktopMain by getting { java.srcDirs("src/desktopMain/java") dependencies { implementation(compose.desktop.currentOs) } } androidMain.dependencies { implementation(libs.compose.ui.tooling.preview) implementation(libs.androidx.activity.compose) } commonMain.dependencies { implementation(compose.runtime) implementation(compose.foundation) implementation(compose.material) implementation(compose.ui) @OptIn(ExperimentalComposeLibrary::class) implementation(compose.components.resources) } } } android { namespace = "indi.midreamsheep.app.tre" compileSdk = libs.versions.android.compileSdk.get().toInt() sourceSets["main"].manifest.srcFile("src/androidMain/AndroidManifest.xml") sourceSets["main"].res.srcDirs("src/androidMain/res") sourceSets["main"].resources.srcDirs("src/commonMain/resources") sourceSets["main"].java.srcDirs("src/androidMain/java") // ... 保留原有defaultConfig、packaging等配置 } // ... 保留原有compose.desktop配置
验证配置
点击IDE的「Sync Project with Gradle Files」按钮,Gradle会自动识别Java目录,此时可在对应目录编写Java代码,并在Kotlin代码中正常调用。
内容的提问来源于stack exchange,提问作者microDreamSheep
相关产品推荐
相关产品推荐

