#android #gradle #groovy #android-gradle-plugin #build.gradle
#Android #gradle #groovy #android-gradle-плагин #build.gradle
Вопрос:
После обновления версии studio 3.4
и Gradle до 5.1.1
я получил ошибку в своей задаче, так как не смог найти метод LeftShift ()
Моя задача:
task incrementBetaVersion << {
println("Incrementing Beta Version Number...")
incrementVersionNumber('BetaVersionNumber')
println("Incrementing Beta Version Number...")
incrementVersionName('BetaVersionName')
}
Я получил ошибку для оператора сдвига влево <<
в строке.
Как устранить эту ошибку?
Комментарии:
1. << устарел в 4.x и удален в 5.0
2. Я получаю ту же ошибку
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.
. Не получается, где на самом деле я должен измениться.3. в вашем 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
Комментарии:
1. где это? какой файл?
2. в build.gradle
3. @BhuvaneshBS Где он печатает?
4. У меня нет какой-либо задачи или << все еще сталкивается с проблемой, может кто-нибудь помочь?
5. @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
}
}
Оператор << (
LeftShift()
) устарел в версии 4.xGradle
и удален в версии 5.xGradle
.
Ответ №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:
Решить эту ошибку довольно просто.
Просто замените <<
на doLast
Смотрите Ниже обновленный код, сегодня я исправляю в своем проекте cordova Android.
task cdvPrintProps {
doLast {
//your code
}
}
Ответ №5:
У меня была эта ошибка в проекте 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
блока и удаление <<
из подписи задачи. Теперь это работает для меня. Надеюсь, это сработает и для вас 🙂