升级到Android Studio 2.3后无法同步Gradle

3

这种情况有时会发生,但我似乎无法解决它。从命令行构建项目没有问题。这是错误信息:

Error:org.gradle.api.internal.tasks.DefaultTaskInputs$TaskInputUnionFileCollection cannot be cast to org.gradle.api.internal.file.collections.DefaultConfigurableFileCollection

这个意外错误可能的原因包括:
  • Gradle的依赖缓存可能已经损坏(这在网络连接超时后有时会发生)。重新下载依赖项并同步项目(需要网络)
  • Gradle构建进程(守护程序)的状态可能已经损坏。停止所有Gradle守护程序可能会解决此问题。停止Gradle构建过程(需要重新启动)
  • 您的项目可能正在使用与项目中的其他插件或项目所请求的Gradle版本不兼容的第三方插件。
在出现Gradle进程损坏的情况下,您还可以尝试关闭IDE,然后杀死所有Java进程。
没有一个提出的解决方案起作用。我也尝试了无效缓存和手动删除Gradle缓存以强制重新下载依赖项和包装器。

编辑:“升级到最新的构建工具和Gradle版本”不是一个解决方案,因为这个问题仍然存在。目前该问题的解决方法是“暂时禁用测试覆盖”。由于这个问题最初是6个月前报告的(尽管它被评为“关键”),解决方法不仅不好,而且不是暂时的。


不是这样的。这是另一个问题。而且,这个问题已经在5个月前被提问并有了一个被接受的答案。明确一下,这个问题/答案是关于如何_避免_更新Gradle的,而不是更新AS,也不是关于Gradle的。 - AutonomousApps
1个回答

5
问题对我来说似乎已经解决了。这是我所做的,包括我为什么认为它有效的猜测。
  1. 将项目的 Android Gradle Build Tools 从 2.1.2 升级到 2.3.0('com.android.tools.build:gradle:2.3.0')
  2. 将 Gradle wrapper 从 2.14 升级到 3.3
  3. 将 buildToolsVersion 从 23.0.3 升级到 25.0.0。
这样做后,Android Studio 终于同步了我的项目。但是,当我尝试构建项目时,我遇到了这个众所周知的 bug。我拒绝“解决”此错误,因为禁用测试覆盖率是不可行的。
确认该 bug 在最新的构建工具中仍然存在后,我撤消了更改并让 AS 再次同步我的项目。哇,它奏效了。

我猜测这次它成功的原因是,更改了两次构建工具强制进行了一些文件系统更改,而我之前只是删除了~/.gradle/caches/~/.gradle/daemon/目录中的一些目录。

如果我听起来有点讽刺,我很抱歉,但对于Android Studio团队发布一个有未记录的、接近破坏性的变化的“稳定”版本的IDE非常令人沮丧。他们试图强制升级到一个已知存在重大缺陷(哦,但那只是测试,谁在乎呢?)的构建工具,这是错误的。


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