Android Studio Artic Fox - Java 和 Kotlin JVM 目标 - 8 对 11
Android Studio Artic Fox - Java and Kotlin JVM Target - 8 vs 11
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
还不存在
所有下一个配置都适用于 Artic Fox:
#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
}
但是我们应该选择什么?
如果您使用的是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 插件会在编译期间自动添加必要的库源。
根据当前文档使用 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 表示 1.8 是 Kotlin 1.5 的默认 jvmTarget。
另请注意,在当前 Android Studio Artic Fox 2021.3.1 补丁 3 中创建新的基于 Kotlin 的项目时,它会创建一个 build.gradle 和 jvmTarget 1.8。
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
还不存在
所有下一个配置都适用于 Artic Fox:
#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
}
但是我们应该选择什么?
如果您使用的是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 插件会在编译期间自动添加必要的库源。
根据当前文档使用 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 表示 1.8 是 Kotlin 1.5 的默认 jvmTarget。
另请注意,在当前 Android Studio Artic Fox 2021.3.1 补丁 3 中创建新的基于 Kotlin 的项目时,它会创建一个 build.gradle 和 jvmTarget 1.8。