CompileKotlin block in build.gradle file throws error "Не удалось найти метод compileKotlin() для аргументов [...]"
Я пытаюсь настроить Kotlin для работы с Java 1.8 в моем проекте Android. Я попытался добавить блок compileKotlin
в нижней части моего файла build.gradle
, но я получаю сообщение об ошибке, если я это сделаю.
Произошла следующая ошибка:
Ошибка: (38, 0) Не удалось найти метод compileKotlin() для аргументов [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'
}
}
Ответы
Ответ 1
Ошибка, которую вы получаете, означает, что в проекте нет задачи compileKotlin
, и это ожидалось для проектов Android.
Имена задач компиляции Kotlin в проектах Android содержат вариант сборки (они объединены из типа сборки, вкуса продукта и других настроек и выглядят например debug
или releaseUnitTest
- задачи compileDebugKotlin
и compileReleaseUnitTestKotlin
соответственно). Нет задачи compileKotlin
, которая обычно создается для источника main
, заданного в обычных проектах Java + Kotlin.
Скорее всего, вы хотите сконфигурировать все задачи компиляции 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'
}
}
Ответ 2
Из документации по kotlin-android:
Плагин Android также добавляет расширение kotlinOptions в раздел android для настройки параметров всех задач kotlin:
android {
kotlinOptions {
jvmTarget = '1.8'
noStdlib = true
}
}
Ответ 3
Не прямой ответ на вопрос, но Google привел меня к этому ответу при появлении той же ошибки compileKotlin block in build.gradle file throws error 'Could not find method compileKotlin() for arguments […]'
.
В моем случае проблема была вызвана импортом модуля кода в мой проект, который содержал только код Java. Исправление состояло в том, чтобы убедиться, что в модуле Java build.gradle
есть следующее:
apply plugin: 'kotlin-android'