文章目录

  • 问题引入
  • 原因
  • 解决方法
    • 1. 检查gradle版本和gradle插件版本是否匹配
    • 2. 解决gradle下载慢的问题
      • 手动下载gradle包
      • 替换依赖仓库
        • 方法一:在build.gradle(project级别)里改变依赖仓库
        • 方法二:配置全局替换的文件(推荐)

问题引入

我们刚接触安卓开发,在环境搭建阶段,安装Android studio的时候或者新建一个项目的时候,往往会卡到一个地方一直等待,一直等待。。。直到最后报红线,怎么搞都不行。最后崩溃,放弃了,毁灭吧,搞不了了。

其实,就是一个gradle下载缓慢的小问题把好多新人挡在了Android开发的大门之外。

唉唉,朋友,别放弃,看这里,都是小问题。

这里给大家分享一下个人的解决方案。

原因

原因可能有两个:

  1. gradle版本和gradle插件版本不匹配(这个会直接导致报错)
  2. gradle服务器在国外,国内网络访问自然慢啊,Android Studio已经尽力了。

解决方法

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匹配关系。

当前已有的关系如下表:

所以,这下知道了吧。好多工程编译出错都可能是这两个版本号的关系没匹配造成的。

2. 解决gradle下载慢的问题

手动下载gradle包

既然Android studio下载不下来,那么我们可以手动下载啊。这里是gradle的官方下载地址:https://services.gradle.org/distributions/
点进去,下载对应的版本就行了。

举个例子:
如我们需要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,这个名字是随机生成的,你的肯定和我这个不一样。

这样手动下载了就好了吗?

可能还不够。。。

当我们手动下载,并且放置到对应位置,重新打开工程,可能会发现下面的进度仍然显示在下载某些东西。瓦特?这是搞什么?!!

没错,它还要下一些东西。这时候如果你的网络下不下来,依然会非常慢,甚至报错。

上述情况只是可能,有的人可能不会遇到,很顺利的一会儿就成功了。

对于上述情况,
在手动下了gradle后,我们再增加一道措施:替换依赖仓库

替换依赖仓库

这里也有两种方法。

方法一:在build.gradle(project级别)里改变依赖仓库

buildscript {repositories {//        google()
//        jcenter()maven {url 'https://maven.aliyun.com/repository/jcenter'}maven {url 'https://maven.aliyun.com/repository/google'}maven {url 'http://maven.aliyun.com/nexus/content/repositories/jcenter'}}dependencies {classpath "com.android.tools.build:gradle:4.0.0"}
}allprojects {repositories {//        google()
//        jcenter()maven {url 'https://maven.aliyun.com/repository/jcenter'}maven {url 'https://maven.aliyun.com/repository/google'}maven {url 'http://maven.aliyun.com/nexus/content/repositories/jcenter'}}
}task clean(type: Delete) {delete rootProject.buildDir
}

即,用国内的代理仓库地址取代google和jcenter这两个仓库地址。

方法二:配置全局替换的文件(推荐)

在.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 是我的用户名,你自己的电脑会有自己的用户名。

好了,这样gradle下载缓慢的问题,应该能彻底的被解决啦~
再也不用气到崩溃啦~

彻底解决gradle与gradle plugin匹配关系以及gradle下载缓慢的问题相关推荐

  1. Android Studio之提示Gradle sync failed: Plugin with id ‘com.novoda.bintray-release‘ not found.

    1 问题 导入别人的模块到Android Studio,错误提示如下 Gradle sync failed: Plugin with id 'com.novoda.bintray-release' n ...

  2. android卡在gradle,Android Studio打开新项目卡在Gradle的问题

    小提示:如果是开在Indexing这个位置,可以 File--> Invalidate Caches/Restart--> Invalidate and Restart. 如果卡在 Gra ...

  3. Gradle Android客户端程序打包(基于gradle 2.10版本验证通过)

    http://www.cnblogs.com/Freedoms/p/5171201.html 一.前言 目前正在准备从eclipse开发环境向AndroidStudio迁移,提前过去探探路,不出所料, ...

  4. gradle插件-了解插件及如何使用gradle插件

    解释 Gradle的核心是有意为现实世界的自动化提供很少的东西.所有有用的特性,比如编译Java代码的能力,都是由插件添加的.插件添加新任务(如JavaCompile),域对象(如SourceSet) ...

  5. gradle环境设置以及常用命令以及gradle配置文件

    Backgroud: Gradle | Releases 这里可以看到gradle设置的 一:下载gradle 1.首先官网下在gradle到本地,其次载环境变量path设置gradle地址 下载地址 ...

  6. 使用gradle构建android项目,Android中使用Gradle来构建App项目的入门指南

    gradle是Android开发中引入的全新的构建系统,因为全新的构建系统主要是出于下面的目的: 1. 方便复用代码和资源 2. 构建多种版本的apk更见简单,不论是为多渠道构建不同的apk还是构建不 ...

  7. Android Gradle 学习笔记(四):Gradle 构建脚本

    本节我们从整体的角度来介绍一下Gradle. 一.setting.gradle 在Gradle中,定义了一个设置文件,用于初始化以及工程树的配置.设置文件的默认的名字就是setting.gradle, ...

  8. 【转载】Gradle学习 第十一章:使用Gradle命令行

    转载地址:http://ask.android-studio.org/?/article/94 This chapter introduces the basics of the Gradle com ...

  9. android studio gradle 学习,学习Android Studio里的Gradle

    一直听说Gradle很强大,只是偶尔用Android Studio创建Demo的时候看到他一次,今天抽个时间完整记录一下. 1.gradle位置 Android Studio项目创建好之后,默认有3个 ...

最新文章

  1. SAP MM MIGO过账报错 - 用本币计算的余额 - 之对策
  2. 454. 4Sum II ——查找本质:hash最快,二分次之
  3. Cpp拾零(to be continued)
  4. SpringContextUtil
  5. 作用域、执行环境、作用域链
  6. 关于viewport我自己的理解
  7. EL表达式和JSTL标准标签库
  8. 转换流指定编码读写文件
  9. 现代程序设计 作业9 - 综合练习
  10. 面积积分_袁颖妍:用定理积分求平面区域面积(有代表性的9个例题)
  11. Spring Boot 第一个程序
  12. coreldraw x4被禁用怎么解决及不能使用序列号警告办法
  13. 时间展示 星期几时英文需要显示成中文问题解决
  14. iOS 给三方日历加上农历
  15. 生产服务器制作再生龙ghost系统安装完整教程
  16. 面试官怎样面试出合格的技术人员
  17. 工业企业产值产量电子台账操作指南(第一版)
  18. MySQL异构同步_详解MySQL数据库异构数据同步
  19. oracle经典习题(一)
  20. Java同步锁Synchronized底层源码和原理剖析

热门文章

  1. 2023年度数学建模竞赛汇总
  2. 上海交大计算机专业挂科,上海交大,3名本科生绩点不足1.0被勒令退学,大学不挂科很难?...
  3. android x5全屏白色,x5webview 自定义全屏界面 X5webview完美去掉分享功能和缓存功能(2)...
  4. MIKE 21 教程 1.5 基于卫星影像绘制河道边界
  5. 软件设计师教程-数据库
  6. 百度指数的价值以及分析的意义
  7. 一文读懂张量分解(展开)和Matlab实现
  8. PHP中in_array 效率及其优化
  9. 有没有人可以帮我解析一下下面的json
  10. tewa-500e 虚拟服务器,关于成都电信送的光纤猫设置 TEWA-500E