Studio 3.4を更新した後、引数のメソッドleftShift()が見つかりませんでした


97

Studio 3.4とGradleのバージョンを更新した後5.1.1、タスクleftShift()が見つからなかったため、タスクでエラーが発生しました

私の仕事:

task incrementBetaVersion << {
    println("Incrementing Beta Version Number...")
    incrementVersionNumber('BetaVersionNumber')
    println("Incrementing Beta Version Number...")
    incrementVersionName('BetaVersionName')
}

<<行の左シフト演算子のエラーが発生しました。

このエラーを解決するには?


3
<<は4.xで廃止され、5.0で削除されました
aashima

同じエラーが発生しますERROR: Could not find method leftShift() for arguments [android_release_aar_8aaffqenud6qsg8w8hrovmfvc$_run_closure7@23b31b41] on task ':XXXapi:generateRelease' of type org.gradle.api.DefaultTask.。実際に変更しなければならない場所に到達していません。
Ajay Mehta

作成したタスクのbuild.gradleチェック
Bhuvanesh BS

回答:


198

このエラーを解決するには<<、次のdoLastように変更します。

task incrementBetaVersion  {
    doLast {
        println("Incrementing Beta Version Number...")
        incrementVersionNumber('BetaVersionNumber')
        println("Incrementing Beta Version Number...")
        incrementVersionName('BetaVersionName')
    }
}

左のshitf演算子はを表しdoLast { }ます。

<< Gradle 4.xで廃止され、Gradle 5.0で削除されました

ドキュメントから:

<<タスクの定義は機能しなくなります。つまり、構文を使用することはできません

task myTask << { …​ }

Task.doLast()代わりに、次のようにメソッドを使用します。

task myTask {
    doLast {
        ...
        ...
    }
}

詳細はこちら:https : //discuss.gradle.org/t/could-not-find-method-leftshift-for-arguments-on-task-of-type-org-gradle-api-defaulttask/30614

https://docs.gradle.org/current/userguide/upgrading_version_4.html#changes_5.0


2
これはどこ?どのファイル?
Akanshi Srivastava

1
build.gradle内
Bhuvanesh BS

@BhuvaneshBSどこに印刷されますか?
Bharath Kumar

ターミナルでタスクを実行中
Bhuvanesh BS

1
私は何のタスクも持っていないか、<<それでも問題が解決しない場合は、誰でも手助けできますか?
Deepak Rajput

25

<<(LeftShift())演算子は、4.xでは廃止されGradle、5.x Gradleバージョンでは削除されました。

の解決のために Could not find method leftShift() for arguments on task of type org.gradle.api.DefaultTask

タスクから「<<」を削除してメソッドを追加するだけです doLast{}

リファレンスhttps://discuss.gradle.org/t/could-not-find-method-leftshift-for-arguments-on-task-of-type-org-gradle-api-defaulttask/30614/2

task incrementBetaVersion << {
   // your code
}

task incrementBetaVersion {
   doLast {
      // your code
    }
}

9

これは、左シフト演算子がdoLast {}に置き換えられたために発生します。

<< has deprecated in 4.x and removed in 5.0 version

ここで、コードを変更する必要があります。

task incrementBetaVersion << {
    println("Incrementing Beta Version Number...")
    incrementVersionNumber('BetaVersionNumber')
    println("Incrementing Beta Version Number...")
    incrementVersionName('BetaVersionName')
}

task incrementBetaVersion  {
    doLast {
        println("Incrementing Beta Version Number...")
        incrementVersionNumber('BetaVersionNumber')
        println("Incrementing Beta Version Number...")
        incrementVersionName('BetaVersionName')
    }
}

5

このエラーを解決するのはとても簡単です。

ただ、交換する<<doLast

以下の更新されたコードを参照してください。今日、私はCordova Androidプロジェクトで修正しています。

task cdvPrintProps {
   doLast {
       println('cdvCompileSdkVersion=' + cdvCompileSdkVersion)
       println('cdvBuildToolsVersion=' + cdvBuildToolsVersion)
       println('cdvVersionCode=' + cdvVersionCode)
       println('cdvVersionCodeForceAbiDigit=' + cdvVersionCodeForceAbiDigit)
       println('cdvMinSdkVersion=' + cdvMinSdkVersion)
       println('cdvBuildMultipleApks=' + cdvBuildMultipleApks)
       println('cdvReleaseSigningPropertiesFile=' + cdvReleaseSigningPropertiesFile)
       println('cdvDebugSigningPropertiesFile=' + cdvDebugSigningPropertiesFile)
       println('cdvBuildArch=' + cdvBuildArch)
       println('computedVersionCode=' + android.defaultConfig.versionCode)
       android.productFlavors.each { flavor ->
           println('computed' + flavor.name.capitalize() + 'VersionCode=' + flavor.versionCode)
       }
   }
}

2

MockMaker最終クラス以外のモックに使用しているKotlinプロジェクトでこのエラーが発生しました。

解決策は、古い構文をこの新しい構文に変更することです。

task createTestResources {
    description = "Allows Mocking non-final classes and data classes in a Kotlin project"
    doLast {
        def mockMakerFile = new File("$projectDir/src/test/resources/mockito-extensions/org.mockito.plugins.MockMaker")
        if (System.env.MOCK_MAKER != null) {
            logger.info("Using MockMaker ${System.env.MOCK_MAKER}")
            mockMakerFile.parentFile.mkdirs()
            mockMakerFile.createNewFile()
            mockMakerFile.write(System.env.MOCK_MAKER)
        } else {
            logger.info("Using default MockMaker")
        }
    }
}

doLastブロックを含める<<、タスクの署名からを削除するなど、いくつかの点が変更されていることに注意してください。今はうまくいきます。それもあなたのためになることを願っています:-)

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.