71 votes

Le bloc compileKotlin dans le fichier build.gradle génère une erreur "Impossible de trouver la méthode compileKotlin () pour les arguments [...]"

Je suis en train de configurer Kotlin de travailler avec Java 1.8 dans mon projet Android. J'ai essayé d'ajouter l' compileKotlin bloc au fond de mon build.gradle le fichier, mais j'obtiens une erreur si je le fais.

L'erreur qui se produit est la suivante:

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

Le projet fonctionne très bien sans ce bloc. Ce qui me manque? Voici le compléter build.gradle le fichier, c'est plutôt un truc de base:

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

100voto

hotkey Points 119

L'erreur que vous obtenez signifie qu'il n'y a pas d' compileKotlin tâche dans le projet, et que l'on attend pour Android des projets.

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

Très probablement, vous souhaitez configurer tous les Kotlin compilation des tâches du 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'
    }
}

45voto

G00fY Points 89

De la documentation kotlin-android :

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

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X