在将Studio 3.4
和Gradle版本更新为5.1.1
之后,我在执行任务时遇到了错误,因为找不到方法leftShift()
我的任务:
task incrementBetaVersion << {
println("Incrementing Beta Version Number...")
incrementVersionNumber('BetaVersionNumber')
println("Incrementing Beta Version Number...")
incrementVersionName('BetaVersionName')
}
该行中的左移位运算符<<
出现错误。
如何解决此错误?
答案 0 :(得分:15)
要解决此错误,请更改如下代码。
task incrementBetaVersion {
doLast {
println("Incrementing Beta Version Number...")
incrementVersionNumber('BetaVersionNumber')
println("Incrementing Beta Version Number...")
incrementVersionName('BetaVersionName')
}
}
左shitf运算符表示doLast { }
。
答案 1 :(得分:7)
<<(
LeftShift()
)运算符在4.xGradle
中已弃用,在5.xGradle
版本中已删除。
用于解决Could not find method leftShift() for arguments on task of type org.gradle.api.DefaultTask
doLast{}
中添加方法答案 2 :(得分:5)
解决此错误非常简单。
只需将<<
替换为doLast
请参阅下面的更新代码,今天我已修复了我的cordova Android项目。
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)
}
}
}
答案 3 :(得分:3)
之所以发生,是因为“左移”运算符已被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 :(得分:0)
我在使用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
块,以及从任务签名中删除<<
。现在对我有用。希望它也对您有用:-)