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

时间:2017-03-04 19:39:10

标签: android android-studio android-gradle

这种情况经常发生,但这次我似乎无法解决。项目从命令行构建良好。这是错误:

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版本”是而不是解决方案,因为this问题仍然存在。目前 问题的解决方法是暂时禁用测试覆盖率。由于该问题最初是在6个月前报告的(尽管它被分类为“关键”),但解决方法不仅是坏的,而且不是暂时的。

1 个答案:

答案 0 :(得分:5)

这个问题似乎已经解决了。这就是我所做的,包括我猜测它为何起作用。

  1. 我将'我的项目的Android Gradle Build Tools从2.1.2升级到2.3.0('com.android.tools.build:gradle:2.3.0'
  2. 我将Gradle包装器从2.14升级到3.3
  3. 我将buildToolsVersion从23.0.3升级到25.0.0。
  4. 完成后,Android Studio终于屈服于同步我的项目。但是,当我实际尝试构建项目时,我遇到了这个well known bug。我拒绝“解决”这个错误,因为禁用测试覆盖是一个非首发。

    确认错误仍然存​​在于最新的构建工具中,我解除了我的更改并让AS再次同步我的项目。 Voilà,它有效。

    推测这次工作有效,因为更改构建工具两次会强制我在我的~/.gradle/caches/~/.gradle/daemon/目录中删除某些目录时遗漏的一些文件系统更改

    如果我听起来很讽刺,我道歉,但Android Studio团队发布他们的IDE的“稳定”版本是非常令人沮丧的,该版本没有记录,(接近?)突破性变化。让他们试图强制“升级”到具有已知严重缺陷的构建工具(哦,但它只是测试,谁关心它?)是错误的。