Die Methode leftShift () für Argumente konnte nach dem Update von Studio 3.4 nicht gefunden werden


97

Nach dem Aktualisieren der Studio- 3.4und Gradle-Version auf habe 5.1.1ich den Fehler bei meiner Aufgabe erhalten, da die Methode leftShift () nicht gefunden werden konnte.

Meine Aufgabe:

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

Ich habe den Fehler für den linken Schichtführer erhalten << in der Zeile erhalten.

Wie kann dieser Fehler behoben werden?


3
<< wurde in 4.x veraltet und in 5.0 entfernt
aashima

Ich erhalte den gleichen Fehler 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.. Ich komme nicht dahin, wo ich mich ändern muss.
Ajay Mehta

in you build.gradle nach einer Aufgabe suchen, die Sie erstellt haben
Bhuvanesh BS

Antworten:


193

Diesen Fehler, Änderung zu lösen <<mit doLastso.

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

Linke Shitf-Operator-Repräsentanten doLast { }.

<< wurde in Gradle 4.x veraltet und in Gradle 5.0 entfernt

Aus Dokumenten:

<<für Aufgabendefinitionen funktioniert nicht mehr. Mit anderen Worten, Sie können die Syntax nicht verwenden

task myTask << { …​ }.

Verwenden Sie Task.doLast()stattdessen die Methode wie folgt:

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

Weitere Informationen finden Sie hier: 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
wo ist das? welche Datei?
Akanshi Srivastava

1
in build.gradle
Bhuvanesh BS

@BhuvaneshBS Wo druckt es?
Bharath Kumar

Im Terminal während der Ausführung der Aufgabe
Bhuvanesh BS

1
Ich habe keine Aufgabe oder << steht immer noch vor dem Problem. Kann mir jemand helfen?
Deepak Rajput

23

Der LeftShift()Operator << ( ) ist in 4.x veraltet Gradleund in der 5.x- GradleVersion entfernt.

Zur Lösung von Could not find method leftShift() for arguments on task of type org.gradle.api.DefaultTask

Entfernen Sie einfach "<<" aus der Aufgabe und fügen Sie die Methode hinzu doLast{}

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

zu

task incrementBetaVersion {
   doLast {
      // your code
    }
}

9

Dies geschieht, weil der Left Shift-Operator durch doLast {} ersetzt wurde.

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

Jetzt müssen Sie den Code ändern:

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

zu

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

4

Diesen Fehler zu beheben ist ziemlich einfach.

Ersetzen Sie einfach <<mitdoLast

Siehe unten aktualisierten Code, heute behebe ich in meinem Cordova Android-Projekt.

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

Ich hatte diesen Fehler in einem Kotlin-Projekt, das verwendet wird MockMaker, um nicht endgültige Klassen zu verspotten.

Die Lösung besteht darin, die alte Syntax in diese neue zu ändern:

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")
        }
    }
}

Beachten Sie, dass sich einige Dinge geändert haben, z. B. das Einschließen des doLastBlocks und das Entfernen der <<Signatur aus der Task. Es funktioniert jetzt für mich. Hoffe es tut es auch für dich :-)

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.