Android Studio Arctic Fox - Java 和 Kotlin JVM 目标 - 8 vs 11

19

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_8jvmTarget = JavaVersion.VERSION_11

Kotlin库使用JDK 8:

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

kotlin-stdlib-jdk11 还不存在

所有下一个配置都可以在Artic Fox中工作:

#1

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

但是我们应该选择什么?


https://developer.android.com/studio/releases/gradle-plugin?hl=nl#java-11 - y4n9b0
2个回答

18

如果您正在使用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插件会在编译期间自动添加必要的库源。


10
当你说"首选方案"时,能否详细说明原因以及任何支持该观点的来源? - Chris

3
根据当前的文档,使用Java 8:
compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_8
    targetCompatibility JavaVersion.VERSION_1_8
}
kotlinOptions {
    jvmTarget = JavaVersion.VERSION_1_8
}
Android Developer docs (Java8 Support) 对于 jvmTarget 和 Java 11 方面保持沉默。 Kotlin Docs 表示从 Kotlin 1.5 开始,1.8 是默认的 jvmTarget。
此外,请注意,在当前的 Android Studio Artic Fox 2021.3.1 Patch 3 中创建基于 Kotlin 的新项目时,它会创建一个具有 jvmTarget 1.8 的 build.gradle。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接