android studio下载gradle很慢

这里


问题
(1) Android sutdio第一次打开一个工程巨慢怎么办?
(2) 手动配置Gradle Home为什么总是无效?
(3) 明明已经下载了Gradle,配置了gradle home,为什么打开工程还是去自动下载Gradle?

Android Studio怎么知道该用哪个Gradle呢?

AS一个项目所用的Gradle是由我们的工程中下面这个文件决定的:

{your_project_path}/gradle/wrapper/gradle-wrapper.properties

#Mon May 02 00:20:53 CST 2022
distributionBase=GRADLE_USER_HOME
distributionUrl=https\://services.gradle.org/distributions/gradle-7.2-bin.zip
distributionPath=wrapper/dists
zipStorePath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME

最后一排的distributionUrl 决定了这个项目使用的gradle版本,也就是说不同的项目可以使用不同的gradle版本

原理:Android Studio打开一个工程时,首先会读取工程目录下的gradle-wrapper.properties 文件,从而知道这个工程需要哪个版本的gradle ,然后就会去保存gradle的文件夹GRADLE_USER_HOME 去找看存不存在这个版本的gradle,不存在则会去distributionUrl 去下载 搞清楚了这个流程,现在是不是明白了,为什么第一次打开一个工程会巨慢了吧,因为AS会去下载gradle

Android Studio检查的路径在设置里的Gradle可以看到,根据上面的路径确定的绝对路径如下:


既然搞清楚了原理,也知道打开慢的原因是卡在下载gradle这一步,那么我们就自己下载gralde,然后配置上去 。

(1) 修改gradle-wrapper.properties

修改gradle-wrapper.properties 中的 distributionUrl,改成我们想要的版本,只改后面的版本就可以了,前面的部分不要改。具体版本看下面链接 (如果改为本地已下载的gradle版本,且是适合构建当前工程,那么从新构建就不用从新下载gradle了) 

Gradle下载地址:https://services.gradle.org/distributions/

(2) 打开项目
这个时候 AS将自动下载gradle,并创建好目录 。这时直接干掉Android Studio并退出(如果能停止gradle的下载进程,不用退出AS也是可以的),因为这一步 是为了得到AS自动创建的下载目录 ,定位到下面的目录:

注意:Gradle是大家共用的,所以当然不会把Gradle放在项目文件中(不是不可以)

接着进入对应的gradle版本文件夹下,会发现 有一个一串乱码的文件夹 ,下载的文件就是放在这个一串乱码的文件夹里。

(3) 下载gradle
从上面{your project}/gradle/wrapper/gradle-wrapper.properties
文件中的Gradle下载地址,下载对应版本的gradle,建议使用下载器进行下载,,将下载的gradle-7.2-bin.zip复制到上图中一串乱码的文件夹下, 注意不要解压 。这样我们就跳过了下载gradle这一步。

把下载好的文件gradle-7.2-bin.zip 放入下面的文件夹中即可,不需要解压。

(4) 重新开启Android Studio,打开工程,ok,一下子就打开了(如果是停止了下载进程,直接点击右上角的gradle图标重新构建就好了).

另外,需要注意的是,gradle插件和gradle是两个独立的东西gradle插件版本是由项目最外层的build.gradle文件决定的

app/build.gradle:

plugins {
    id 'com.android.application'
}

android {
    compileSdk 32

    defaultConfig {
        applicationId "com.scott.dev"
        minSdk 21
        targetSdk 32
        versionCode 1
        versionName "1.0"

        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
}

dependencies {

    implementation 'androidx.appcompat:appcompat:1.3.0'
    implementation 'com.google.android.material:material:1.4.0'
    testImplementation 'junit:junit:4.13.2'
    androidTestImplementation 'androidx.test.ext:junit:1.1.3'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'
}




Gradle配置

1、
GRADLE_HOME
解压缩的目录
GRADLE_HOME=D:/gradle

2、GRADLE_USER_HOME 
自定义gradle仓库目录或maven的仓库目录
GRADLE_USER_HOME=D:/gradle/repo
在android studio中配置的user home就是这个路径,后续新项目打开时下载的gradle也会在这个目录下的wrapper\dists\路径下方。