Android 无法获取属性';kotlinOutputDir';关于空对象-Kotlin和Spock

Android 无法获取属性';kotlinOutputDir';关于空对象-Kotlin和Spock,android,groovy,kotlin,spock,Android,Groovy,Kotlin,Spock,我正在尝试使用Spock框架测试Kotlin类。 当我的项目中只有Java类时,一切正常。但是在我的项目中添加了版本1.1.51中的kotlin之后,测试停止了,现在我收到了这样的错误: Error:Execution failed for task ':app:compileDebugUnitTestGroovyWithGroovyc'. > Cannot get property 'kotlinOutputDir' on null object 我正在使用Android Studio

我正在尝试使用
Spock框架测试
Kotlin
类。 当我的项目中只有Java类时,一切正常。但是在我的项目中添加了版本
1.1.51
中的kotlin之后,测试停止了,现在我收到了这样的错误:

Error:Execution failed for task ':app:compileDebugUnitTestGroovyWithGroovyc'.
> Cannot get property 'kotlinOutputDir' on null object
我正在使用Android Studio 3.0 Beta 7

这是我的项目和模块
build.gradle
文件:

项目
build.gradle
模块
build.gradle
更新 Groovy Android Gradle插件已经发布了v2.0.0,它与Android Gradle插件3.0.0兼容。编辑根目录
build.gradle

classpath 'org.codehaus.groovy:groovy-android-gradle-plugin:2.0.0'
// Ugly workaround for incompatibility between Groovy Android Gradle Plugin 1.2.0 and Android Gradle Plugin 3.0.0
// Should be fixed with Groovy Android Gradle Plugin 1.3.0. https://github.com/groovy/groovy-android-gradle-plugin/pull/155
task copyFlavorDebugUnitTestKotlinClasses(type: CopyKotlinClasses)
class CopyKotlinClasses extends DefaultTask {

    def kotlinOutputDir = ["$project.rootDir/app/build/tmp/kotlin-classes/flavorDebugUnitTest"]

    @TaskAction
    def doNothing() {
    }
}
最初的答案(不应该使用!),我离开是出于历史目的

原始答案 简单的回答是,这应该很快得到解决,Groovy Android Gradle插件v2.0.0目前正在开发中

较长的答案(即时回报)是,您可以按如下方式解决此问题。请参阅Github上的问题

应将以下内容添加到
app/build.gradle

classpath 'org.codehaus.groovy:groovy-android-gradle-plugin:2.0.0'
// Ugly workaround for incompatibility between Groovy Android Gradle Plugin 1.2.0 and Android Gradle Plugin 3.0.0
// Should be fixed with Groovy Android Gradle Plugin 1.3.0. https://github.com/groovy/groovy-android-gradle-plugin/pull/155
task copyFlavorDebugUnitTestKotlinClasses(type: CopyKotlinClasses)
class CopyKotlinClasses extends DefaultTask {

    def kotlinOutputDir = ["$project.rootDir/app/build/tmp/kotlin-classes/flavorDebugUnitTest"]

    @TaskAction
    def doNothing() {
    }
}

请注意,您必须将“flavor”替换为项目的实际flavor,如果您不使用产品flavor,则必须将其删除。

升级到AS 3.0 stable后,我遇到了同样的问题。你找到解决方案了吗?在试用了新版本3插件后,遇到了同样的问题。我可以确认这似乎已经解决了这个问题(希望插件自己解决这个问题不会太久)。