Не удалось найти метод LeftShift () для аргументов после обновления studio 3.4

#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
    }
}
  

Ссылка 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.x Gradle .

Ответ №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 блока и удаление << из подписи задачи. Теперь это работает для меня. Надеюсь, это сработает и для вас 🙂