Android Studio 导入工程Building gradle project info页面假死解决方案

本文基于以下环境:
系统: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 versionRequired Gradle version
1.0.0 - 1.1.32.2.1 - 2.3
1.2.0 - 1.3.12.2.1 - 2.9
1.5.02.2.1 - 2.13
2.0.0 - 2.1.22.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分钟不等。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值