无法添加任务“包装器”,因为该名称的任务已经存在

在安装 返回文章页面返回文章页面返回文章页面返回文章页面返回文章页面返回文章页面返回文章页面时,当我运行 react-native run-android时,我得到这个错误:

Could not determine java version from '11.0.1'.

一个快速的谷歌建议我需要更新的 distributionUrl在分级包装。这样做之后,我面临着一个新的错误:

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")
}

我一直在想这是干什么用的。有些东西不能直接从盒子里拿出来,这看起来很奇怪。有人遇到过类似的问题吗?

102168 次浏览

如以下评论所述-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. In file AwesomeProject/android/build.gradle try commenting out

    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")
}

就像

重写4.8中废弃的内置任务现在会产生一个错误。

尝试替换内置任务将产生类似于下面的错误:

无法添加任务“包装器”,因为该名称的任务已经存在。

任务及属性的最后一段: Https://docs.gradle.org/5.2.1/userguide/upgrading_version_4.html

自定义包装器任务: Https://docs.gradle.org/5.2.1/userguide/gradle_wrapper.html#customizing_wrapper

你在自己的环境中使用哪个版本的分级?

如果你使用5.x 版本,你必须修改「任务包装器」 ,如下所示。

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

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

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

很有可能在 build.gradle 文件中有一个“任务”要运行,请进行删除操作 与包装相关的行(包括括括号等)。 然后,如果你正在使用 IntelliJ,它会自动把新的工作目录带到你的电脑上。

我也有同样的问题。我代码中的问题是 build.Gradle 中另一个 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")
}

从建筑,梯度

我遇到了这个问题,因为我是使用 全球性的级别运行我的任务,而不是我的 本地级别包装器。

也就是说,在我的工作目录中,我有一个 gradlew可执行文件。

但我正在运行这个命令:

gradle <task>

当我应该跑步的时候:

./gradlew <task>

可能是因为运行 global gradle 试图创建一个本地包装器——而且已经存在一个本地包装器。