Kotlin Multiplatform gradle Java 版本问题

问题描述 投票:0回答:1

我想编译一个适用于 iOS 和 Android 的库,如下所示的 build.gradle 文件。它适用于 iOS(如果我删除 androidTarget(+ com.android.library 插件),但是我无法为 Android 编译它。如果我尝试使用“设置”>“构建...”>“构建工具”> Gradle JVM 17我面临这个错误:

FAILURE:构建失败并出现异常。

  • 出了什么问题: 无法确定任务“:compileDebugKotlinAndroid”的依赖项。 > 未知的 Kotlin JVM 目标:21

如果我尝试使用“设置”>“构建...”>“构建工具”>“Gradle JVM 15”,它将不再与此错误同步 gradle

Gradle JVM 版本不兼容。该项目配置为使用支持版本 15 的旧版 Gradle JVM,但当前的 AGP 需要支持版本 17 的 Gradle JVM。

我尝试了几种不同的组合,但到目前为止还没有成功,非常感谢任何帮助。

plugins {
    kotlin("multiplatform") version "1.9.10"
    id("com.android.library") version "8.1.2"
}

group = "com.example"
version = "1.0"

repositories {
    google()
    mavenCentral()
    gradlePluginPortal()
}

kotlin {

    androidTarget {
        publishLibraryVariants("release")
    }

   iosX64 {
        binaries {
            framework {
                baseName = "test"
                linkerOpts += "-ld64"
            }
        }
    }

    iosArm64 {
        binaries {
            framework {
                baseName = "test"
                linkerOpts += "-ld64"
            }
        }
    }

    val hostOs = System.getProperty("os.name")
    val isArm64 = System.getProperty("os.arch") == "aarch64"
    val isMingwX64 = hostOs.startsWith("Windows")
    val nativeTarget = when {
        hostOs == "Mac OS X" && isArm64 -> macosArm64("native")
        hostOs == "Mac OS X" && !isArm64 -> macosX64("native")
        hostOs == "Linux" && isArm64 -> linuxArm64("native")
        hostOs == "Linux" && !isArm64 -> linuxX64("native")
        isMingwX64 -> mingwX64("native")
        else -> throw GradleException("Host OS is not supported in Kotlin/Native.")
    }

    sourceSets {
        val commonMain by getting
    }
}

android {
    namespace = "com.example.myapp"
    compileSdk = 33
}
java android kotlin intellij-idea
1个回答
0
投票

在我的例子中,我添加了这段代码,jdk 21安装在我的机器中,但项目在我的项目中使用java版本18,所以我设置了jvmToolChain = 18。问题已解决。

(如果您使用的是 kts,则将其添加到 buildSrc gradle 文件中)

科特林{ jvm工具链(18) }

如果是这种情况,希望这会对一些人有所帮助。

© www.soinside.com 2019 - 2024. All rights reserved.