android studio gradle國內代理設置

   android studio在開始都各項目以前都會遇到 gradle 的同步,而在同步過程當中不少依賴下載特別慢甚至出現沒法如今的狀況,有的時候等的時間特別長,甚至要一天,關鍵是等了大半天以後忽然報錯,非常煩人,不只浪費時間,還啥也沒幹成,好比說,Gradle下載center.bintray.com 下的一些包時常常出現鏈接超時(Connection timeout)的狀況,以致於Gradle同步失敗,項目沒法構建。下面呢有兩種方法,一種是國內的代理,利用阿里源,這個仍是比較快的,另外一個呢,就是使用shadsocks 代理,這種辦法比使用國內代理要慢多了(嗯,其實也不能這樣說,關鍵是看網速的問題了),我有一次是在晚上搞,使用的就是shadsocks代理,速度也是至關的慢,晚上畢竟在高峯期。下面就介紹用國內代理Gradle 進行sync。本人也是比較推薦這種方法的,這種方法大部分的問題仍是均可以解決的。html

  1、是改settings.xml文件:android

   emm.....簡單介紹一下用到的settings.xml文件:  若是想要深刻了解settling.xml請看這篇文章,介紹的仍是滿詳細的:http://www.javashuo.com/article/p-ujukdjbr-mu.htmlapache

      1.setting.xml文件做用:

      它是用來設置Maven參數的配置文件。而且,settings.xml是Maven的全局配置文件。settings.xml中包含相似本地倉庫、遠程倉庫和聯網使用的代理信息等配置。api

      二、settings.xml文件位置:

       settings.xml文件通常存在於Maven的安裝目錄的conf子目錄下面,或者是用戶目錄的.m2子目錄下面。服務器

      三、配置的優先級:

      其實相對於多用戶的PC機而言,在Maven安裝目錄的conf子目錄下面的settings.xml纔是真正的全局的配置。而用戶目錄的.m2子目錄下面的settings.xml的配置只是針對當前用戶的。當這兩個文件同時存在的時候,那麼對於相同的配置信息用戶目錄下面的settings.xml中定義的會覆蓋Maven安裝目錄下面的settings.xml中的定義。用戶目錄下的settings.xml文件通常是不存在的,可是Maven容許咱們在這裏定義咱們本身的settings.xml,若是須要在這裏定義咱們本身的settings.xml的時候就能夠把Maven安裝目錄下面的settings.xml文件拷貝到用戶目錄的.m2目錄下,而後改爲本身想要的樣子,總之一句話。就是改Maven安裝目錄的conf子目錄下面的settings.xml,那麼問題就來了怎麼改呢 ?maven

  2、修改settling.xml文件添加mirrors

    先介紹一下mirrors:gradle

     mirrors做用:ui

     用於定義一系列的遠程倉庫的鏡像。咱們能夠在pom中定義一個下載工件的時候所使用的遠程倉庫。可是有時候這個遠程倉庫會比較忙,因此這個時候人們就想着給它建立鏡像以緩解遠程倉庫的壓力,也就是說會把對遠程倉庫的請求轉換到對其鏡像地址的請求。每一個遠程倉庫都會有一個id,這樣咱們就能夠建立本身的mirror來關聯到該倉庫,那麼之後須要從遠程倉庫下載工件的時候Maven就能夠從咱們定義好的mirror站點來下載,這能夠很好的緩解咱們遠程倉庫的壓力。在咱們定義的mirror中每一個遠程倉庫都只能有一個mirror與它關聯,也就是說你不能同時配置多個mirror的mirrorOf指向同一個repositoryId。google

    下面咱們就在Maven配置文件setting.xml中配置Mirror標籤在mirrors下面添加mirrors標籤並添加詳解:url

<mirrors>
  <!--該鏡像的惟一標識符,id用來區分不一樣的mirros元素。--> <mirror> <id>alimaven</id>
     <!--鏡像名稱。--> <name>aliyun maven</name>
     <!--該鏡像的URL。構建系統會優先考慮使用該URL,而非使用默認的服務器URL。--> <url>http://maven.aliyun.com/nexus/content/groups/public/</url> <!--被鏡像的服務器的id。例如,若是咱們要設置了一個maven中央倉庫(http://repo.maven.apache.org/maven2)的鏡像,就須要將該元素設置成central。這必須和中央倉庫的id central徹底一致-->
     <mirrorOf>central</mirrorOf> </mirror> </mirrors>

  3、配置Gradle:

       在build.gradle中做以下配置,添加Maven倉庫地址    

buildscript {
    repositories {
        google()
        //jcenter()  //可直接刪除
        maven{ url 'http://maven.aliyun.com/nexus/content/groups/public/'}
    }
}

allprojects {
    repositories {
        google()
        //jcenter()
        maven{ url 'http://maven.aliyun.com/nexus/content/groups/public/'}
    }
}

  最近構建項目時老是遇到jcenter倉庫中多個jar文件沒法下載的狀況,因此若是你有相似狀況的話能夠直接刪除jcenter倉庫,(就算沒有遇到這樣的狀況也能夠刪除,阿里的Maven鏡像倉庫下載依賴要快得多,若是不刪除的話,建議將Maven倉庫配置在jcenter以前,這樣的話,找依賴會優先用配置的Maven倉庫)

 

 

PS:遇到的問題及解決;

一、Could not find org.jetbrains.kotlin:kotlin-stdlib:1.1.3-2.
    Searched in the following locations:
    https://dl.google.com/dl/android/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.1.3-2/kotlin-stdlib-1.1.3-2.pom
    https://dl.google.com/dl/android/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.1.3-2/kotlin-stdlib-1.1.3-2.jar
    Required by:
    project : > com.android.tools.build:gradle:3.0.1 > 

 

解決辦法: 在兩個repositories中加上相應代碼 (  mavenCentral()  )

buildscript {
    allprojects {
        repositories {
            google()
            jcenter()
            mavenCentral() 
        }
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.0.1'
    }
    repositories {
        jcenter()
        mavenCentral()
        google()
    }
}

 二、google()和jcenter()是被牆的,而   http://maven.aliyun.com/nexus/content/groups/public/   並不包括的google() & jcenter(),若是不用它們就會出現卡住的狀況.......可是阿里提供的鏡像包括了Google和Jcenter:http://maven.aliyun.com/mvn/view 可是若是我這樣用:

google(){ url 'https://maven.aliyun.com/repository/google' }

是會報錯的:

Could not find method google() for arguments [build_481dup0nhfy99x57ko80vlobp$_run_closure1$_closure2$_closure5@7388ff6f] on repository container of type org.gradle.api.internal.artifacts.dsl.DefaultRepositoryHandler.

 

  解決辦法:有多少個加多少個就好了,放在google()前面:

maven{ url 'http://maven.aliyun.com/nexus/content/groups/public/' }
maven{ url 'https://maven.aliyun.com/repository/google' }
相關文章
相關標籤/搜索