解决 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-版本号-all
或 gradle-版本号-bin
都保存在这里。
解决问题
知道了上面那些概念,现在来看看怎样解决问题。
出现这种问题的原因是 Android Studio 在为我们下载需要的 Gradle,而由于网络不好还是 Studio 下载东西本身就慢的原因导致我们等很长时间,最终放弃,重启 Studio,building,重启 Studio...
有两种情况:
- Studio 版本升级,需要升级默认的 Gradle
- 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 版本。
这时候可能会报错:
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 版本压缩包,丢进对应目录即可。