我正在尝试将Kotlin配置为在我的Android项目中使用Java 1.8。我尝试将compileKotlin块添加到build.gradle文件的底部,但是如果这样做,则会出现错误。

发生的错误如下:



没有此块,项目运行正常。我想念什么?这是完整的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'
    }
}

最佳答案

您收到的错误意味着该项目中没有compileKotlin任务,而这对于Android项目是预期的。

Android项目中的Kotlin编译任务名称包含build variant名称(这些名称是由构建类型,产品 flavor 和其他设置组合而成的,看起来像debugreleaseUnitTest -这些任务分别是compileDebugKotlincompileReleaseUnitTestKotlin)。没有compileKotlin任务,通常是为普通Java + Kotlin项目中设置的main源创建的。

最有可能的是,您想要配置项目中的所有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'
    }
}

10-06 03:42