在 build.gradle 文件中出现了“无法为参数[ ... ]找到方法 developeKotlin()”的错误

我正在尝试将 Kotlin 配置为在我的 Android 项目中使用 Java 1.8。我已经尝试在 build.gradle文件的底部添加 compileKotlin块,但是如果这样做会得到一个错误。

发生的错误如下:

错误: (38,0)无法为参数找到方法 buileKotlin () [ build _ dvcqiof5pov8xt8flfud06cm3 $_ run _ closure4@66047120] “ : core”类型 org.gradle.api. Project。

这个项目在没有这个代码块的情况下运行得很好。我遗漏了什么? 这是完整的 build.gradle文件,它是非常基本的东西:

apply plugin: 'com.android.library'
apply plugin: 'kotlin-android'




android {
compileSdkVersion 25
buildToolsVersion '25.0.2'




defaultConfig {
minSdkVersion 24
targetSdkVersion 25
versionCode 1
versionName '1.0.0'


testInstrumentationRunner 'android.support.test.runner.AndroidJUnitRunner'


}


buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}


dependencies {
compile 'com.android.support:appcompat-v7:25.3.1'
compile "org.jetbrains.kotlin:kotlin-stdlib-jre7:$kotlin_version"
compile 'com.google.android.support:wearable:2.0.2'
}


repositories {
mavenCentral()
}


compileKotlin {
sourceCompatibility = JavaVersion.VERSION_1_8
targetCompatibility = JavaVersion.VERSION_1_8


kotlinOptions {
jvmTarget = '1.8'
apiVersion = '1.1'
languageVersion = '1.1'
}
}
37228 次浏览

您得到的错误意味着项目中没有 compileKotlin任务,这是 Android 项目所期望的。

Android 项目中的 Kotlin 编译任务名称包含 构建变体名称(这些名称由构建类型、产品风格和其他设置组合而成,看起来像 debugreleaseUnitTest——任务分别是 compileDebugKotlincompileReleaseUnitTestKotlin)。没有 compileKotlin任务,它通常是为在普通 Java + Kotlin 项目中设置的 main源代码创建的。

最有可能的情况是,您希望在项目中配置 所有 Kotlin 编译任务,为此,您可以应用以下代码块:

tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile).all {
sourceCompatibility = JavaVersion.VERSION_1_8
targetCompatibility = JavaVersion.VERSION_1_8


kotlinOptions {
jvmTarget = '1.8'
apiVersion = '1.1'
languageVersion = '1.1'
}
}

来自 Kotlin-android 文档:

Android 插件还在 Android 部分添加了 KotlinOptions扩展,以便为所有 kotlin 任务设置选项:

android {
kotlinOptions {
jvmTarget = '1.8'
noStdlib = true
}
}

这并不是对这个问题的直接回答,但是当我遇到同样的 compileKotlin block in build.gradle file throws error “Could not find method compileKotlin() for arguments […]”错误时,Google 引导我找到了这个答案。

在我的例子中,问题是由于向我的项目导入了一个只包含 Java 代码的代码模块而引起的。修复的目的是确保 Java 特定模块的 build.gradle中包含以下内容:

apply plugin: 'kotlin-android'

在一些项目中,我使用了 刷新等级依赖关系并解决了这个问题:

右键单击项目名称并选择 刷新等级依赖关系

enter image description here