Android Studio导入项目非常慢的解决办法
问题
Android Studio目前已经更新到2.0 Preview 6了,作为Google大力推崇的开发工具,相对于Eclipse ADT有着不可比拟的优势。然而在实际使用时,依然有不少不爽的地方。Android Studio原生支持使用Gradle来构建项目本是个不错的想法,使用动态语言Groovy定义项目构建过程,避免了build.xml文件的繁琐定义。但是Gradle的二进制包体积较大,而且用户可能按照了不同的Gradle版本,构建时可能会出现各种问题。因此又提出了Gradle Wrapper这么个东西,用于解决前面出现的问题。Gradle Wrapper会绑定到一个指定的Gradle版本。当用户导入项目工程时,会自动到远程服务器上下载Gradle包。这样解决了客户端版本不一致的问题,但是也带来了一个新的问题:国内连接到远程服务器下载Gradle包的速度非常慢!所以,每当从Github下载下来一个新项目导入到Android Studio时,都会卡在这个界面:
你不知道到底是AS死了,还是它确实在后台做些什么……要么就耐着性子等,要么就直接关掉AS,而且必须是强制关闭。这一点做的非常不友善。实际上,之所以卡在这,就是因为后台在服务器下载Gradle包。而这个Gradle包往往有几十兆,在网络环境不太好的情况下,可能要下很久才能完成。显然,我们没有这么多时间在这耗着,需要找个办法来解决了。
解决方法
在网络上搜罗了一番,通常的做法是修改Gradle Wrapper配置文件中的Gradle版本,但是都不太完整。最后在这里看到了完整点的解决方法。精简下主要如下几个步骤:
一、 先获取本机相关参数,包含如下几个(括号中是我本人机器的参数):
1.Android Plugin Version:(1.5.0)
2.Gradle Version:(2.8)
3.Compile SDK Version:(23)
4.Build Tools Version:(23.0.2)
5.GradleHome:(/Applications/Android Studio.app/Contents/gradle/gradle-2.8)
二、参数准备好了,即可开始修改目标项目的参数。需要修改的参数位于哪些文件呢?
-
- xxx-project/.idea/gradle.xml文件:添加或修改<option name="gradleHome" value="前面的GradleHome参数" />
- xxx-project/gradle/wrapper/gradle-wrapper.properties文件:distributionUrl=https\://services.gradle.org/distributions/gradle-前面的gradleVersion-all.zip
- xxx-project/build.gradle文件:classpath 'com.android.tools.build:gradle:前面Android Plugin Version' (这个是整个project的配置)
- xxx-project/build.gradle文件:修改Compile SDK Version和Build Tools Version参数。(这个是单个module的配置,project中每个module都需要修改)
三、参数修改完成,开始正式导入项目。一般情况下,这时候可以很顺利的就导入到Android Studio中来了。如果仍然卡在导入界面,那么只能乖乖的等了……
四、实例:
开始导入新工程
一般导入工程,就是直接导入新的工程。但是这也就造成了配置不对,一直卡在gradle的下载途中等各种问题。获取本机的配置信息,就是为了能够免去各种下载,各种配置等容易出错的步骤,从而一次性(至少不会卡住不动)导入成功。
进入我们用来测试的Android-Skin-Loader工程,用Sublime Text 打开(这个工具也是很好用的编辑器)。似乎这个工程比我们建的ConfigApplication要复杂很多。。工程就有三个。。。似乎不是很好对付啊!!!
接下来就是开始修改原有工程的配置文件了。开始吧!
修改Gradle Home
Gradle home 的配置信息在这里:
Android-skin-loader/.idea/gradle.xml中:
将这个设置为Config中的对应的值: D:\Program Files\Android Studio\gradle\gradle-2.2.1
修改Gradle Version
Gradle Version的信息在这里:
Android-skin-loader/gradle/wrapper/gradle-wrapper.properties
修改为Config的值:2.2.1
修改Android Plugin Version
Android Plugin Version 的信息在这里:
Android-skin-loader/build.gradle
修改为Config的值:1.2.3
修改Compile SDK Version 和Build Tools Version
Android-skin-loader有三个工程哦,所以这三个工程中都需要修改SDK Version 和Tools Version。 这些信息都在对应工程下的build.gradle中:
这里都改成Config中获取到的值:23 和23.0.1
至此,所有的配置基本上都改完了。下面终于可以导入了:
如果一切顺利,就会build finish啦:
但是,如果
很不幸:还是卡住了,具体问题具体分析
导入之后,比如会卡在某个地方:
Android Studio就这点不好,不知道到底后面在做什么。。Cancel也不起作用。(不知道这个cancel用来干嘛的,假动作?)
我个人的经验告诉我:一般都是出现在项目中的build.gradle中。还是拿Android-skin-loader来说:打开sample下的build.gradle文件,我们会看到一堆我们不熟悉的代码(和ConfigApplication的对比):
可以看到,左边的sample的gradle多了一堆。。。粗略看一下这些代码,就知道和项目编译是没有什么关系的,就可以删掉这些代码了。
对于其他工程下的build.gradle文件,也同样的可以删掉一些多余的配置。这样能够简化gradle的配置,能够最小程度的满足gradle编译运行的条件。
以上就是我的经验总结了。希望能帮助到大家。