大家都是怎樣處理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
C:Usersxxx.gradlewrapperdistsgradle-2.4-all
// 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/distszipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/distsdistributionUrl=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 |