【问题标题】:How do I set the jvm target for android studio using gradle and kotlin?如何使用 gradle 和 kotlin 为 android studio 设置 jvm 目标?
【发布时间】:2019-07-25 02:34:12
【问题描述】:

尝试编译用 kotlin 编写的单元测试时出现以下错误。

Task :app:compileDebugUnitTestKotlin FAILED ...Cannot inline bytecode built with JVM target 1.7 into bytecode that is being built with JVM target 1.6. Please specify proper '-jvm-target' option

我已尝试在我的应用程序build.gradle 中为我的android 配置设置源兼容性:

compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_8
    targetCompatibility JavaVersion.VERSION_1_8
}

以及在根build.gradle中配置所有kotlin编译任务:

tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile).all {
    kotlinOptions {
        jvmTarget = '1.8'
    }
}

【问题讨论】:

标签: android gradle kotlin


【解决方案1】:

这是一个临时的 Android Studio 错误。 我需要将这些行添加到应用程序的 gradle 文件中:

android {
    ...
    compileOptions {
        sourceCompatibility = 1.8
        targetCompatibility = 1.8
    }
    kotlinOptions {
        jvmTarget = "1.8"
    }
    ...
}

【讨论】:

  • 看起来这个“临时”错误在九个月后仍然存在。
  • 我只需要添加 kotlinOptions 部分就可以在我的项目中解决它。
【解决方案2】:

1)在 Mac 上

Android Studio -> Preferences -> Kotlin 编译器 -> 更改 目标 JVM 版本

2) 电脑

Android Studio -> 文件 -> 设置 -> Kotlin编译器 -> 更改目标JVM版本

【讨论】:

  • 设置为1.8,不应影响gradle 构建。
  • 为什么它不会影响 Gradle 构建?那它的目的是什么?另外...我尝试了此设置,但对此错误没有影响。我找不到指定 1.6 的位置。
  • 这是一个很好的建议,但它不适用于 Android Studio 4.0.1。警报持续显示为红色代码。当我在 build.gradle(app) 中指定时,最终停止显示那些红色代码建议。
【解决方案3】:

default target JVM bytecode 是 1.6。 但这可以通过更改 build.gradle(:app) 来设置:

android{
...
    kotlinOptions {
        jvmTarget = 1.8
    }
}

看来,Android Studio Kotlin 编译器目标 JVM 选项不起作用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-13
    • 2020-01-11
    • 1970-01-01
    • 2023-01-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多