本帖最后由 linux 于 2017-4-28 17:55 编辑
1 问题(1) Android sutdio第一次打开一个工程巨慢怎么办?
(2) 手动配置Gradle Home为什么总是无效?
(3) 明明已经下载了Gradle,配置了gradle home,为什么打开工程还是去自动下载Gradle? 2 简介(1) Android Studio怎么知道该用哪个Gradle呢?
AS一个项目所用的Gradle是由我们的工程中下面这个文件决定的: {your project}/gradle/wrapper/gradle-wrapper.properties
文件内容如下: - #Mon Sep 28 16:15:03 CST 2015
- distributionBase=GRADLE_USER_HOME
- distributionPath=wrapper/dists
- zipStoreBase=GRADLE_USER_HOME
- zipStorePath=wrapper/dists
- distributionUrl=https\://services.gradle.org/distributions/gradle-2.4-all.zip
复制代码最后一排的distributionUrl 决定了这个项目使用的gradle版本,也就是说不同的项目可以使用不同的gradle版本,这也就是为什么修改Gradle Home失败的原因。那么我们怎么知道gradle有哪些版本呢?答案是下面这个链接: 所以只要对着上面的链接,修改后面的gradle版本就可以了. (2) Gradle保存在哪里?
Gradle是大家共用的,当然不会把Gradle放在项目文件中(不是不可以),AS将gradle保存在下面的目录:
Linux: ~/.gradle/wrapper/dists
windows: C:\users\{user name}\.gradle\wrapper\dists
打开这个目录,可以看到下载好的gradle版本 Android Studio打开一个工程时,首先会读取gradle-wrapper.properties 文件,从而知道这个工程需要哪个版本的gradle ,然后就会去保存gradle的文件夹GRADLE_USER_HOME 去找看存不存在这个版本的gradle,不存在则会去distributionUrl 去下载
搞清楚了这个流程,现在是不是明白了,为什么第一次打开一个工程会巨慢了吧,因为AS会去下载gradle。为什么我明明下载了gradle,也指定了gradle的存放目录,可打开的时候还是会去自动下载gradle了,那是因为你没有配对地方。现在回过来看项目配置文件是不是gradle/wrapper/gradle-wrapper.properties 是不是恍然大悟? 3 配置方法既然搞清楚了原理,也知道打开慢的原因是卡在下载gradle这一步,那么我们就自己下载gralde,然后配置上去
(1) 修改gradle-wrapper.properties
修改gradle-wrapper.properties 中的 distributionUrl,改成我们想要的版本,只改后面的版本就可以了,前面的部分不要改。具体版本看下面链接: (2) 打开项目
这个时候AS将自动下载gradle,并创建好目录。这时直接干掉Android Studio并退出,因为这一步是为了得到AS自动创建的下载目录,定位到下面的目录:
Linux: ~/.gradle/wrapper/dists
windows: C:\users\{user name}\.gradle\wrapper\dists
进入对应的gradle版本文件夹下,会发现有一个一串乱码的文件夹,本例以gradle2.4为例,如下图:
(2) 下载gradle
从上面的Gradle下载地址,下载对应版本的gradle,本例中为gradle-2.4-all.zip,然后删除上图中的gradle-2.4-all.zip.part文件,将下载的gradle-2.4-all.zip复制到上图中一串乱码的文件夹下,注意不要解压。这样我们就跳过了下载gradle这一步。 (3) 重新开启Android Studio,打开工程,ok,一下子就打开了. 4 Gradle 插件版本gradle插件和gradle是两个独立的东西,gradle插件版本是由项目最外层的build.gradle文件决定的
app/build.gradle: - buildscript {
- repositories {
- jcenter()
- }
- dependencies {
- classpath 'com.android.tools.build:gradle:2.1.0'
- // NOTE: Do not place your application dependencies here; they belong
- // in the individual module build.gradle files
- }
- }
复制代码
修改gradle插件版本之后,sync一下代码就可以了。 http://blog.csdn.net/fuchaosz/article/details/51567808 |