2017-05-23 20 views
11

Próbuję skonfigurować Kotlin do pracy z językiem Java 1.8 w moim projekcie Android. Próbowałem dodać blok compileKotlin na dole mojego pliku build.gradle, ale dostaję błąd, jeśli to zrobię.Kompiluj blok kodu w pliku build.gradle zgłasza błąd "Nie można znaleźć metody compileKotlin() dla argumentów [...]"

Błąd występujący jest następujący:

Error:(38, 0) Could not find method compileKotlin() for arguments [[email protected]] on project ':core' of type org.gradle.api.Project.

Projekt działa dobrze bez tego bloku. czego mi brakuje? Oto pełna build.gradle plik, to dość podstawowe rzeczy:

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

Odpowiedz

12

Błąd otrzymujesz oznacza, że ​​nie ma compileKotlin zadanie w projekcie, a to oczekuje na projekty Android.

W Kotlin kompilacji nazwy zadania w projektach Android zawierać te build variant nazwy (te są łączone z rodzaju kompilacji, smak produktu i inne ustawienia i wyglądać debug lub releaseUnitTest - zadania są compileDebugKotlin i compileReleaseUnitTestKotlin odpowiednio). Nie ma zadania compileKotlin, które jest zwykle tworzone dla zestawu źródeł w zwykłych projektach Java + Kotlin.

Najprawdopodobniej chcesz skonfigurować wszystkie Kotlin zadania kompilacji w projekcie, a do tego można zastosować blok następująco:

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

który działa, myślałem compileKotlin został zastosowany do wszystkich budować warianty, ale najwyraźniej nie. Dzięki! – SolveSoul

+0

działa dobrze, jego praca, kiedy umieszczam ją na końcu pliku: D –