12

Android Studio 内置 JRE 是 11 版本。Artic Fox 允许使用 Java 11 编译项目:

compileOptions {
    sourceCompatibility JavaVersion.VERSION_11
    targetCompatibility JavaVersion.VERSION_11
}

但我们也有 Kotlin 选项

kotlinOptions {
    jvmTarget = JavaVersion.VERSION_1_8
}

我们现在应该设置什么 JVM 目标版本?

jvmTarget = JavaVersion.VERSION_1_8或者jvmTarget = JavaVersion.VERSION_11

Kotlin 库使用 JDK 8:

implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version"

kotlin-stdlib-jdk11还不存在

所有下一个配置都适用于北极狐:

#1

compileOptions {
    sourceCompatibility JavaVersion.VERSION_11
    targetCompatibility JavaVersion.VERSION_11
}
kotlinOptions {
    jvmTarget = JavaVersion.VERSION_11
}

#2

compileOptions {
    sourceCompatibility JavaVersion.VERSION_11
    targetCompatibility JavaVersion.VERSION_11
}
kotlinOptions {
    jvmTarget = JavaVersion.VERSION_1_8
}

#3

compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_8
    targetCompatibility JavaVersion.VERSION_1_8
}
kotlinOptions {
    jvmTarget = JavaVersion.VERSION_1_8
}

但是我们应该选择什么呢?

4

2 回答 2

9

如果您使用的是 Android Studio Artic Fox 2020.3.1,则首选是首选选项。

compileOptions {
    sourceCompatibility JavaVersion.VERSION_11
    targetCompatibility JavaVersion.VERSION_11
}

kotlinOptions {
    jvmTarget = JavaVersion.VERSION_11
}

现在来到 kotlin-stdlib,可以使用 jdk8 版本。

 implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version"

kotlin-stdlib-jdk8 库与 JDK 11 SDK 完全兼容。

或者,对于仅 Kotlin 的项目,您也可以忽略 kotlin-stdlib-jdk8 依赖项,因为 Gradle 插件会在编译期间自动添加必要的库源。

于 2021-09-03T03:10:15.990 回答
1

根据当前文档使用 java 8:

compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_8
    targetCompatibility JavaVersion.VERSION_1_8
}
kotlinOptions {
    jvmTarget = JavaVersion.VERSION_1_8
}

Android 开发者文档(Java8 支持)是沉默的。关于 jvmTarget 和 Java 11。

Kotlin Docs说 1.8 是 Kotlin 1.5 的默认 jvmTarget。

另请注意,在当前的 Android Studio Artic Fox 2021.3.1 Patch 3 中创建新的基于 Kotlin 的项目时,它会使用 jvmTarget 1.8 创建一个 build.gradle。

于 2021-10-30T21:56:29.100 回答