Po zaktualizowaniu 3.4
wersji Studio i Gradle do 5.1.1
mojego zadania wystąpił błąd, ponieważ nie można znaleźć metody leftShift ()
Moje zadanie:
task incrementBetaVersion << {
println("Incrementing Beta Version Number...")
incrementVersionNumber('BetaVersionNumber')
println("Incrementing Beta Version Number...")
incrementVersionName('BetaVersionName')
}
Mam błąd dla lewego operatora zmiany <<
w linii.
Jak rozwiązać ten błąd?
android
gradle
groovy
android-gradle-plugin
build.gradle
Bhuvanesh BS
źródło
źródło
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.
. Nie docieram tam, gdzie właściwie muszę się zmienić.Odpowiedzi:
Aby rozwiązać ten błąd, zmień
<<
wdoLast
ten sposób.task incrementBetaVersion { doLast { println("Incrementing Beta Version Number...") incrementVersionNumber('BetaVersionNumber') println("Incrementing Beta Version Number...") incrementVersionName('BetaVersionName') } }
Lewy operator zmiany reprezentuje
doLast { }
.Z Dokumentów:
<<
dla definicji zadań już nie działa. Innymi słowy, nie możesz używać składnitask myTask << { … }
.Task.doLast()
Zamiast tego użyj metody, na przykład:task myTask { doLast { ... ... } }
Więcej informacji tutaj: 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
źródło
Po prostu usuń „<<” z zadania i dodaj swój kod w
doLast{}
Do rozwiązania
Could not find method leftShift() for arguments on task of type org.gradle.api.DefaultTask
task incrementBetaVersion << { // your code }
do
task incrementBetaVersion { doLast { // your code } }
Źródła https://discuss.gradle.org/t/could-not-find-method-leftshift-for-arguments-on-task-of-type-org-gradle-api-defaulttask/30614/2
źródło
Dzieje się tak, ponieważ lewy Shift został zastąpiony przez doLast {}.
<< has deprecated in 4.x and removed in 5.0 version
Teraz będziesz musiał zmienić kod:
task incrementBetaVersion << { println("Incrementing Beta Version Number...") incrementVersionNumber('BetaVersionNumber') println("Incrementing Beta Version Number...") incrementVersionName('BetaVersionName') }
do
task incrementBetaVersion { doLast { println("Incrementing Beta Version Number...") incrementVersionNumber('BetaVersionNumber') println("Incrementing Beta Version Number...") incrementVersionName('BetaVersionName') } }
źródło
Rozwiązanie tego błędu jest dość proste.
Wystarczy wymienić
<<
zdoLast
Zobacz poniżej zaktualizowany kod, dziś naprawię w moim projekcie cordova na Androida.
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) } } }
źródło
Wystąpił ten błąd w projekcie Kotlin używanym
MockMaker
do wyszydzania klas innych niż końcowe.Rozwiązaniem jest zmiana starej składni na nową:
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") } } }
Zwróć uwagę, że zmieniło się kilka rzeczy, na przykład włączenie
doLast
bloku i usunięcie<<
z podpisu zadania. Teraz mi to pasuje. Mam nadzieję, że dla Ciebie to również :-)źródło