OkHttp 4.0.0是否需要JVM target 1.8?

时间:2019-06-27 09:08:35

标签: android kotlin jvm okhttp

OkHttp 4.0.0是否故意与jvm target 1.6不兼容?从OkHttp 3.12.0升级到4.0.0时,我遇到以下构建失败。

  

无法将使用JVM target 1.8构建的字节码内联到以下字节码中   用JVM target 1.6构建。请指定正确的“ -jvm-target”   选项

在进一步检查中,我发现根本原因是具有静态方法(伴随对象内部的函数)的Interceptor接口。 upgrade guide并未提及这种向后不兼容的情况,这使我认为这是无意的。

3 个答案:

答案 0 :(得分:5)

找到了blog post,并附有解释。从OkHttp 3.13.1开始,需要JVM target 1.8。建议的更改是:

android {
  compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_8
    targetCompatibility JavaVersion.VERSION_1_8
  }
  ...
}

我发现它仍然失败。最后再添加一条指令即可修复该构建。

kotlinOptions {
    jvmTarget = '1.8'
}

答案 1 :(得分:0)

是的,OkHttp 4可在Android 5.0+(API级别21+)和Java 8+上运行。

尝试一下可能会对您有所帮助。

Open the Android Studio Setting
Go to Build, Execution, Deployment > Compiler > Kotlin Compiler
Change the Target JVM version to 1.8
Click Apply

答案 2 :(得分:0)

我发现最简单的解决方案是执行以下操作:

时髦:

android {
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
}

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

科特琳(kts):

android {
    compileOptions {
        sourceCompatibility = JavaVersion.VERSION_1_8
        targetCompatibility = JavaVersion.VERSION_1_8
    }
}

tasks.withType<org.jetbrains.kotlin.gradle.tasks.KotlinCompile> {
    kotlinOptions.jvmTarget = "1.8"
}