При установке '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")
}
Я ходил туда и сюда, пытаясь понять, что это делает. Кажется странным, что что-то не работает прямо из коробки. Кто-нибудь сталкивается с подобной проблемой?
Как уже упоминалось в следующих комментариях - https://stackoverflow.com/a/46867575/4982729:
Откройте и отредактируйте файл app-folder/android/gradle/wrapper/gradle-wrapper.properties; обновить строку
distributionUrl=https\://services.gradle.org/distributions/gradle-5.0-all.zip
В файле 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, но он очень полезен для таких гуглеров, как я, поэтому я проголосовал за.
Это действительно решает проблему OP. Он использовал старую версию Gradle, а затем привязал к обновлению устаревшее решение, и этот ответ дает правильное решение. (Конечно, @FranklinYu, если вы примете «кто-нибудь сталкивается с подобной проблемой?» В качестве вопроса ОП, тогда простого «да» будет достаточно.)
какую версию 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 .
Есть большая вероятность, что у вас есть «задача» для запуска в вашем файле 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 с терминала
Я столкнулся с проблемой, потому что я выполнял свою задачу, используя градиент Глобальный, а не мою оболочку градиента местный.
то есть в моем текущем каталоге у меня был исполняемый файл gradlew.
Но я выполнял эту команду:
gradle <task>
Когда я должен был бежать:
./gradlew <task>
Предположительно потому, что запуск глобального gradle пытается создать локальную оболочку - а она уже существует.
есть ли обновление или какой правильный ответ? Если нет, то как вы ее решили? иначе поставьте отметку справа на ответе. >> :-)