web-dev-qa-db-ja.com

build.gradleファイルのcompileKotlinブロックは、「引数のメソッドcompileKotlin()が見つかりませんでした[...]」というエラーをスローします

Java 1.8 Androidプロジェクトで動作するようにKotlinを設定しようとしています。compileKotlinブロックを私の_build.gradleファイルですが、そうするとエラーが発生します。

発生するエラーは次のとおりです。

エラー:(38、0)org.gradle.api.Project型のプロジェクト ':core'で、引数[build_dvcqiof5pov8xt8flfud06cm3 $ _run_closure4 @ 66047120]のメソッドcompileKotlin()が見つかりませんでした。

このブロックがなくてもプロジェクトは正常に実行されます。私は何が欠けていますか?完全な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'
    }
}
36
SolveSoul

取得しているエラーは、プロジェクトにcompileKotlinタスクがないことを意味し、Androidプロジェクトに期待されています。

AndroidプロジェクトのKotlinコンパイルタスク名には、 ビルドバリアント の名前が含まれます(ビルドタイプ、製品フレーバー、その他の設定から組み合わされ、debugのようになりますまたはreleaseUnitTest-タスクはそれぞれcompileDebugKotlinおよびcompileReleaseUnitTestKotlinです)通常compileKotlinソースセットに対して通常作成されるmainタスクはありません= Java + Kotlinプロジェクト。

最も可能性が高いのは、プロジェクト内のallKotlinコンパイルタスクを構成することです。そのためには、次のようにブロックを適用できます。

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

kotlin-Android documentation から:

Androidプラグインは、kotlinOptions拡張子をAndroidセクションに追加して、すべてのkotlinタスクのオプションを設定します。

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