web-dev-qa-db-fra.com

Le bloc compileKotlin dans le fichier build.gradle renvoie l'erreur "Impossible de trouver la méthode compileKotlin () pour les arguments [...]"

J'essaie de configurer Kotlin pour qu'il fonctionne avec Java 1.8 dans mon projet Android. J'ai essayé d'ajouter le bloc compileKotlin au niveau en bas de mon fichier build.gradle, mais j'obtiens une erreur si je le fais.

L'erreur qui se produit est la suivante:

Erreur: (38, 0) Impossible de trouver la méthode compileKotlin () pour les arguments [build_dvcqiof5pov8xt8flfud06cm3 $ _run_closure4 @ 66047120] sur le projet ': core' de type org.gradle.api.Project.

Le projet fonctionne bien sans ce bloc. Qu'est-ce que je rate? Voici le fichier build.gradle Complet, c'est assez basique:

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'
    }
}
36
SolveSoul

L'erreur que vous obtenez signifie qu'il n'y a pas de tâche compileKotlin dans le projet, et cela est prévu pour les projets Android.

Les noms des tâches de compilation Kotlin dans Android contiennent les noms variante de build (ceux-ci sont combinés à partir du type de build, de la saveur du produit et d'autres paramètres et ressemblent à debug ou releaseUnitTest - les tâches sont respectivement compileDebugKotlin et compileReleaseUnitTestKotlin). Il n'y a pas de tâche compileKotlin, qui est généralement créée pour le main source définie en ordinaire Java + projets Kotlin.

Vous souhaitez probablement configurer toutes les tâches de compilation Kotlin dans le projet, et pour ce faire, vous pouvez appliquer le bloc comme suit:

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'
    }
}
62
hotkey

De la documentation kotlin-Android :

Le plugin Android ajoute également l'extension kotlinOptions à Android pour définir les options pour toutes les tâches kotlin:

Android {
    kotlinOptions {
        jvmTarget = '1.8'
        noStdlib = true
    }
}
8
G00fY