Compose Compiler требует версии Kotlin с соответствующей совместимостью

e: Для этой версии (1.3.2) компилятора Compose требуется Kotlin версии 1.7.20, но вы, похоже, используете Kotlin версии 1.9.23, совместимость которой неизвестна.

Ошибка довольно понятна. В других проектах совместимость прошла нормально. По какой-то причине, что бы я ни делал в этом проекте, ошибка сохраняется. Нет ссылки на компилятор Compose версии 1.3.2. Только основное приложение использует Compose. Я попробовал очистить/аннулировать данные с тем же результатом.

Это многомодульный проект. Все сценарии сборки Gradle используют одну и ту же версию Kotlin.

build.gradle (проект)

buildscript {
    ext {
        kotlin_version = '1.9.23'
        compose_version = '1.6.5'
        kotlinCompilerExtensionVersion = '1.5.11'
        ...
    }

    dependencies {
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
        ...
    }
}

build.gradle (приложение)

apply plugin: 'kotlin-android'

android {
    ...

    compileOptions {
        sourceCompatibility JavaVersion.VERSION_17
        targetCompatibility JavaVersion.VERSION_17
    }

    kotlinOptions {
        jvmTarget = "17"
    }

    composeOptions {
        kotlinCompilerExtensionVersion kotlinCompilerExtensionVersion
    }

    buildFeatures {
        compose true
    }
}
dependencies {
    implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version"

    // Compose
    implementation "androidx.compose.ui:ui:$compose_version"
    implementation "androidx.compose.ui:ui-tooling-preview:$compose_version"
    debugImplementation "androidx.compose.ui:ui-tooling:$compose_version"

    // somewhere on a google doc it noted to NOT include this. Here just in case.
    // implementation "androidx.compose.material:material:$compose_version"
}

build.gradle (модуль а)

plugins {
    id 'com.android.library'
}
apply plugin: 'kotlin-android'

android {
    ...

    compileOptions {
        sourceCompatibility JavaVersion.VERSION_17
        targetCompatibility JavaVersion.VERSION_17
    }

    kotlinOptions {
        jvmTarget = "17"
    }
}
dependencies {
    implementation 'androidx.core:core-ktx:1.12.0'
}

build.gradle (модуль b)

plugins {
    id 'com.android.library'
}
apply plugin: 'kotlin-android'

android {
    ...

    compileOptions {
        sourceCompatibility JavaVersion.VERSION_17
        targetCompatibility JavaVersion.VERSION_17
    }

    kotlinOptions {
        jvmTarget = "17"
    }
}
dependencies {
    implementation 'androidx.core:core-ktx:1.12.0'
    implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version"
}

Также есть settings.gradle для проверки.

Simon Jacobs 12.04.2024 16:03

@SimonJacobs единственное, что есть в settings.gradle, — это модуль, но я обновлю им исходный пост.

DevinM 12.04.2024 16:08
2
2
297
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

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

Это сработало для меня, попробуйте заменить эту строку

kotlinCompilerExtensionVersion kotlinCompilerExtensionVersion

с:

kotlinCompilerExtensionVersion rootProject.ext.kotlinCompilerExtensionVersion

Когда я создавал пустой проект с вашими примерами, kotlinCompilerExtensionVersion ссылался на ComposeOptions#kotlinCompilerExtensionVersion, который, вероятно, имеет значение по умолчанию 1.3.2, поэтому он устанавливал одно и то же значение для себя, вместо того, чтобы брать значение из свойств ext.

Спасибо! Оно действительно ссылалось на себя.

DevinM 12.04.2024 16:11

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

Похожие вопросы

Рукоять с КСП вместо капта
Отношения с объектным полем: автоматическое обновление/удаление toMany при обновлении/удалении объекта
Jetpack Compose создает динамическую строку и столбец на основе длины заголовка
Я столкнулся с проблемой: один из объектов HashMaps не сохраняется в базе данных Firebase. Один из методов put объектов HashMap не сохраняется
Как я могу получить текущую продолжительность из медиаплеера для отображения на индикаторе выполнения песни?
Реагировать на собственный файл blob из данных API, мне нужно сохранить его в zip-файл, как это сделать в ios
Сканер BLE в службе переднего плана не возвращает результаты сканирования, если он инициализирован из BOOT_COMPLETED
Java.lang.IllegalArgumentException: CreationExtras должно иметь значение `SAVED_STATE_REGISTRY_OWNER_KEY`
Нижняя панель скрыта за значками системной навигации при включении Edge to Edge в Compose
Как запустить процесс проверки в приложении — использовать текущий контекст действия или создать новое действие?