Androidstudio開啟巨慢的問題-解決方案
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=
1
2
3
4
5
6
1
2
3
4
5
6
最後一排的distributionUrl 決定了這個專案使用的gradle版本,也就是說不同的專案可以使用不同的gradle版本,這也就是為什麼修改Gradle Home失敗的原因。那麼我們怎麼知道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,改成我們想要的版本,只改後面的版本就可以了,前面的部分不要改。具體版本看下面連結:
Gradle下載地址:https://services.gradle.org/distributions/
(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
}
}
1
2
3
4
5
6
7
8
9
10
11
1
2
3
4
5
6
7
8
9
10
11
修改gradle外掛版本之後,sync一下程式碼就可以了。