Используйте разные версии Kotlin в одном проектеAndroid

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Используйте разные версии Kotlin в одном проекте

Сообщение Anonymous »

У меня есть многомодульный проект Android (с различными типами модулей: библиотеки, приложения и простая Java). В скрипте root Gradle я включил плагины Android Application и Android Library в моем классе (с суффиксом «применить: false»), так как они мне нужны (например, они используются ktlint и другими плагинами). Теперь у меня есть модуль приложений, которому нужен Kotlin 2.1.0, в то время как остальная часть проекта нуждается и использует Kotlin 1.9.20. Если я применяю плагин Kotlin 2.1.0 в скрипте модуля (в его плагинах блоке), я получаю ошибку, что плагин не может быть разрешен, потому что он уже находится в классе с другой версией (1.9.20):
Error resolving plugin [id: 'org.jetbrains.kotlin.android', version: '2.1.0']

> The request for this plugin could not be satisfied because the plugin is already on the classpath with a different version (1.9.20).

Есть ли способ получить эту работу (без отсоединения модуля от проекта/репозитория)?
У меня есть эти параметры.pluginManagement {
repositories {
mavenLocal()
google()
mavenCentral()
gradlePluginPortal()
}
}

dependencyResolutionManagement {
repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
repositories {
mavenLocal()
google()
mavenCentral()
}
}

rootProject.name = "my-project"

include(":sdk")
include(":api")
include(":apps:test")
include(":shared")
// rest of the modules and script
< /code>
and this build.gradle.kts (in root): < /p>
import org.jlleitschuh.gradle.ktlint.KtlintExtension
import org.jlleitschuh.gradle.ktlint.reporter.ReporterType

plugins {
alias(libs.plugins.kotlin.android) apply false
alias(libs.plugins.kotlin.jvm) apply false
alias(libs.plugins.kotlin.serialization) apply false
alias(libs.plugins.kotlin.parcelize) apply false
alias(libs.plugins.android.library) apply false
alias(libs.plugins.android.application) apply false
alias(libs.plugins.android.dynamic.feature) apply false
alias(libs.plugins.test.android.junit5) apply false
alias(libs.plugins.apiChecker) apply false
alias(libs.plugins.detekt)
alias(libs.plugins.ktlint)
alias(libs.plugins.jacoco)
}

apply(from = "jacoco.gradle.kts")

jacoco {
toolVersion = libs.versions.jacoco.get()
}

detekt {
// detekt config
}
< /code>
Вот сценарий сборки модуля приложения: < /p>
plugins {
alias(libs.plugins.android.application)
alias(libs.plugins.kotlin.android.v2)
alias(libs.plugins.kotlin.serialization)
alias(libs.plugins.kotlin.parcelize)
}
< /code>
Соответствующая часть моего каталога моей версии: < /p>
kotlin = "1.9.20"
kotlin-v2 = "2.1.0"

[plugins]
kotlin-android = { id = "org.jetbrains.kotlin.android", version.ref = "kotlin" }
kotlin-android = { id = "org.jetbrains.kotlin.android", version.ref = "kotlin-v2" }


Подробнее здесь: https://stackoverflow.com/questions/795 ... le-project
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»