<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      解決gradle與gradle plugin匹配關系以及gradle下載緩慢的問題

      1. 問題引入

      我們剛接觸安卓開發,在環境搭建階段,安裝Android studio的時候或者新建一個項目的時候,往往會卡到一個地方一直等待,一直等待。。。直到最后報紅線,怎么搞都不行。最后崩潰,放棄了,毀滅吧,搞不了了。

      其實,就是一個gradle下載緩慢的小問題把好多新人擋在了Android開發的大門之外。

      唉唉,朋友,別放棄,看這里,都是小問題。

      這里給大家分享一下個人的解決方案。

      2. 原因

      原因可能有兩個:

      1. gradle版本和gradle插件版本不匹配(這個會直接導致報錯)
      2. gradle服務器在國外,國內網絡訪問自然慢啊,Android Studio已經盡力了。

      3. 解決方法

        3.1 檢查gradle版本和gradle插件版本是否匹配

      • gradle版本的定義在你的gradle-wrapper.properties

      如:

      distributionBase=GRADLE_USER_HOME
      distributionPath=wrapper/dists
      zipStoreBase=GRADLE_USER_HOME
      zipStorePath=wrapper/dists
      distributionUrl=https\://services.gradle.org/distributions/gradle-6.5-bin.zip

      上述文件中的 distributionUrl=https\://services.gradle.org/distributions/gradle-6.5-bin.zip 表明,你使用的gradle 版本是 6.5,具體的包是gradle-6.5-bin.zip

       

      • gradle插件版本的定義在你的build.gradle(project級別)文件里。

      如:

      buildscript {
          repositories {
              google()
              jcenter()
          }
          dependencies {
              classpath "com.android.tools.build:gradle:4.1.0"
          }
      }
      
      allprojects {
          repositories {
              google()
              jcenter()
          }
      }
      
      task clean(type: Delete) {
          delete rootProject.buildDir
      }
      

        上述文件中的 classpath "com.android.tools.build:gradle:4.1.0" 表明,你的gradle plugin(插件)版本是 4.1.0

       

      那么, 6.5 版本的 gradle 和 4.1.0 版本的gradle plugin匹配嗎?怎么號不太一樣?

      答案是匹配的!這兩個的匹配關系有個表格,官方地址是:gradle與gradle plugin匹配關系

      當前已有的關系如下表:

       

      所以,這下知道了吧。好多工程編譯出錯都可能是這兩個版本號的關系沒匹配造成的。

       

       

      3.2 解決gradle下載慢的問題

      3.2.1 手動下載gradle包

      既然Android studio下載不下來,那么我們可以手動下載啊。這里是gradle的官方下載地址:https://services.gradle.org/distributions/
      點進去,下載對應的版本就行了。如果還下載不下來,試試國內的gradle鏡像地址:https://mirrors.cloud.tencent.com/gradle/

      舉個例子:
      如我們需要gradle-6.5.all.zip這個包,下載好之后,需要把它放到你電腦的
      C:\Users\fxjzz\.gradle\wrapper\dists\gradle-6.5-all\2oz4ud9k3tuxjg84bbf55q0tn
      這個目錄下,不用解壓,在打開工程后android studio會自動幫我們解壓。

      注意

      • 上述路徑的 fxjzz 是我電腦的用戶名,你的電腦是對應自己的用戶名。
      • 如果你的 dists 下沒有對應的gradle版本文件夾,你需要打開你的Android studio項目,它會開始sync,也就是下載需要的gradle,這時候就會自動在你的dists目錄下創建 gradle-6.5-all文件夾,以及后面的一串亂七八糟字母的子文件夾2oz4ud9k3tuxjg84bbf55q0tn,這個名字是隨機生成的,你的肯定和我這個不一樣。

      3.2.2 替換gradle地址源為國內鏡像地址

      上節提到,國內的gradle鏡像地址:https://mirrors.cloud.tencent.com/gradle/,而Android工程默認的gradle地址是國外的:https://services.gradle.org/distributions/,見下圖gradle-wrapper.properties文件里的配置:distributionUrl:https\://services.gradle.org/distributions/gradle-8.4-bin.zip,其中,https\://services.gradle.org/distributions 對應的就是 國外的gradle地址。

       因此,我們只需要把它替換為國內的即可。注意url的寫法,替換后應該是https\://mirrors.cloud.tencent.com/gradle/gradle-8.4-bin.zip

      注意:我這里是舉例 grale-8.4.bin,你的工程替換為自己的 gradle-xxx.zip 即可

      解決了gradle下載的問題后就萬事大吉了嗎?

      可能還不夠。。。因為除了 gradle,工程還會依賴一下其他的庫,而這些庫的地址也是來自國外倉庫,也有下載失敗的可能。

      這種情況只是可能,有的人可能不會遇到,很順利的一會兒就成功了。對于遇到問題的情況,我們繼續下面的操作。

      3.2.3 替換相關依賴庫的倉庫地址為國內地址

      既然還是由于依賴庫地址位于國外,我們下載受限,那么還是一樣的辦法:替換為國內倉庫地址。

      這里也有兩種方法,推薦就用方法一吧。

      3.2.3.1 方法一:在build.gradle(project級別)里改變依賴倉庫(推薦)

      國內倉庫地址說明:阿里云maven倉庫
      build.gradle文件(groovy語言版本)↓

      buildscript {
          repositories {
       		maven {url 'https://maven.aliyun.com/repository/public'}
       		maven {url 'https://maven.aliyun.com/repository/central'}
              maven {url 'https://maven.aliyun.com/repository/jcenter'}
              maven {url 'https://maven.aliyun.com/repository/google'}
              maven {url 'https://maven.aliyun.com/nexus/content/repositories/jcenter'}
              maven {url 'https://maven.aliyun.com/nexus/content/repositories/releases'}
              maven {url 'https://maven.aliyun.com/repository/apache-snapshots'}
              maven {url 'https://jitpack.io'} // 為github的依賴提供
          }
          //  google()
      	//  jcenter()
          dependencies {
              classpath "com.android.tools.build:gradle:4.0.0"
          }
      }
      
      allprojects {
          repositories {
              maven {url 'https://maven.aliyun.com/repository/public'}
              maven {url 'https://maven.aliyun.com/repository/central'}
              maven {url 'https://maven.aliyun.com/repository/jcenter'}
              maven {url 'https://maven.aliyun.com/repository/google'}
              maven {url 'https://maven.aliyun.com/nexus/content/repositories/jcenter'}
              maven {url 'https://maven.aliyun.com/nexus/content/repositories/releases'}
              maven {url 'https://maven.aliyun.com/repository/apache-snapshots'}
              maven {url 'https://jitpack.io'} // 為github的依賴提供
              //  google()
      		//  jcenter()
          }
      }
      
      task clean(type: Delete) {
          delete rootProject.buildDir
      }
      

        即,用國內的代理倉庫地址取代google和jcenter這兩個倉庫地址。當然這兩個保留也沒事,這些倉庫地址可以多寫,它會從能獲取到的地址去獲取。

       

      3.2.3.2 方法二:配置全局替換的文件 (影響比較大,不推薦了)

      在.gradle文件夾下添加倉庫替代的配置文件init.gradle,這樣可以為所有工程自動替換倉庫。不需要每新建一個工程都修改里面的build.gradle文件了。

      創建一個init.gradle文件,內容如下:

      gradle.projectsLoaded {
          rootProject.allprojects {
              buildscript {
                  repositories {
                      def JCENTER_URL = 'https://maven.aliyun.com/repository/jcenter'
                      def GOOGLE_URL = 'https://maven.aliyun.com/repository/google'
                      def NEXUS_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://jcenter.bintray.com/')) {
                                  project.logger.lifecycle "Repository ${repo.url} replaced by $JCENTER_URL."
                                  println("buildscript ${repo.url} replaced by $JCENTER_URL.")
                                  remove repo
                              }
                              else if (url.startsWith('https://dl.google.com/dl/android/maven2/')) {
                                  project.logger.lifecycle "Repository ${repo.url} replaced by $GOOGLE_URL."
                                  println("buildscript ${repo.url} replaced by $GOOGLE_URL.")
                                  remove repo
                              }
                              else if (url.startsWith('https://repo1.maven.org/maven2')) {
                                  project.logger.lifecycle "Repository ${repo.url} replaced by $REPOSITORY_URL."
                                  println("buildscript ${repo.url} replaced by $REPOSITORY_URL.")
                                  remove repo
                              }
                          }
                      }
                      jcenter {
                          url JCENTER_URL
                      }
                      google {
                          url GOOGLE_URL
                      }
                      maven {
                          url NEXUS_URL
                      }
                  }
              }
              repositories {
                  def JCENTER_URL = 'https://maven.aliyun.com/repository/jcenter'
                  def GOOGLE_URL = 'https://maven.aliyun.com/repository/google'
                  def NEXUS_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://jcenter.bintray.com/')) {
                              project.logger.lifecycle "Repository ${repo.url} replaced by $JCENTER_URL."
                              println("buildscript ${repo.url} replaced by $JCENTER_URL.")
                              remove repo
                          }
                          else if (url.startsWith('https://dl.google.com/dl/android/maven2/')) {
                              project.logger.lifecycle "Repository ${repo.url} replaced by $GOOGLE_URL."
                              println("buildscript ${repo.url} replaced by $GOOGLE_URL.")
                              remove repo
                          }
                          else if (url.startsWith('https://repo1.maven.org/maven2')) {
                              project.logger.lifecycle "Repository ${repo.url} replaced by $REPOSITORY_URL."
                              println("buildscript ${repo.url} replaced by $REPOSITORY_URL.")
                              remove repo
                          }
                      }
                  }
                  jcenter {
                      url JCENTER_URL
                  }
                  google {
                      url GOOGLE_URL
                  }
                  maven {
                      url NEXUS_URL
                  }
              }
          }
      }
      

        把這個文件放到C:\Users\fxjzz\.gradle這個目錄下。這里 fxjzz 是我的用戶名,你自己的電腦會有自己的用戶名。

       

       

      3.2.4 設置gradle 離線模式

      一般來說,經過上面的操作,不會再有問題了。這小節也是參考閱讀一下吧。

      如果還是不行的話,試試打開 gradle 的離線模式吧。gradle 默認是在線模式,也就是缺什么包,它自己在線下載什么包。雖然我們上面已經手動下載好了 gradle 包,并放到了上述的目錄下,但傻傻的 android studio 還是走自己在線下載 gradle 的路子,不撞南墻不回頭啊。
      因此,我們可能還需要再幫它一把,告訴它,走離線模式吧,我已經幫你下載好了 gradle 了。
      如下圖所示,點擊箭頭所指圖標即可打開 “gradle 離線模式”,再次點擊就是關閉。 打開后,重新 sync 即可靜待奇跡發生。

       

      好了,這樣gradle下載緩慢的問題,應該能徹底的被解決啦~
      再也不用氣到崩潰啦~

      4. settings.gradle.kts 中如何設置gradle

      時隔幾年,Android gradle的發展日新月異。目前(2024.12.8),AndroidStudio已經全面支持kotlin語言,連build.gradle文件也默認推薦使用kotlin語言,取代舊的groovy語言了,出現了新的gradle文件:build.gradle.kts、settings.gradle.kts,并且關于倉庫地址的定義也被挪到了 settings.gralde.kts中(也許未來位置還會變更,但不影響本文對其寫法的示范)。

      因此,在settings.gradle.kts文件中如何設置國內倉庫代理呢?下面對本文章的更新將為大家示范。

      4.1 groovy版的build.gradle文件

      作為對比,首先看下舊的 groovy 語言的gradle文件里,關于倉庫地址是如何寫的:

      repositories {
          maven {url 'https://maven.aliyun.com/repository/public/'}
          mavenCentral()
      }
      

        

      4.2 kotlin版的settings.gradle.kts文件

      kotlin版的倉庫地址定義,寫法符合kotlin語法,出現了setUrl()這樣的方法調用,如下:

      repositories {
          maven {
              setUrl("https://maven.aliyun.com/repository/public/")
          }
          mavenCentral()
      }
      

        下面給出一個完整的 settings.gradle.kts的示例吧:

      pluginManagement {
          repositories {
              maven {
                  setUrl("https://maven.aliyun.com/repository/public")
              }
              maven {
                  setUrl("https://maven.aliyun.com/repository/google")
              }
              maven {
                  setUrl("https://maven.aliyun.com/repository/jcenter")
              }
              maven {
                  setUrl("https://maven.aliyun.com/nexus/content/repositories/releases")
              }
              maven {
                  setUrl("https://jitpack.io")
              }
              google {
                  content {
                      includeGroupByRegex("com\\.android.*")
                      includeGroupByRegex("com\\.google.*")
                      includeGroupByRegex("androidx.*")
                  }
              }
              mavenCentral()
              gradlePluginPortal()
          }
      }
      dependencyResolutionManagement {
          repositoriesMode.set(RepositoriesMode.PREFER_PROJECT)
          repositories {
              maven {
                  setUrl("https://maven.aliyun.com/repository/public")
              }
              maven {
                  setUrl("https://maven.aliyun.com/repository/google")
              }
              maven {
                  setUrl("https://maven.aliyun.com/repository/jcenter")
              }
              maven {
                  setUrl("https://maven.aliyun.com/nexus/content/repositories/releases")
              }
              maven {
                  setUrl("https://jitpack.io")
              }
              google()
              mavenCentral()
          }
      }
      
      rootProject.name = "ViewModelTest"
      include(":app")
      

        總之,如果你的工程和AndroidStudio已經升級到了比較新的版本,出現了settings.gradle.kts文件,那么在配置國內代理解決gradle下載緩慢的問題時,可以參考上面給出的寫法。希望對你有用!

       

       

      轉載:https://blog.csdn.net/fxjzzyo/article/details/113776278

      posted @ 2025-07-13 21:13  zhengyan_web  閱讀(386)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 亚洲av无码精品色午夜蛋壳| 体态丰腴的微胖熟女的特征| 黔南| 美欧日韩一区二区三区视频| 男女一边摸一边做爽爽| 少妇精品视频一码二码三| 国产成AV人片久青草影院| 西西人体44www大胆无码| 国产sm重味一区二区三区| 亚洲成人av在线高清| 麻豆亚州无矿码专区视频| 亚洲爆乳WWW无码专区| 国产在线一区二区不卡| 国产玖玖玖玖精品电影| 国产精品一区二区久久岳| 久久国产免费观看精品3| 国产极品尤物粉嫩在线观看| 日韩丝袜亚洲国产欧美一区| 国产在线乱子伦一区二区| 国内揄拍国内精品人妻久久| 377p欧洲日本亚洲大胆| 无码人妻精品一区二区三区下载 | 韩国免费A级毛片久久| 伊人蕉影院久亚洲高清| 国产精品99久久久久久www| 97精品伊人久久大香线蕉APP | 日韩免费无码视频一区二区三区| 九九热精品视频在线免费| 综合欧美视频一区二区三区| 国产成人精品18| 伊人激情av一区二区三区| 妓院一钑片免看黄大片| 老师破女学生处特级毛ooo片| 婷婷五月综合丁香在线| 蜜臀精品国产高清在线观看| 亚洲国产精品毛片在线看| 欧美韩中文精品有码视频在线| 久久国产精品无码网站| 国产精品第二页在线播放| 男人添女人下部高潮视频| 老太脱裤子让老头玩xxxxx|