No se pudo encontrar el método leftShift() para los argumentos después de actualizar Studio 3.4

1 minuto de lectura

Después de actualizar el estudio 3.4 y la versión de Gradle para 5.1.1 Recibí el error en mi tarea como No se pudo encontrar el método leftShift()

Mi tarea:

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

Recibí el error para el operador de desplazamiento a la izquierda << En la linea.

¿Cómo resolver este error?

  • – aashima

    12 mayo 2019 a las 14:24

  • Estoy teniendo el mismo error 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.. No llegar a donde realmente tengo que cambiar.

    – Ajay Mehta

    27 de junio de 2019 a las 5:46

  • en you build.gradle verifique cualquier tarea que haya creado

    – Licenciatura Bhuvanesh

    27 de junio de 2019 a las 14:24

avatar de usuario
licenciatura bhuvanesh

Para solucionar este error, cambie << con doLast como esto.

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

Representación del operador de desplazamiento a la izquierda doLast { }.

<< quedó en desuso en Gradle 4.x y se eliminó en Gradle 5.0

De Documentos:

<< para definiciones de tareas ya no funciona. En otras palabras, no puede usar la sintaxis

task myTask << { …​ }.

Utilizar el Task.doLast() método en su lugar, así:

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

Más información aquí:
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

  • ¿donde está esto? cual archivo

    – Akanshi Srivastava

    24 de junio de 2019 a las 10:15

  • en build.gradle

    – Licenciatura Bhuvanesh

    25 de junio de 2019 a las 8:23

  • @BhuvaneshBS ¿Dónde se imprime?

    – Bharat Kumar

    12 de julio de 2019 a las 9:23

  • No tengo ninguna tarea o

    -Deepak Rajput

    6 de septiembre de 2019 a las 5:31

  • @DeepakRajput ¿has encontrado alguna solución? Tengo el mismo problema

    –Muhammad Zahab Ahmad Khan

    26 de febrero de 2020 a las 11:42


avatar de usuario
Nikunj Paradva

Simplemente elimine “doLast{}

para solución de Could not find method leftShift() for arguments on task of type org.gradle.api.DefaultTask

task incrementBetaVersion << {
   // your code
}

a

task incrementBetaVersion {
   doLast {
      // your code
    }
}

Referencia https://discuss.gradle.org/t/could-not-find-method-leftshift-for-arguments-on-task-of-type-org-gradle-api-defaulttask/30614/2

LeftShift()) el operador está en desuso en 4.x Gradle y eliminado en 5.x Gradle Versión.

Ocurrió debido a que el operador Left Shift ha sido reemplazado por doLast { }.

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

Ahora tendrás que cambiar el código:

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

a

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

avatar de usuario
Muddasir23

Resolver este error es bastante simple.

solo reemplaza << con doLast

Vea a continuación el código actualizado, hoy lo arreglo en mi proyecto cordova Android.

task cdvPrintProps {
   doLast {
       //your code
   }
}

Tuve este error en un proyecto de Kotlin que está usando MockMaker para simular clases no finales.

La solución es cambiar la sintaxis anterior a esta nueva:

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

Tenga en cuenta que algunas cosas han cambiado, como incluir el doLast bloquear y quitar el << de la firma de la tarea. Funciona para mi ahora. Espero que también lo haga por ti 🙂

¿Ha sido útil esta solución?