1

我正在开发一个 kotlin 多平台项目,它有一堆模块。

我写了一个扩展函数,打算在每个模块中使用。扩展函数扩展了KotlinMultiplatformExtension类的功能。现在该代码在每个模块的build.gradle.kts文件中重复。所以我认为将代码移动到buildSrc moudle 并在任何地方重用会很棒。

问题是buildSrc模块内部KotlinMultiplatformExtension没有解决。

KotlinMultiplatformExtension 未解决

我的buildSrc/build.gradle.kts

plugins {
    `kotlin-dsl`
}
repositories {
    jcenter()
}

如果我右键单击KotlinMultiplatformExtensionsomeModule /build.gradle.kts

它需要我:

在此处输入图像描述

所以我猜想在buildSrc/build.gradle.kts中添加一个依赖项应该会有所帮助:

dependencies {
    implementation("org.jetbrains.kotlin:kotlin-gradle-plugin:1.4.10")
}

但是添加该结果会导致错误:

* Exception is:
java.lang.NoClassDefFoundError: com/android/build/gradle/BaseExtension
    at org.jetbrains.kotlin.gradle.plugin.AbstractAndroidProjectHandler.configureTarget(KotlinPlugin.kt:765)
    at org.jetbrains.kotlin.gradle.plugin.KotlinAndroidPlugin$Companion.applyToTarget(KotlinPlugin.kt:727)
    at org.jetbrains.kotlin.gradle.plugin.KotlinAndroidPlugin.apply(KotlinPlugin.kt:689)
    at org.jetbrains.kotlin.gradle.plugin.KotlinAndroidPlugin.apply(KotlinPlugin.kt:678)
    at org.jetbrains.kotlin.gradle.plugin.KotlinBasePluginWrapper.apply(KotlinPluginWrapper.kt:102)

有什么想法KotlinMultiplatformExtension可以在buildSrc中使用吗?

4

1 回答 1

2

原来改变

implementation("org.jetbrains.kotlin:kotlin-gradle-plugin:1.4.10")

进入

compileOnly("org.jetbrains.kotlin:kotlin-gradle-plugin:1.4.10")

解决异常问题 ( java.lang.NoClassDefFoundError: com/android/build/gradle/BaseExtension)

KotlinMultiplatformExtensionbuildSrc的源文件中提供。

在这里找到的解决方案: https ://github.com/gradle/gradle/issues/9209

于 2021-02-02T09:54:17.343 回答