【问题标题】:Could not find method leftShift() for arguments after updating studio 3.4更新工作室 3.4 后找不到参数的 leftShift() 方法
【发布时间】:2019-09-11 13:39:52
【问题描述】:

在将工作室 3.4 和 Gradle 版本更新为 5.1.1 后,我的任务出现错误 找不到方法 leftShift()

我的任务:

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

我在该行中得到了左移位运算符&lt;&lt; 的错误。

如何解决这个错误?

【问题讨论】:

  • 我遇到了同样的错误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.。没有得到我必须改变的地方。
  • 在你的 build.gradle 中检查你创建的任何任务

标签: android gradle groovy android-gradle-plugin build.gradle


【解决方案1】:

要解决此错误,请将&lt;&lt; 更改为doLast,如下所示。

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

左移运算符代表doLast { }

&lt;&lt; 在 Gradle 4.x 中被弃用并在 Gradle 5.0 中被移除

来自文档:

&lt;&lt; 用于任务定义不再有效。换句话说,你不能使用语法

task myTask &lt;&lt; { …​ }.

改用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

【讨论】:

  • 这是哪里?哪个文件?
  • 在 build.gradle 中
  • @BhuvaneshBS 它在哪里打印?
  • 我没有任何任务或
  • @DeepakRajput 你找到解决方案了吗?我有同样的问题
【解决方案2】:

只需从任务中删除“doLast{}

Could not find method leftShift() for arguments on task of type org.gradle.api.DefaultTask的解决方案

task incrementBetaVersion << {
   // your code
}

task incrementBetaVersion {
   doLast {
      // your code
    }
}

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

LeftShift()) 运算符在 4.x Gradle 中已弃用,在 5.x Gradle 版本中已删除。

【讨论】:

    【解决方案3】:

    发生这种情况是因为 Left Shift 运算符已被 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')
        }
    }
    

    【讨论】:

      【解决方案4】:

      解决这个错误很简单。

      只需将&lt;&lt; 替换为doLast

      请参阅下面更新的代码,今天我在我的 cordova Android 项目中进行了修复。

      task cdvPrintProps {
         doLast {
             //your code
         }
      }
      

      【讨论】:

        【解决方案5】:

        我在使用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 块,以及从任务签名中删除 &lt;&lt;。它现在对我有用。希望它也适合你:-)

        【讨论】:

          猜你喜欢
          • 2023-03-21
          • 2019-07-25
          • 2015-11-20
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-04-15
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多