Невозможно добавить "оболочку" задачи, так как задача с таким именем уже существует

При установке 'react-native init AwesomeProject' я получаю эту ошибку при запуске react-native run-android:

Could not determine java version from '11.0.1'.

Быстрый гугл подсказывает, что мне нужно обновить distributionUrl в Gradle-wrapper. Сделав это, я столкнулся с новой ошибкой:

Cannot add task 'wrapper' as a task with that name already exists.

Предполагается, что проблема находится в файле:

/AwesomeProject/android/build.gradle' line: 36

что выглядит так

task wrapper(type: Wrapper) {
    gradleVersion = '4.4'
    distributionUrl = distributionUrl.replace("bin", "all")
}

Я ходил туда и сюда, пытаясь понять, что это делает. Кажется странным, что что-то не работает прямо из коробки. Кто-нибудь сталкивается с подобной проблемой?

есть ли обновление или какой правильный ответ? Если нет, то как вы ее решили? иначе поставьте отметку справа на ответе. >> :-)

GD- Ganesh Deshmukh 08.03.2019 14:05
138
1
89 955
7

Ответы 7

Как уже упоминалось в следующих комментариях - https://stackoverflow.com/a/46867575/4982729:

  1. Откройте и отредактируйте файл app-folder/android/gradle/wrapper/gradle-wrapper.properties; обновить строку

    distributionUrl=https\://services.gradle.org/distributions/gradle-5.0-all.zip
    
  2. В файле AwesomeProject/android/build.gradle попробуйте закомментировать

    task wrapper(type: Wrapper) {
        gradleVersion = '4.4'
        distributionUrl = distributionUrl.replace("bin", "all")
    }
    

Вы также можете обновить

task wrapper(type: Wrapper) {
    gradleVersion = '4.4'    
    distributionUrl = distributionUrl.replace("bin", "all")
}

к

wrapper {
    gradleVersion = '4.4'
    distributionUrl = distributionUrl.replace("bin", "all")
}

В виде

Overriding built-in tasks deprecated in 4.8 now produces an error.

Attempting to replace a built-in task will produce an error similar to the following:

Cannot add task 'wrapper' as a task with that name already exists.

см. последний абзац Задачи и свойства: https://docs.gradle.org/5.2.1/userguide/upgrading_version_4.html

и Настройка задачи Wrapper: https://docs.gradle.org/5.2.1/userguide/gradle_wrapper.html#customizing_wrapper

Этот ответ не отвечает на вопрос OP, но он очень полезен для таких гуглеров, как я, поэтому я проголосовал за.

Franklin Yu 27.02.2019 23:49

Это действительно решает проблему OP. Он использовал старую версию Gradle, а затем привязал к обновлению устаревшее решение, и этот ответ дает правильное решение. (Конечно, @FranklinYu, если вы примете «кто-нибудь сталкивается с подобной проблемой?» В качестве вопроса ОП, тогда простого «да» будет достаточно.)

Michael Piefel 18.11.2019 10:48

какую версию Gradle вы используете в своей среде?

Если вы используете Gradle версии 5.x, вам необходимо изменить 「оболочку задачи」, как показано ниже.

task wrapper(type: Wrapper) {
    gradleVersion = '4.4'
    distributionUrl = distributionUrl.replace("bin", "all")
}

↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓

wrapper {
    gradleVersion = '4.4'
    distributionUrl = distributionUrl.replace("bin", "all")
}

Потом пришла эта ошибка. Не могу понять, что делать. ОШИБКА: не удалось найти метод wrapper () для аргументов [{type = class org.gradle.api.tasks.wrapper.Wrapper}, build_81gq92nveejavsi3t9efznmk8 $ _run_closure2 @ 55f5bac8] в корневом проекте 'myproject' типа org.Project.api .

buddhiv 30.06.2019 18:14

Есть большая вероятность, что у вас есть «задача» для запуска в вашем файле build.gradle, идите и удалите строка, относящаяся к оболочке (включая ее скобку и т. д.). Затем, если вы используете IntelliJ, он автоматически перенесет новый в ваш рабочий каталог.

У меня такая же проблема. проблема в моем коде заключалась в двойном объявлении другого файла Gradle в build.gradle

build.gradle

apply from: otherFile.gradle
... build. gradle code...
apply from: otherFile.gradle //Again 

если в файле "gradle-wrapper.properties" уже есть эти коды

distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-5.4.1-all.zip

тогда вы можете удалить

task wrapper(type: Wrapper) {
    gradleVersion = '4.4'
    distributionUrl = distributionUrl.replace("bin", "all")
}

из build.gradle

но в этом случае вы не можете использовать ./gradle task с терминала

user924 03.03.2021 12:57

Я столкнулся с проблемой, потому что я выполнял свою задачу, используя градиент Глобальный, а не мою оболочку градиента местный.

то есть в моем текущем каталоге у меня был исполняемый файл gradlew.

Но я выполнял эту команду:

gradle <task>

Когда я должен был бежать:

./gradlew <task>

Предположительно потому, что запуск глобального gradle пытается создать локальную оболочку - а она уже существует.

Другие вопросы по теме