Intereting Posts
Возможно ли иметь расширения функций на лямбдах? Пример того, когда мы должны использовать run, let, apply, also и with на Kotlin Android-библиотека не может компилировать kotlin Как получить значение ObservableField в android Единый восклицательный знак в Котлине Объем переменной, определенной для заголовка цикла напишите шестнадцатеричный целочисленный литерал, равный Int.MIN_VALUE в Котлине Как можно использовать UUID в качестве первичного ключа в двух таблицах с помощью Hibernate? Как проверить, отсортирован ли массив строк в алфавитном порядке или нет с помощью Kotlin? Могу ли я преобразовать строку в выражение шаблона или выражение лямбда в kotlin? Kotlin \ Java – Строка типа "$ 1" на номер Kotlin – Возможно ли инициализировать объект-компаньон перед блоком init в классе? Android создает список / объект с информацией, сохраненной из другой активности запустить Android-версию 2.3.3 проект kotlin в android studio 3.0.1 после обновления Нужно ли знать kotlin, чтобы получить сертификацию AAD (Associate Android Developer)?

Не удается получить свойство «kotlinOutputDir» на нулевом объекте – Котлин и Спок

Я пытаюсь проверить классы Kotlin со Spock Framework . Когда в моем проекте были только классы Java, все работало нормально. Но после добавления kotlin в версии 1.1.51 в мой проект, тесты перестали работать, и теперь я получаю такую ​​ошибку:

 Error:Execution failed for task ':app:compileDebugUnitTestGroovyWithGroovyc'. > Cannot get property 'kotlinOutputDir' on null object 

Я использую Android Studio 3.0 Beta 7

Вот мой проект и модуль build.gradle файлы:

Проект build.gradle

 // Top-level build file where you can add configuration options common to all sub-projects/modules. buildscript { ext.kotlin_version = '1.1.51' repositories { google() jcenter() } dependencies { classpath 'com.android.tools.build:gradle:3.0.0-beta7' classpath 'org.codehaus.groovy:groovy-android-gradle-plugin:1.2.0' // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files classpath 'com.google.gms:google-services:3.1.0' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" } } allprojects { repositories { google() jcenter() } } task clean(type: Delete) { delete rootProject.buildDir } 

Модуль build.gradle

 apply plugin: 'com.android.application' apply plugin: 'kotlin-android' apply plugin: 'groovyx.android' android { compileSdkVersion 26 buildToolsVersion "26.0.2" defaultConfig { applicationId "com.redione.debtscalc" minSdkVersion 15 targetSdkVersion 26 versionCode 1 versionName "1.0" testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } } dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) implementation 'com.android.support:appcompat-v7:26.1.0' implementation 'com.android.support.constraint:constraint-layout:1.0.2' implementation 'com.google.firebase:firebase-auth:11.4.2' implementation 'com.google.firebase:firebase-database:11.4.2' implementation "org.jetbrains.kotlin:kotlin-stdlib-jre7:$kotlin_version" testImplementation 'org.mockito:mockito-core:2.10.0' testImplementation 'junit:junit:4.12' androidTestImplementation('com.android.support.test.espresso:espresso-core:3.0.1', { exclude group: 'com.android.support', module: 'support-annotations' }) testImplementation 'org.codehaus.groovy:groovy:2.4.11:grooid' testImplementation('org.spockframework:spock-core:1.1-groovy-2.4') { exclude group: 'org.codehaus.groovy' exclude group: 'junit' } } apply plugin: 'com.google.gms.google-services' repositories { mavenCentral() } 

    Обновить

    В Groovy Android Gradle Plugin выпущен v2.0.0, который совместим с Android Gradle Plugin 3.0.0. Отредактируйте свой root build.gradle :

     classpath 'org.codehaus.groovy:groovy-android-gradle-plugin:2.0.0' 

    Первоначальный ответ (который нельзя использовать!), Я уезжаю в исторических целях.

    Оригинальный ответ

    Короткий ответ: скоро это будет исправлено с помощью Groovy Android Gradle Plugin v2.0.0, который в настоящее время выполняется.

    Более длинный ответ (с немедленной выплатой) заключается в том, что вы можете обходить это следующим образом. См. Мой комментарий по вопросу о Github.

    В app/build.gradle следует добавить app/build.gradle :

     // 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() { } } 

    Обратите внимание, что вы должны заменить «аромат» на фактический вкус (ы) вашего проекта или удалить его, если вы не используете ароматизаторы продуктов.