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

Aut*_*pps 3 android android-studio android-gradle-plugin

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

Error:org.gradle.api.internal.tasks.DefaultTaskInputs$TaskInputUnionFileCollection cannot be cast to org.gradle.api.internal.file.collections.DefaultConfigurableFileCollection
Run Code Online (Sandbox Code Playgroud)

此意外错误的可能原因包括:

  • Gradle的依赖缓存可能已损坏(这有时会在网络连接超时后发生.)重新下载依赖项并同步项目(需要网络)
  • Gradle构建过程(守护程序)的状态可能已损坏.停止所有Gradle守护进程可以解决此问题.停止Gradle构建过程(需要重启)
  • 您的项目可能正在使用第三方插件,该插件与项目中的其他插件或项目请求的Gradle版本不兼容.
在损坏的Gradle进程的情况下,您还可以尝试关闭IDE,然后终止所有Java进程.


所提出的解决方案都没有奏效.我还尝试使缓存无效并手动删除Gradle缓存以强制重新下载依赖项和包装器.

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

Aut*_*pps 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.

完成后,Android Studio终于屈服于同步我的项目.但是,当我真正尝试构建项目时,我遇到了这个众所周知的bug.我拒绝"解决"这个错误,因为禁用测试覆盖是一个非首发.

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

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

如果我在这听起来很讽刺,我道歉,但Android Studio团队发布他们的IDE的"稳定"版本是非常令人沮丧的,这个版本没有文档记录,(接近?)破坏性更改.他们试图强制"升级"到具有已知严重缺陷的构建工具(哦,但它只是测试,谁在乎呢?)是错误的.