OkHttp 4.0.0 требует JVM target 1.8? - PullRequest
5 голосов
/ 27 июня 2019

Является ли OkHttp 4.0.0 преднамеренно несовместимым с jvm target 1.6?При обновлении с OkHttp 3.12.0 до 4.0.0 я сталкиваюсь со следующей ошибкой сборки:

Невозможно встроить байт-код, созданный с целью 1.8 JVM, в байт-код, который создается с целью 1.6 JVM.Пожалуйста, укажите правильную опцию -jvm-target

. При дальнейшей проверке я обнаружил, что основной причиной является интерфейс Interceptor, имеющий статический метод (функция внутри объекта-компаньона).В руководстве по обновлению не упоминается об этой обратной несовместимости, которая заставляет меня думать, что она непреднамеренная.

Ответы [ 3 ]

5 голосов
/ 27 июня 2019

Нашел сообщение в блоге с некоторыми пояснениями. Начиная с OkHttp 3.13.1 требуется JVM target 1.8. Предлагаемое изменение:

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

Я обнаружил, что это все еще не удается. Добавление еще одной инструкции окончательно исправляет сборку.

kotlinOptions {
    jvmTarget = '1.8'
}
0 голосов
/ 28 июня 2019

Я нашел самое простое решение для этого:

Groovy:

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'
}

Kotlin (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"
}
0 голосов
/ 27 июня 2019

Да, 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
...