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

98

Después de actualizar la 3.4versión de Studio y Gradle a 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 del operador de cambio a la izquierda <<en la línea.

¿Cómo solucionar este error?

Bhuvanesh BS
fuente
3
<< fue obsoleto en 4.xy eliminado en 5.0
aashima
Recibo 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 llego a donde realmente tengo que cambiar.
Ajay Mehta
en su build.gradle compruebe cualquier tarea que haya creado
Bhuvanesh BS

Respuestas:

199

Para solucionar este error, el cambio <<de doLastesta manera.

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

Representante del operador de mierda izquierda doLast { }.

<< quedó obsoleto en Gradle 4.xy se eliminó en Gradle 5.0

De Docs:

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

task myTask << { …​ }.

Use 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

Bhuvanesh BS
fuente
2
¿donde está esto? cual archivo?
Akanshi Srivastava
1
en build.gradle
Bhuvanesh BS
@BhuvaneshBS ¿Dónde se imprime?
Bharath Kumar
En la Terminal mientras se ejecuta la tarea
Bhuvanesh BS
1
No tengo ninguna tarea o << todavía tengo el problema, ¿alguien puede ayudarme?
Deepak Rajput
25

<< ( LeftShift()) el operador está obsoleto en 4.xy GradleEliminado en la Gradleversión 5.x.

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

Simplemente elimine "<<" de la tarea y agregue el método en doLast{}

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

a

task incrementBetaVersion {
   doLast {
      // your code
    }
}
Nikunj Paradva
fuente
9

Esto sucede debido al operador Left Shift y 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')
    }
}
naveenos
fuente
5

Resolver este error es bastante sencillo.

Solo reemplaza <<condoLast

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

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)
       }
   }
}
Muddasir23
fuente
2

Tuve este error en un proyecto de Kotlin que se usa MockMakerpara simular clases no finales.

La solución es cambiar la sintaxis anterior por 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 doLastbloque y eliminar el <<de la firma de la tarea. Funciona para mi ahora. Espero que también lo haga por ti :-)

voghDev
fuente