【问题标题】:Error: DefaultOperationDescriptor@2b878eea already available in Android Studio错误:Android Studio 中已提供 DefaultOperationDescriptor@2b878eea
【发布时间】:2017-12-14 19:37:11
【问题描述】:

Gradle 执行失败

当我尝试将 Gradle 与项目文件同步时,出现下面提到的错误

我使用的Android Studio版本是3.0.1,Gradle Build 4.1-all.zip

仅供参考,我已经尝试过 ->Build->Clean Project and Invalidate Cache & Restart,另外一件事是我的代码中没有错误。

消息错误:

信息:Gradle 任务 [:app:generateDebugSources, :app:generateDebugAndroidTestSources, :app:mockableAndroidJar] 错误:无法完成 Gradle 执行。

原因: 操作 org.gradle.tooling.internal.provider.events.DefaultOperationDescriptor@86028ba 已经可用。

8 秒内构建成功

信息:1 个错误

信息:0 条警告

但是当我尝试在我的模拟器上运行时

出现如下错误

运行时消息错误

信息:Gradle 任务 [:app:assembleDebug] E:\Android 游戏应用\app\build.gradle 错误:(1, 1) 评估项目 ':Android Game App:app' 时出现问题。 无法应用插件 [id 'com.android.application'] 由于 Gradle 新变体感知依赖管理的限制,在不同的类加载器中加载 Android Gradle 插件会导致构建错误。 当子项目中包含 Android Gradle 插件的构建脚本类路径或复合构建中包含的项目设置不同时,可能会发生这种情况。 要解决此问题,请仅将 Android Gradle 插件添加到顶级 build.gradle 文件的 buildscript 类路径中。 在复合构建的情况下,还要确保包含 Android Gradle 插件的构建脚本类路径在主项目和包含的项目中是相同的。 如果您使用的是已修复该问题的 Gradle 版本,您可以通过在 gradle.properties 文件中设置 android.enableBuildScriptClasspathCheck=false 来禁用此检查。 要了解有关此问题的更多信息,请转至 https://d.android.com/r/tools/buildscript-classpath-check.html。 信息:在 16 秒内构建失败 信息:1个错误 信息:0 个警告 信息:在控制台中查看完整的输出

在 Google 上找不到任何内容!任何帮助都会受到高度鼓励???

【问题讨论】:

  • 我真的需要这方面的紧急帮助......!请
  • 你能添加你的 build.gradle 文件吗?您使用的是哪个版本的 android gradle 插件?你有多少个模块?我面临同样的问题并解决了它。但需要更多信息。
  • @ffgiraldez 不幸的是,我没有得到任何帮助。所以,我不得不承担损失,将我的 Android Studio 从 3.0.1 降级到 2.3.3,这很烦人。但是,之后这个错误就消失了。这是我唯一一个人做的事情。

标签: gradle synchronization runtime-error


【解决方案1】:

问题的关键是这一行。可能是由于 root build.gradle 中的 project.all 或者您正在使用复合构建。

This can occur when the build script classpaths that contain the Android Gradle plugin in sub-projects, 
or included projects in the case of composite builds, are set differently.

这意味着在你所有的 build.gradle 中你有不止一个这一行

buildscript {
    dependencies {
        classpath "com.android.tools.build:gradle:x.y.z"
    }
}

这意味着随着 Android Gradle Plugin 3.Y.Z 和handling dependencies 的新方式的引入, 如果你在同一个项目中混入 2 个具有不同插件版本的项目(一个是 2.3,另一个是 3.0.1),你会在编译时得到龙。

这个错误是一种迫使开发人员检查它并在检测到并解决后选择退出的方法。

如何解决,首先确保你不使用低于 3.0.1 的 android gradle 插件并使用新的依赖配置,并在你拥有的每个 gradle.properties 上添加这个属性。

android.enableBuildScriptClasspathCheck=false

你现在可以编译了

可以在realm sample repo 找到一个示例,他们使用一个 allprojects 块,该块在每个模块上都包含 android gradle 插件。并在根gradle.properties添加previus gradle属性解决它

【讨论】:

  • 好吧!您突出显示了此问题的正确错误。它实际上是由于复合构建而发生的。 !!!
  • 我也使用复合构建,解决方案是在包含的每个 gradle.properties 以及使用复合构建的项目中添加 android.enableBuildScriptClasspathCheck=false
  • 如果您将我的答案标记为解决方案应该会很棒
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-06-21
  • 2016-04-07
  • 1970-01-01
  • 2016-07-25
  • 1970-01-01
  • 1970-01-01
  • 2017-09-19
相关资源
最近更新 更多