本文基于以下环境:
系统:Ubuntu 15.10
Android Studio:2.2.3
其他系统的操作类似。
在使用 Android Studio
(以下简称 AS)导入安卓项目时,经常会在 Gradle build 时卡在 Building gradle project info 的界面上。
出现这种现象往往是因为被导入项目的 Gradle 构建工具版本与当前使用的版本不一致。因为某些网络原因使得 Android Studio 在后台下载Gradle速度较慢,导致 AS 出现假死的现象。
实际上AS一直在后台下载 Gradle 工具,通过 Ubuntu 的终端可以看到下载的情况:
AS 终端日志:
Downloading https://services.gradle.org/distributions/gradle-2.12-all.zip
................................................................
................................................................
//下载成功
Unzipping /home/<user>/.gradle/wrapper/dists/gradle-2.12-all/8ywkdai6puj5z81fume4e7njw/gradle-2.12-all.zip
to /home/<user>/.gradle/wrapper/dists/gradle-2.12-all/8ywkdai6puj5z81fume4e7njw
Set executable permissions for: /home/<user>/.gradle/wrapper/dists/gradle-2.12-all/8ywkdai6puj5z81fume4e7njw/gradle-2.12/bin/gradle
//...
Gradle 版本配置的位置
在说明解决方案前我们介绍一下 Android Plugin for Gradle 和 Gradle 构建工具的版本配置位置(Gradle 配置构建)。
Android Plugin for Gradle 的版本配置位置
顶级 build.gradle 文件位于项目根目录,用于定义适用于项目中所有模块的构建配置。
在项目的顶级构建文件中,我们配置了 Android Plugin for Gradle 的版本。
buildscript {
/**
* The repositories {} block configures the repositories Gradle uses to
* search or download the dependencies. Gradle pre-configures support for remote
* repositories such as JCenter, Maven Central, and Ivy. You can also use local
* repositories or define your own remote repositories. The code below defines
* JCenter as the repository Gradle should use to look for its dependencies.
*/
repositories {
jcenter()
}
/**
* The dependencies {} block configures the dependencies Gradle needs to use
* to build your project. The following line adds Android Plugin for Gradle
* version 2.2.0 as a classpath dependency.
*/
dependencies {
classpath 'com.android.tools.build:gradle:2.2.0'
}
}
要注意 Android Plugin for Gradle 版本不同于Gradle 版本,Gradle Plugin 是 AS 用来构建安卓App的一个插件,提供了一些针对Android 应用的特征。Gradle 工具是用来自动化执行和管理构建流程,同时也允许您定义灵活的自定义构建配置的高级构建工具(类比Maven/Ant等)。Android Plugin for Gradle 与这个构建工具包协作,共同提供专用于构建和测试 Android 应用的流程和可配置设置(Android 官网介绍)。
安卓插件版本与Gradle版本的对应关系:
Plugin version | Required Gradle version |
---|---|
1.0.0 - 1.1.3 | 2.2.1 - 2.3 |
1.2.0 - 1.3.1 | 2.2.1 - 2.9 |
1.5.0 | 2.2.1 - 2.13 |
2.0.0 - 2.1.2 | 2.10 - 2.13 |
2.1.3+ | 2.14.1+ |
Gradle 构建工具版本配置位置
Gradle 构建工具版本则配置在工程项目的gradle/wrapper/gradle-wrapper.properties
文件中
...
distributionUrl = https\://services.gradle.org/distributions/gradle-2.14.1-all.zip
...
解决方案
回到正题,解决这个 Gradle 工具下载问题有两个方案:第一,手动下载 Gradle 构建工具;第二,使用当前可用的 Gradle 构建工具。
手动下载 Gradle 构建工具
1/ 导入工程,卡在Building gradle project info的界面时,强制退出AS。这一步主要是为了生成第四步需要用到的 t7wfomcrmv8dmyii9c9waem8
文件夹。
2/ 查看需要导入的工程目录下的 gradle/wrapper/gradle-wrapper.properties
文件,查看当前使用的 Gradle 版本。
distributionUrl = https\://services.gradle.org/distributions/gradle-2.14.1-all.zip
3/ 从Gradle 下载页面下载相应版本的Gradle Distribution。
4/ 将下载的.zip复制到如下位置:
ubuntu:/home/.gradle/wrapper/dists/gradle-2.14.1-all/t7wfomcrmv8dmyii9c9waem8
win7:C:\Users\Administrator\.gradle\wrapper\dists\gradle-2.14.1-all\8bnwg5hd3w55iofp58khbp6yv
注意:t7wfomcrmv8dmyii9c9waem8
这个随机数文件夹是第一步导入时AS 自动生成的,每个人有可能不一样
5/ 重新启动 AS ,导入项目。
使用当前可用的 Gradle 构建工具
1/ 新建一个 AS 项目或者打开一个已有的可以运行的项目。
2/ 查看可运行项目工程目录下的 gradle/wrapper/gradle-wrapper.properties
文件,查看当前使用的Gradle 版本。
distributionUrl = https\://services.gradle.org/distributions/gradle-2.4-all.zip
3/ 复制distributionUrl这一整行的内容:
distributionUrl=https\://services.gradle.org/distributions/gradle-2.4-all.zip
4/ 将复制内容粘贴到导入工程gradle/wrapper/gradle-wrapper.properties
文件的相应位置,替换原有的 distributionUrl
。
5/ 打开可运行项目的顶级构建文件,查看当前插件版本
dependencies {
classpath 'com.android.tools.build:gradle:1.3.1'
}
6/ 修改导入工程的顶级构建文件中的插件版本。
7/ 重新使用 AS 导入工程。
总结
第一种解决方案同样需要下载 Gradle ,手动下载的速度依据网络情况不同下载时间也不一样。
例如gradle-2.14.1-all.zip的压缩包大小约为 60 MB,亲测下载时间大概 5 分钟。
第二种解决方案操作相对繁琐,但是不需要下载 Gradle 工具。但是需要注意 Plugin 的版本和 Gradle 构建工具版本的对应情况。
不同版本 Gradle 构建工具的方法有不一致的地方,为了避免出现项目构建失败或者引起其他问题,在这里比较推荐第一种解决方案。
如果有 VPN ,直接导入工程,然后等待下载完成,亲测下载时间根据网络情况4-10分钟不等。