在build.gradle文件中的compileKotlin块中出现错误"Could not find method compileKotlin() for arguments [...]"。

3 浏览
0 Comments

在build.gradle文件中的compileKotlin块中出现错误"Could not find method compileKotlin() for arguments [...]"。

我正在尝试配置Kotlin与Java 1.8在我的Android项目中一起工作。我尝试在我的build.gradle文件的底部添加compileKotlin块,但这样做会导致错误。\n发生的错误如下所示:\n错误:(38, 0)找不到方法compileKotlin(),参数为[build_dvcqiof5pov8xt8flfud06cm3$_run_closure4@66047120],类型为org.gradle.api.Project的项目“:core”上。\n如果没有这个块,项目正常运行。我漏掉了什么?这是完整的build.gradle文件,非常基本:\n应用插件:\'com.android.library\'\n应用插件:\'kotlin-android\'\nandroid {\n compileSdkVersion 25\n buildToolsVersion \'25.0.2\'\n defaultConfig {\n minSdkVersion 24\n targetSdkVersion 25\n versionCode 1\n versionName \'1.0.0\'\n testInstrumentationRunner \'android.support.test.runner.AndroidJUnitRunner\'\n }\n buildTypes {\n release {\n minifyEnabled false\n proguardFiles getDefaultProguardFile(\'proguard-android.txt\'), \'proguard-rules.pro\'\n }\n }\n}\n依赖项 {\n compile \'com.android.support:appcompat-v7:25.3.1\'\n compile \"org.jetbrains.kotlin:kotlin-stdlib-jre7:$kotlin_version\"\n compile \'com.google.android.support:wearable:2.0.2\'\n}\n存储库 {\n mavenCentral()\n}\ncompileKotlin {\n sourceCompatibility = JavaVersion.VERSION_1_8\n targetCompatibility = JavaVersion.VERSION_1_8\n kotlinOptions {\n jvmTarget = \'1.8\'\n apiVersion = \'1.1\'\n languageVersion = \'1.1\'\n }\n}

0
0 Comments

这个问题的出现的原因是在build.gradle文件中的compileKotlin块中找不到compileKotlin()方法。问题的解决方法是在Java特定模块的build.gradle中添加apply plugin: 'kotlin-android'。

以下是解决方法的完整内容:

不是直接回答这个问题,但当我遇到相同的compileKotlin块在build.gradle文件中出现“Could not find method compileKotlin() for arguments […]”错误时,谷歌引导我找到了这个答案。

在我的情况下,问题是由于将一个只包含Java代码的代码模块导入到我的项目中引起的。解决方法是确保在Java特定模块的build.gradle中添加以下内容:

apply plugin: 'kotlin-android'

这样就可以解决这个问题了。

0
0 Comments

问题原因:在build.gradle文件中的compileKotlin块引发错误"Could not find method compileKotlin() for arguments [...]",这是因为在Android插件中没有找到compileKotlin()方法。

解决方法:根据kotlin-android文档,可以在android部分添加kotlinOptions扩展来设置所有kotlin任务的选项。下面是修复问题的代码示例:

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

在上述代码中,我们在android部分添加了kotlinOptions扩展,并设置了jvmTarget为'1.8',noStdlib为true。

这是解决该问题的最佳答案!

解决该问题后,再次运行相应的编译任务即可。

0
0 Comments

compileKotlin block in build.gradle文件中的错误"Could not find method compileKotlin() for arguments [...]"的出现原因是项目中没有compileKotlin任务,这在Android项目中是正常的。

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

最有可能的是,您想要配置项目中的所有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'

}

}

我以为compileKotlin会应用于所有构建变体,但显然不是这样。谢谢!

在哪个文件和位置需要放置这些代码?

您可以将它们放在项目模块的build.gradle文件中。例如,在一个名为app的单一模块的Android项目中,将它们放在app/build.gradle中。只需将它们追加到文件末尾,以确保在到达时已经应用了Kotlin插件。

应该使用tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile::class)

这是我的做法:tasks.withType<org.jetbrains.kotlin.gradle.tasks.KotlinCompile> { ... }

使用kotlin-android的解决方案:stackoverflow.com/a/55418991/9636

如果在Android之外的gradle中使用,可能会出现以下错误:Caused by: groovy.lang.MissingPropertyException: Could not get unknown property 'org' for extension 'android' of type com.android.build.gradle.LibraryExtension. 或 Caused by: groovy.lang.MissingPropertyException: Could not get unknown property 'org' for project ':XXX' of type org.gradle.api.Project.

我遇到了以下错误:Caused by: org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed:

0