解决 AS Gradle 一直 Buildling 或 refreshing 的问题


问题

在我们升级 Android Studio 版本,或者修改了项目中 Gradle 相关的配置,导致打开项目一直在 Buildling 或者 refreshing。

要解决这类问题,需要 Gradle 和 Android Studio 关于 Gradle 配置的知识,下面先说一下 Android Studio 项目 Gradle 相关的几个概念。

Gradle

Gradle 是一种构建项目工具。

Gradle 插件

在项目的 build.gradle 文件中有这样一句配置:

classpath 'com.android.tools.build:gradle:2.3.0'

这里的版本是 Gradle 插件的版本而不是 Gradle 版本。每个版本插件都有对应要求最低的 Gradle 版本。

gradle\wrapper 目录

这个目录是所在项目默认的 gradle 环境。

wrapper 是针对所在项目的,只在所在项目内起作用,没有安装在本地,否则所有的项目都使用一个 Gradle 版本,如果两个项目使用的是不同的 Gradle 版本,就没办法区别了,所以 Google 使用 gradle 插件实现了 wrapper,可以给每个项目配置需要的 Gradle 版本。

gradle-wrapper.properties 文件

通常,建好一个新项目,该文件的内容如下:

#Fri Mar 03 15:53:44 CST 2017
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-3.3-all.zip

前几项是 Gradle 的目录,最后一个是需要的 Gradle 版本的 Url。

studio安装目录\gradle

这个目录是 Studio 新建项目默认使用的 Gradle 版本。

6.C:\Users\用户名.gradle\wrapper\dists

所有的 Gradle 版本 gradle-版本号-allgradle-版本号-bin 都保存在这里。

解决问题

知道了上面那些概念,现在来看看怎样解决问题。

出现这种问题的原因是 Android Studio 在为我们下载需要的 Gradle,而由于网络不好还是 Studio 下载东西本身就慢的原因导致我们等很长时间,最终放弃,重启 Studio,building,重启 Studio…

有两种情况:

  1. Studio 版本升级,需要升级默认的 Gradle
  2. gradle-wrapper.properties 文件 中的 distributionUrl 指向的 Gradle 版本,本地不存在

问题 1 解决方案

1.等,pass,有时候下载不下来等再长时间也是白玩。

2.打开 C:\Users\用户名\.gradle\wrapper\dists 目录,进入到最新的 Gradle 目录里。 如升级 Studio 需要 gradle-3.3-all 版本。那么用浏览器访问 https://services.gradle.org/distributions/gradle-3.3-all.zip 下载 gradle3.3-all 版本压缩包,进入 C:\Users\用户名\.gradle\wrapper\dists\gradle-3.3-all\55gk2rcmfc6p2dg9u9ohc3hw9 目录中,删除除 gradle-3.3-all.zip.lck 文件外的所有文件夹和文件,复制浏览器下载好的 gradle-3.3-all.zip 到该目录,重新打开 Studio 即可。

问题 2 解决方案

1.查看 gradle-wrapper.properties 要求的 Gradle 版本,去 C:\Users\用户名\.gradle\wrapper\dists 目录中看看对应版本目录下有没有对于 Gradle 版本的 zip包,没有的话,下载好丢进来即可,和问题 1 的解决方案一样。

2.因为 Studio 项目默认使用项目中的 Gradle 版本,即 gradle-wrapper.properties 文件配置的 Gradle 版本。我们下载不到 Gradle 的时候,可以给当前项目设置本地存在的 Gradle 版本。

gradle_setting.png

这时候可能会报错:

Error:(1, 0) Minimum supported Gradle version is 3.3. Current version is 3.2.

这是因为给本项目配置的 Gradle 版本没有达到 classpath 'com.android.tools.build:gradle:2.3.0' gradle 插件要求的最低版本,插件版本改小点就行。 这是 Gradle 插件各个版本的信息

总结

出现 Gradle 一直 Buildling 或 refreshing 的问题是因为 Android Studio 在下载依赖的 Gradle 版本太慢,解决方案最好是自己下载需要的 Gradle 版本压缩包,丢进对应目录即可。

评论