Gradle 3.3版本不支持BuildActionExecuter上的forTask()方法。

111

我刚刚更新了我的Android Studio到版本3.0 Canary 1, 现在我正在使用Android Studio 3.0 Canary 1来继续开发我的现有项目。 默认情况下,我的项目gradle文件中设置了gradle: 3.0.0-alpha1的版本号。 所以我将gradle版本更改为2.2.3,但现在我遇到了以下错误:

错误:Gradle执行失败。

原因:你正在使用的Gradle版本(3.3)不支持BuildActionExecuter中的forTasks()方法。这个方法 从Gradle 3.5版本开始提供支持。

我在这里附上了我的gradle文件。

// Top-level build file where you can add configuration options common to all sub-projects/modules.

buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:2.2.3'
        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

allprojects {
    repositories {
        jcenter()
    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}

5
有人能建议如何修复这些问题而不必更新gradle版本和android插件版本吗?因为这样做需要进行许多其他更改,由于一些业务限制,我们无法进行这些更改。 - Sasuke Uchiha
10个回答

196

我刚遇到了同样的问题。通过在“gradle-wrapper.properties”中更改Gradle distributionUrl来修复它。

这是我的配置:

#Wed Mar 22 16:13:58 BRT 2017
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-4.1-all.zip

更多详细信息请见

官方视频以帮助迁移 https://www.youtube.com/watch?v=oBsbI8ICYKg

另请参阅@TmTron下面的评论


19
想了解最新的发行版,请前往目录 https://services.gradle.org/distributions。所有版本均已列出。 - I.G. Pascual
4
请在更改到特定版本之前阅读@I.G.Pascual的评论,因为您可以将版本更新为当前可用的最新版本。当此评论发布时,当前的发行版是4.0(稳定版)。因此,如果您更改为distributionUrl=https\://services.gradle.org/distributions/gradle-4.0-all.zip,则是安全的。 - HendraWD
4
打开多模块应用时要小心:Android Studio可能只会在“项目-Android”视图中显示一个gradle-wrapper属性文件。为确保更改全部内容,请使用“在路径中查找”(CTRL+SHIFT+F)并搜索"distributionUrl"。 - TmTron
我也遇到了以下错误:原因: 您正在使用的Gradle版本(3.3)不支持BuildActionExecuter上的forTasks()方法。 Gradle 3.5及更高版本支持此功能。因此,我已更新gradle-wrapper.properties文件为distributionUrl=https\://services.gradle.org/distributions/gradle-3.5-all.zip - ViramP
1
谢谢你的提醒,@TmTron,那就是我的问题。falico,如果你不介意的话,我认为在你上面的回答中突出显示TmTron的评论会很有益。 - BareMetalCoder

65

修改文件 "gradle-wrapper.properties"

加入以下这行代码并同步项目-

distributionUrl=https\://services.gradle.org/distributions/gradle-4.1-all.zip

这将有效。检查最新版本请访问services.gradle.org/distributions

更改后,请从Build菜单中同步项目,并清除重新构建项目一次。


4
在更改Gradle版本之前,请务必检查https://services.gradle.org/distributions,因为您可以直接将版本更新为当前可用的最新版本。当发布此评论时,当前版本为4.0(稳定版)。因此,如果您更改为`distributionUrl=https\://services.gradle.org/distributions/gradle-4.0-all.zip`,则是安全的,因为它比`milestone-1`版本更加稳定。 - HendraWD
是的,你说得对,总是优先选择稳定版本。但仍然可以使用它。@HendraWD 感谢评论。 - Kailas Bhakade
将Android Studio从2.3升级到3.0,请查看官方指南:https://www.youtube.com/watch?v=oBsbI8ICYKg - Kailas Bhakade

28

尝试构建调试apk时出现了此问题。

解决方案:更新Gradle版本至3.5

前往文件 -> 项目结构 -> 项目 -> Gradle版本 = 3.5

适用于Android Studio 3.0

这是您需要进行更改的菜单图像


这是为那些有意不想升级到Gradle 4的人提供的解决方案。 - ram
它并不会。它升级到Gradle版本3.5,这是他想要使用的功能所需的最低版本。 - Quinton M.

14
请按以下步骤操作:
  1. 在Android Studio中打开您的项目
  2. 在Android菜单中,打开gradle-wrapper.properties
  3. 将发行版URL行更改为以下行

distributionUrl=https://services.gradle.org/distributions/gradle-4.1-all.zip

  1. 完成了。现在构建您的项目。

附有截图以便更好地理解。 enter image description here


错误: 无法为锁定文件 C:\ Users \ Kaveesh \ .gradle \ wrapper \ dists \ gradle-4.1-all \ bzyivzo6n839fup2jbap0tjew \ gradle-4.1-all.zip.lck 创建父目录 - Kaveesh Kanwal
它显示了锁定问题。Android Studio 无法创建目录。 - Naveed Ahmad

5

我通过更改gradle-wrapper.properties文件中以下代码中的distributionUrl解决了这个问题。

distributionUrl=https\://services.gradle.org/distributions/gradle-4.1-all.zip

2
一旦将这些添加到顶级Gradle中。
// Top-level build file where you can add configuration options common to all sub-projects/modules.

buildscript {

    repositories {
        maven { url 'https://maven.google.com' }
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.0.0-alpha9'

        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

allprojects {
    repositories {
        jcenter()
        maven { url 'https://maven.google.com' }
    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}

1

1
我们有两种方法来处理它。
  1. 您可以将gradle的版本从早期版本更新到3.5版本;
  2. 或者,您可以将gradle wrapper配置为4.1版本。
所有方法都是有用的。

0
  1. 打开 gradle-wrapper.properties 文件
  2. 将以下内容替换为:

    distributionUrl=https://services.gradle.org/distributions/gradle-3.3-all.zip

替换为:

distributionUrl=https://services.gradle.org/distributions/gradle-4.1-all.zip
  1. 现在同步项目

点击此处了解更多


0
将此代码放入gradle-wrapper.properties文件中,它将与您一起工作。
distributionUrl=https\://services.gradle.org/distributions/gradle-4.1-all.zip

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接