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并未提及这种向后不兼容的情况,这使我认为这是无意的。
答案 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"
}