Android Studio 卡在 Building ‘xxx’
Android Studio 打开一个 android 项目目录时,它调用 Gradle 工具来编译项目,相当于在项目目录下运行 ./gradlew
命令(Windows 上则是运行 gradlew.bat
)。
gradlew
就是 Gradle Wrapper 的缩写,gradlew
命令在执行时会下载配置文件<ProjectDir>/gradle/wrapper/gradle-wrapper.properties
中 distributionUrl
指定的 Gradle 版本, gradle-wrapper.properties 文件内容如下:
#Sat Jun 24 21:38:23 PDT 2017distributionBase=GRADLE_USER_HOMEdistributionPath=wrapper/distszipStoreBase=GRADLE_USER_HOMEzipStorePath=wrapper/dists#distributionUrl=https\://services.gradle.org/distributions/gradle-4.0-rc-1-all.zipdistributionUrl=http\://127.0.0.1:8080/gradle-4.0-rc-1-all.zip1234567812345678
在国内访问 services.gradle.org 是很慢的,所以会一直在下载 gradle-xxx.zip 文件,不信请在项目目录下执行 gradlew
命令。
解决办法
让 Gradle Wrapper 从本地下载 gradle-xx-all.zip 文件,方法:
使用迅雷下载对应的 Gradle 工具包文件: https://services.gradle.org/distributions/gradle-4.0-rc-1-all.zip,保存在本地 D:\Download 目录。
本地启动一个 Web 服务器,让我们可以通过 http://127.0.0.1:8080/gradle-4.0-rc-1-all.zip 下载该文件。
安装有 NodeJS 的机器:使用命令终端
npm install -g http-server
或者 live-server,然后使用终端命令http-server .
快速启动一个 Web Server;安装有 Python 的机器:使用终端命令
python -m SimpleHTTPServer 8080
快速启动一个 Web Server;
修改 <ProjectDir>/gradle/wrapper/gradle-wrapper.properties
中 distributionUrl
的值为http://127.0.0.1:8080/gradle-4.0-rc-1-all.zip
(请使用自己的本地 Web服务器地址)
macOS/Linux 用户打开终端,Windows 用户打开命令行窗口,并使用 cd
切换到项目目录下,接着执行 ./gradlew
命令(Windows 用户直接执行 gradlew.bat
命令)。
在命令执行成功后使用 Android Studio 打开项目,如果你的 Android Studio 已经卡在 Building Project … ,强制结束 AS 进程。
另外,Windows 用户似乎还有一种方法,修改 gradle/wrapper/gradle-wrapper.properties 文件中的键 distributionUrl
的值为 D:\download\gradle-xx.all.zip