Получение ошибки: не удалось выполнить задачу «: StockRepublicCore: kaptGenerateStubsDebugKotlin». после обновления до Android Studio Flamingo | 2022.2.1

После обновления версии Android Studio до 2022.2.1 я начал получать эту ошибку при попытке скомпилировать проект:

Не удалось выполнить задачу ': StockRepublicCore: kaptGenerateStubsDebugKotlin'.
Задача compileDebugJavaWithJavac (текущая цель – 1.8) и задача kaptGenerateStubsDebugKotlin (текущая цель – 17) должна быть установлена ​​для совместимости цели jvm с одной и той же версией Java. Рассмотрите возможность использования цепочки инструментов JVM: https://kotl.in/gradle/jvm/toolchain

Мой градиент: скомпилировать SDK 33

defaultConfig {
    minSdk 23
    targetSdk 33

    testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"

    javaCompileOptions {
        annotationProcessorOptions {
            arguments = ["room.incremental": "true"]
        }
    }

    consumerProguardFiles 'proguard-rules.pro'
}

compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_8
    targetCompatibility JavaVersion.VERSION_1_8
}
kotlinOptions {
    jvmTarget = "1.8"
}

Как исправить эту ошибку?

Android-студия Фламинго | 2022.2.1
Сборка № AI-222.4459.24.2221.9862592 от 31.03.2023
Версия среды выполнения: 17.0.6+0-17.0.6b802.4-9586694 aarch64
ВМ: 64-разрядная виртуальная машина сервера OpenJDK от JetBrains s.r.o.
макОС 13.3.1

1
0
224
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Если вы обновили Gradle до версии 8.0.0 вместе с обновлением Flamingo 2022.2.1, то вам необходимо обновить JDK до версии 17

Таблицу совместимости можно посмотреть здесь.

Следующий код в build.gradle на уровне приложения должен решить вашу проблему:

android {
    ...
    compileOptions {
        sourceCompatibilityJavaVersion.VERSION_17
        targetCompatibilityJavaVersion.VERSION_17
    }
    kotlinOptions {
        jvmTarget = '17'
    }
    ...
}

Спасибо за ответ. Мой минимальный SDK - 23. Как вы думаете, установка Java 17 в compileOptions и kotlinOptions все еще будет в порядке?

Marat 17.04.2023 12:18

Я проверил, и он хорошо работает с API 23.

Victor Sklyarov 17.04.2023 12:36

Кажется, работает! Вы знаете, что делают compileOptions и kotlinOptions? Я думал, что установка версии Java на 17 приведет к тому, что код не будет работать на старых версиях Android, на которых работает более старая версия Java. Может, это не то?

Marat 17.04.2023 13:06
CompileOptions — параметры компиляции Java, а kotlinOptions — параметры компиляции Kotlin. sourceCompatibility — это уровень языка исходного кода Java, targetCompatibility и jvmTarget — целевая версия сгенерированного байт-кода JVM. Код будет работать в более старых версиях API благодаря дешугарингу. Вероятно, обновление версии Java было сделано для увеличения производительности сборки с помощью Gradle.
Victor Sklyarov 17.04.2023 14:12

Другие вопросы по теме