大家都是怎樣處理Gradle中的這個文件下載慢的問題的?

如圖:在build.gradle中的dependencies中加上要依賴的包後,就點擊sync gradle。然後就開始了下載。在此過程中我是翻牆了的(在此同時我是可以用chrome進入https://jcenter.bintray.com/這個網址的)。可是速度依舊是那麼感人,二十多分鐘都在下載一個東東,我按上面的網址進去找到要下載的那個文件發現它很小,才幾十k而已,不至於用AS下載的這麼慢的。肯定是我哪裡沒搞好。。你們怎麼看???

-----------------------------------------------------------------

大家幫我邀請寫大神來看看吧。。我是新手,謝謝了


使用阿里雲的國內鏡像倉庫地址,就可以快速的下載需要的文件

修改項目根目錄下的文件 build.gradle :

buildscript {
repositories {
maven{ url "http://maven.aliyun.com/nexus/content/groups/public/"}
}
}

allprojects {
repositories {
maven{ url "http://maven.aliyun.com/nexus/content/groups/public/"}
}
}

然後選擇重新構建項目就可以了

===========分割線===================

更新:上面那段代碼 只要把兩個repositories里的內容替換掉就好了,buildscript里還有一個dependencies不要刪除,要不會報錯

我發現有好幾個人直接把上面一整段給複製進去了


是因為 gradle 沒有走代理。

如果是 socks5 代理 ,如下這樣設置其實並沒有什麼卵用

#systemProp.socks.proxyHost=127.0.0.1
#systemProp.socks.proxyPort=7077

#systemProp.https.proxyHost=127.0.0.1
#systemProp.https.proxyPort=7077

#systemProp.https.proxyHost=socks5://127.0.0.1
#systemProp.https.proxyPort=7077

正確設置方法應該是這樣:
org.gradle.jvmargs=-DsocksProxyHost=127.0.0.1 -DsocksProxyPort=7077

修改 $HOME/.gradle/gradle.properties 文件,加入上面那句,這樣就可以全局開啟 gradle 代理


關閉AS,進入

C:Usersxxx.gradlewrapperdists

這個目錄,會看到"gradle-2.4-all"的目錄,如圖

進入Gradle下載頁面:Download Gradle l Open Source Enterprise Build Automation,右下角:

選擇對應的版本下載,比如我這裡的是2.4

最後將剛剛下好的zip文件放到這個目錄

C:Usersxxx.gradlewrapperdistsgradle-2.4-all

重新打開AS即可。


// Top-level build file where you can add configuration options common to all sub-projects/modules.
ext {
compileSdkVersion = 23
buildToolsVersion = "23.0.3"
minSdkVersion = 8
targetSdkVersion = 22
}

buildscript {
repositories {
jcenter()
}
dependencies {
classpath "com.android.tools.build:gradle:1.5.0"

// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}

allprojects {
repositories {
jcenter()
}
}

task clean(type: Delete) {
delete rootProject.buildDir
}


找到項目目錄gradlewrappergradle-wrapper.properties這個文件

你會看到

distributionBase=GRADLE_USER_HOME

distributionPath=wrapper/dists

zipStoreBase=GRADLE_USER_HOME

zipStorePath=wrapper/dists

distributionUrl=https://http://services.gradle.org/distributions/gradle-2.8-all.zip

然後找到 gradle-2.8-all.zip 這就是你要下載的版本,去某度搜一個下載下來

然後找到 C:UsersXXXX.gradlewrapperdists下面會有一個文件夾,拷貝進去,搞定。

關閉項目,重新打開完美!


不要用Android Studio下載gradle,無論如何都不走代理,

看見它在下載就馬上強行殺進程,因為關不掉的,

然後用命令行指定代理,

./gradlew -DsocksProxyHost=127.0.0.1 -DsocksProxyPort=1080 tasks

只要第一次加入這個參數下載zip包,以後就會讀取gradle.properties,

也可以直接把這個參數加到環境變數GRADLE_OPTS里,再用./gradlew,

export GRADLE_OPTS="-DsocksProxyHost=127.0.0.1 -DsocksProxyPort=1080"

在properties里設置的代理在下載依賴時有用,但是下載gradle本身時不生效,

然而,無論怎麼設置,AndroidStudio也不會走代理下載gradle,包括AS設置里指定的gradle jvm opts,

至於下載依賴,包太小看不出來,但properties里的設置應該是有效的,


需要設置代理,在 Android Studio 的設置中設置 proxy 外後,會自動提示你更新 gradle 的代理。

特別注意的是,OS X 系統下 shadowsocks 沒有 http 代理 所以你需要一個中轉代理,例如 cow


有條件的話,搭建maven私服。

可以利用Nexus來建,然後修改maven的下載URL就好了。


VPN換個gateway就好了,我剛開始用的是香港的,半天一直不動,換了個台灣的就OK了


配置成本地,具體知乎搜索「離線配置gradle」中我的回答,可能不起作用


國內鏡像可以用阿里雲的方案解決,oschina 的已經很早關停了。但阿里雲的同步速度會有延遲,請不要盲目追新,具體配置參見 @DIABLOHL 的回答。

gradle 建議使用 gradlew 方案,通過修改項目根目錄的 gradle/wrapper/gradle-wrapper.properties:

distributionUrl=https://services.gradle.org/distributions/gradle-3.5-bin.zip

如果沒有特別依賴和要求,不要設置為 gradle-x.x-all,此包包含了源碼和文檔下載體積會變的很大,通常如果只是日常使用使用 gradle-x.x-bin 即可。gradle 的鏡像可以使用:常用工具的CDN鏡像 Chrome Android Studio Gradle VSCode NodeJS 提供的下載包,更新如下:

distributionUrl=https://mirrors.flysnow.org/gradle/gradle-3.5-bin.zip

注意鏈接裡面的反斜杠,否則會報錯的。

小 Tips

如果你在 gradle.properties 配置了代理,請添加一個不走代理的配置,否則 gralde 無法安裝

systemProp.http.proxyHost=mirrors.neusoft.edu.cn
systemProp.http.proxyPort=80

# 添加不走代理的 host,會影響 package 的安裝
systemProp.http.nonProxyHosts=172.1.1.227|localhost|mirrors.flysnow.org


常用解決方案:

解決方案一:

最簡單直接的方案購買VPN

解決方案二:

使用國內鏡像,阿里雲單個項目修改使用,build.gradle 中修改文件如下:

buildscript {
repositories {
maven { url "http://maven.aliyun.com/nexus/content/groups/public/" }
maven{ url "http://maven.aliyun.com/nexus/content/repositories/jcenter"}
}
dependencies {
classpath "com.android.tools.build:gradle:2.2.3"

// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}

allprojects {
repositories {
maven { url "http://maven.aliyun.com/nexus/content/groups/public/" }
maven{ url "http://maven.aliyun.com/nexus/content/repositories/jcenter"}
}
}

解決方案三:

使用國內鏡像阿里雲,全局配置USER_HOME/.gradle/文件夾下,創建文件init.gradle

allprojects{
repositories {
def ALIYUN_REPOSITORY_URL = "http://maven.aliyun.com/nexus/content/groups/public"
def ALIYUN_JCENTER_URL = "http://maven.aliyun.com/nexus/content/repositories/jcenter"
all { ArtifactRepository repo -&>
if(repo instanceof MavenArtifactRepository){
def url = repo.url.toString()
if (url.startsWith("https://repo1.maven.org/maven2")) {
project.logger.lifecycle "Repository ${repo.url} replaced by $ALIYUN_REPOSITORY_URL."
remove repo
}
if (url.startsWith("https://jcenter.bintray.com/")) {
project.logger.lifecycle "Repository ${repo.url} replaced by $ALIYUN_JCENTER_URL."
remove repo
}
}
}
maven {
url ALIYUN_REPOSITORY_URL
url ALIYUN_JCENTER_URL
}
}
}


作為Android開發工程師,還是買個vpn吧


1、如果僅僅是首次運行安裝gradle的話,這個問題比較好解決,到 Gradle Distributions 下載需要的版本到本地,修改 /project/gradle/gradle-wrapper.properties文件中的 distributionUrl 為本地可訪問的地址,打開命令行切換到項目根目錄,執行 gradlew 即可解決gradle下載慢的問題。

distributionUrl=http://127.0.0.1/gradle-2.14-all.zip

2、如果是解決項目中的依賴,最好的方法就是更換一些速度比較快的鏡像,貌似 github 上的大牛們用 http://jitpack.io 的比較多,具體快不快沒有多少感覺,大部分說改成開源中國的源,好像用不了了。


如 上面 @波特 所說的,修改「$HOME/.gradle/gradle.properties」文件(沒有則新建),添加一行:

org.gradle.jvmargs=-DsocksProxyHost=127.0.0.1 -DsocksProxyPort=****

要注意的是,用 Gradle Build 時,會彈出對話框問要不要將 Android Studio 的代理應用到 Gradle,如下圖:

這裡一定要選「取消」!否則,本項目會自動生成一個 gradle.properties,從而覆蓋了剛才的全局設置。(我卡在這邊好久……


最近玩RN,差點被這個問題折磨瘋。下面提供我的方法。(以缺少2.14.1版本為例)

1. 不管什麼需要的是什麼版本,先運行一遍項目,等AS或者命令行開始下載時 ,手動停止下載

2. 去網上找到需要的gradle版本的壓縮包,(推薦去csdn下載)我們可以下載得到一個gradle-2.14-1-all.zip壓縮包

3. 找到如下路徑(這裡以mac為例)

  • /Users/你的用戶名/.gradle/wrapper/dists/gradle-2.14-1-all

4. 你會發現上述路徑下存在一文件名很奇怪的文件夾,打開這文件夾,刪除裡面的內容,將第二步下載好的壓縮包(注意是壓縮包)拷貝進該文件夾

5. 再次運行你的android項目,你發現又可以愉快的玩耍了。


自己下載咯,然後指定它


翻牆啊


我遇到的有兩種情況下載慢

祁連山 的回答比較全面 兩種情況都涵蓋了

其中依賴包下載慢有幾種解決方案

1.ss代理

2. android-mirror.bugly.qq.com 等ip代理

3.國內maven

4.自己搭maven服務

自己的理解


不太理解為啥很多人回答的都是怎麼離線gradle-版本-all.zip,就算是離線gradle,除了大家提到的,如果你已經裝好了android studio,去看一下安裝目錄裡面的gradle目錄,看清楚版本號,然後改一下gradle-wrapper的配置,就不需要去下載gradle,注意可能工程根目錄下build.gradle中gradle版本也要跟著改。

回到這問題,最近剛研究了一下.gradle的目錄組織,可以看http://m.blog.csdn.net/article/details?id=53914072。可能我要解決的問題和題主有點差異,我是希望一個人把bintray的jar包下下來,其他項目組成員直接checkout我的.gradle目錄實現離線化。經過我測試,需要離線化.gradle/caches/modules-2目錄,即可。其中的files-2.1是從bintray上下載的pom和jar包,metadata-xx是gradle程序的數據組織,如果沒metadata也是不行的。


推薦閱讀:

怎樣從零開始學習安卓軟體開發?
如何防止 Android App 被反編譯後介面泄露?
Smartisan OS 全局禁止第三方桌面小工具(Widgets),會為其帶來哪些好的和壞的影響?
有什麼apk分析工具?
activity的startActivity和context的startActivity有什麼不同嗎?

TAG:Android開發 | Android | Android程序員 | Gradle | AndroidStudio |