更新工作室 3.4 后找不到参数的 leftShift() 方法
Posted
技术标签:
【中文标题】更新工作室 3.4 后找不到参数的 leftShift() 方法【英文标题】:Could not find method leftShift() for arguments after updating studio 3.4 【发布时间】: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')
我在该行中得到了左移位运算符<<
的错误。
如何解决这个错误?
【问题讨论】:
我遇到了同样的错误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 中检查你创建的任何任务
【参考方案1】:
要解决此错误,请将<<
更改为doLast
,如下所示。
task incrementBetaVersion
doLast
println("Incrementing Beta Version Number...")
incrementVersionNumber('BetaVersionNumber')
println("Incrementing Beta Version Number...")
incrementVersionName('BetaVersionName')
左移运算符代表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
【讨论】:
这是哪里?哪个文件? 在 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.xGradle
版本中已删除。
【讨论】:
【参考方案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】:解决这个错误很简单。
只需将<<
替换为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
块,以及从任务签名中删除 <<
。它现在对我有用。希望它也适合你:-)
【讨论】:
以上是关于更新工作室 3.4 后找不到参数的 leftShift() 方法的主要内容,如果未能解决你的问题,请参考以下文章
更新到 nextjs@10.4 后找不到模块'webpack/lib/node/NodeTemplatePlugin'
Ionic 2:更新到 RC.0 后找不到名称“Promise”