После обновления 3.4
версии Studio и Gradle до 5.1.1
моей задачи возникла ошибка: не удалось найти метод leftShift ()
Моя задача:
task incrementBetaVersion << {
println("Incrementing Beta Version Number...")
incrementVersionNumber('BetaVersionNumber')
println("Incrementing Beta Version Number...")
incrementVersionName('BetaVersionName')
}
Я получил ошибку для оператора сдвига влево <<
в строке.
Как устранить эту ошибку?
android
gradle
groovy
android-gradle-plugin
build.gradle
Бхуванеш Б.С.
источник
источник
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.
. Не добираясь туда, где на самом деле мне нужно измениться.Ответы:
Для решения этой ошибки, изменения
<<
сdoLast
такими.task incrementBetaVersion { doLast { println("Incrementing Beta Version Number...") incrementVersionNumber('BetaVersionNumber') println("Incrementing Beta Version Number...") incrementVersionName('BetaVersionName') } }
Оператор сдвига влево представляет собой
doLast { }
.Из Документов:
<<
для определения задач больше не работает. Другими словами, вы не можете использовать синтаксис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
источник
Просто удалите «<<» из задачи и добавьте свой код в
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
источник
Это происходит из-за того, что оператор 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') } }
источник
Решить эту ошибку довольно просто.
Просто замените
<<
на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) } } }
источник
У меня была эта ошибка в проекте Kotlin, который используется
MockMaker
для имитации не финальных классов.Решение состоит в том, чтобы изменить старый синтаксис на новый:
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
блока и удаление<<
из подписи задачи. У меня это работает сейчас. Надеюсь, вам тоже понравится :-)источник