简介:Gradle 7.2 完整发行包(gradle-7.2-all.zip)面向 Android Studio 开发者,适合需要离线安装或固定构建版本的场景,可解决官方源下载慢、网络不稳定导致环境配置受阻的问题。压缩包为 zip 格式,体积约 149.73MB,内含 Gradle 运行时、核心库及相关构建工具,便于开发者在本地直接完成版本切换;资源页暂未列出文件总数与类型明细。目前已有 1463 人学习下载,说明该版本在 Android 应用构建场景中具有较高的使用需求。下载后可在 Android Studio 中指定本地 Gradle 目录,让项目编译跳过在线获取环节,避免因网络问题反复等待;同时 Gradle 自带的依赖管理、多项目构建、自定义构建逻辑和插件扩展能力,也能帮助开发者更灵活地控制 APK/AAR 的生成与打包过程。对于希望统一构建环境、缩短同步等待时间的开发者,这是一份实用的离线构建工具包。 不知道有没有人跟我一样,第一次看到“gradle-7.2-all.zip”这个名字的时候,脑子里蹦出来的是“这又是什么要装的环境?”然后在公司网速不给力的下午,盯着那个几十上百兆的压缩包下载进度条,心态直接崩掉。说实话,Gradle这个构建工具,用好了是真省心,用不好就是各种“could not install gradle distribution from”和“deprecated gradle features”轮番轰炸。今天不聊虚的,就围绕这个gradle-7.2-all.zip,把下载、安装、配置、换源、排查问题这条链路完整捋一遍,该给的地址给地址,该讲的原理讲原理,保证你看完能少踩几个坑。
这个zip文件本身是Gradle 7.2版本的完整发行包,后缀里的“all”表示它包含源码、文档以及所有平台(Windows/macOS/Linux)的运行脚本和二进制内容。很多人一开始搞不清楚“bin”和“all”的区别,简单说,bin版只包含当前平台运行所需的最小文件集,all版则是全家桶。如果你有离线安装、多平台切换、或者想翻源码的需求,直接下all版准没错。接下来,我把从零开始配置的过程,以及我实际使用中遇到的各种疑难杂症,全部拆开来讲。
1. gradle-7.2-all.zip到底是什么,为什么偏要选7.2
1.1 一个压缩包里的完整世界
Gradle是一个基于JVM的自动化构建工具,和Maven、Ant属于同一类工具,但它的灵活性和性能表现更突出。它采用Groovy或Kotlin DSL来编写构建脚本,天生适合复杂项目的多模块构建、增量编译和并行任务执行。Android官方从很早开始就主推Gradle作为构建系统,所以凡是做Android开发的人,几乎每天都要和它打交道。
gradle-7.2-all.zip这个文件,解压之后你会看到几个关键目录:bin目录里存放的是gradle启动脚本,lib目录里是Gradle运行所需的全部jar包,docs目录是官方文档和DSL参考,src目录则是Gradle本身的源码。这也就意味着,你拿到这个压缩包,就相当于拿到了一个完整的、自包含的构建工具链,不需要再联网拉取任何Gradle核心组件。
我为什么建议使用all版本而不是bin版本?因为bin版本只有当前系统的可执行脚本和运行库,如果你在公司电脑(Windows)写好的项目,拿回家里的Mac上继续跑,bin版的wrapper还能正常工作,但如果你想在IDE里直接查看Gradle源码、或者执行某些需要完整发行版的任务,bin版可能就会报找不到文件的错。all版则没有这种问题,而且体积也就大几十MB,现在的硬盘和带宽完全不在乎这一点。
1.2 为什么偏偏是7.2(版本选择的现实考量)
Gradle的版本迭代非常快,新版本往往伴随着性能优化和API变更。7.2这个版本发布于2021年下半年,属于7.x系列中比较稳定的一代。它支持Java 16,默认使用Java 8字节码作为目标,对Kotlin DSL脚本的编译速度和配置缓存(Configuration Cache)都做了大量改进。对于Android开发来说,7.2和Android Gradle Plugin(AGP)7.0.x配合得非常好,很多项目组当时就是从AGP 4.2升级到AGP 7.0,配套的Gradle版本要求就是不能低于7.0,而7.2恰好是一个“踩坑少、资料多”的选择。
网上搜索热词里经常出现“com.android.tools.build:gradle:4.2.0 怎么升级为agp”,这个升级过程中最关键的一步就是同步升级Gradle。AGP 4.2对应的Gradle版本是6.7.1及以上,而AGP 7.0则要求Gradle 7.0以上。如果你直接把AGP升到7.0却不动Gradle,构建的时候就会直接提示你版本太低。我自己的经验是,从AGP 4.2升到AGP 7.0时,顺手把Gradle升到7.2-all,过程非常平滑,几乎没有因为版本兼容性问题浪费时间。
还有一个小细节是,Gradle 7.x对过时API的警告处理更严格。你在构建日志里看到的“deprecated gradle features were used in this build, making it incompatible with Gradle 8.0”,就是从7.x开始打出来的警告。这个警告的意思是,你当前项目用的某些写法在Gradle 7.x里还能跑,但到了8.0就会被移除。所以如果你打算长期维护一个项目,选7.2这个版本,可以给你留出充足的时间来修复这些弃用警告。
2. 下载攻略:从官网到国内镜像的实操记录
2.1 官网直下(以及它为什么经常失败)
Gradle官方的下载地址是services.gradle.org/distributions/,其中gradle-7.2-all.zip的直链是:
https://services.gradle.org/distributions/gradle-7.2-all.zip这个地址也是Gradle Wrapper默认的下载来源。所谓Wrapper,就是项目中gradlew脚本根据gradle-wrapper.properties文件里的distributionUrl去自动下载对应版本的Gradle。这样团队协作时,每个人不需要手动安装Gradle,只需要运行gradlew命令,它就会自动把对应版本的Gradle拉到本地。
问题来了,因为服务器在海外,国内网络环境下这个下载经常非常慢,甚至直接超时。很多人在Android Studio里新建项目时卡在“Gradle: Download gradle-7.2-all.zip”这一步,一等就是半小时,最后等来一个“could not install gradle distribution from... java.net.SocketTimeoutException”。这可以说是国内开发者最常见的痛点了。
我实测过,官网直连在普通宽带下经常只有几十KB/s,一个100MB的包能下到天荒地老。所以如果你急着用,千万不要死磕官网地址,直接用镜像就好。
2.2 国内镜像源的配置细节(腾讯、阿里、华为)
国内比较靠谱的Gradle镜像源,我用下来最稳的是腾讯云的镜像:
https://mirrors.cloud.tencent.com/gradle/gradle-7.2-all.zip这个地址会在你请求时自动重定向到腾讯云的对象存储,速度非常快,我自己在普通企业宽带下能跑到10MB/s以上,几乎是秒下。腾讯镜像的目录结构和官网保持一致,也就是说,你只需要把services.gradle.org替换成mirrors.cloud.tencent.com/gradle,就能下载任意版本的Gradle发行包。
阿里云也有类似的镜像服务,主要提供Maven仓库镜像,常见的地址是:
https://maven.aliyun.com/repository/gradle不过阿里云这个更多的是用于依赖库的代理,而不是Gradle发行版的下载。华为云的镜像同样有Gradle发行版:
https://mirrors.huaweicloud.com/gradle/我个人建议优先使用腾讯云镜像,因为它的目录结构最完整,更新速度也比较及时。如果你是公司内网环境,可以先把gradle-7.2-all.zip下载到一个共享目录,然后通过本地文件的方式安装,这个在下一章会详细讲。
3. 安装与配置:从解压到命令行全局可用的完整流程
3.1 Windows环境配置
在Windows上下载好gradle-7.2-all.zip之后,把它解压到一个路径中不含中文和空格的目录,比如D:\Develop\gradle-7.2。然后需要配置环境变量:新增一个系统变量GRADLE_HOME,值就是你的解压目录,再把%GRADLE_HOME%\bin加到Path变量里。
具体操作步骤是:右键“此电脑” -> “属性” -> “高级系统设置” -> “环境变量”。在系统变量区域点击“新建”,变量名填GRADLE_HOME,变量值填D:\Develop\gradle-7.2。然后在系统变量里找到Path,选中后点击“编辑”,在列表末尾新增一行%GRADLE_HOME%\bin,确定保存即可。
配置完成后,重新打开一个命令行窗口,输入gradle -v,如果能看到Gradle 7.2以及JVM、Kotlin等版本信息,就说明安装成功了。这里有个常见的坑:如果你之前安装过其他版本的Gradle,或者电脑里同时存在多个GRADLE_HOME引用,命令行可能会指向旧版本。解决办法是检查echo %GRADLE_HOME%输出的路径是不是你刚刚设置的,以及where gradle确认实际调用的可执行文件位置。
在Windows下我建议把解压目录放在D盘而不是C盘,一方面是C盘空间通常比较紧张,另一方面是Gradle运行时会生成大量缓存,如果项目所在盘空间不够会非常尴尬。另外,Gradle的用户级缓存目录默认是在用户主目录下的.gradle文件夹,如果你不想让它占C盘空间,可以在系统变量里新增GRADLE_USER_HOME,指定到一个大一点的盘符。
3.2 macOS/Linux环境配置
macOS和Linux的配置原理是一样的,把zip解压到一个固定目录,比如/opt/gradle/gradle-7.2,然后编辑用户级的环境变量文件。以macOS为例,编辑~/.zshrc,加上这两行:
export GRADLE_HOME=/opt/gradle/gradle-7.2 export PATH=$GRADLE_HOME/bin:$PATH保存后执行source ~/.zshrc让配置生效,然后运行gradle -v验证。Linux下如果你的shell是bash,就编辑~/.bashrc或者~/.profile,格式完全相同。
这里有一个细节值得注意:把Gradle解压到/opt目录时,如果当前用户对这个目录没有写权限,需要先执行sudo chown -R $(whoami) /opt/gradle 或者用sudo解压。不然后续Gradle运行时尝试写入自己的临时文件,可能会因为权限不足报错。
如果你使用Homebrew,也可以直接brew install gradle,但这种方式安装的版本往往不是7.2,而且brew的版本更新很快,不一定能精确锁定到你想要的版本。所以想用gradle-7.2-all.zip的话,手动解压配置环境变量仍然是最可控的方式。
3.3 环境变量验证与常见坑
配置完成后,运行gradle -v会输出类似下面的信息:
------------------------------------------------------------ Gradle 7.2 ------------------------------------------------------------ Build time: 2021-08-17 09:59:03 UTC Revision: a6c5f840e6ac5c1e8b1c6e3a3f7b0f1f7f9d2a2b Kotlin: 1.5.21 Groovy: 3.0.8 Ant: Apache Ant(TM) version 1.10.9 JVM: 11.0.12 (Oracle Corporation 11.0.12+8) OS: Mac OS X 10.15.7 x86_64JVM这一行要特别注意,Gradle要求JDK版本和项目要求的Java版本匹配。Gradle 7.2官方支持Java 8到16的版本范围,如果你的项目是Java 11,那你本地JDK至少得是11。如果JVM版本过低,Gradle会提示你升级JDK。
还有一个常见的坑是,很多人配置完环境变量后发现重启电脑或者重启IDE之后gradle命令不见了。这通常是因为IDE(比如Android Studio)是在环境变量配置之前启动的,IDE里的终端进程没有继承新的环境变量。解决方法是完全退出Android Studio并重新打开,或者在新开的终端窗口里验证。不要相信那种“改完环境变量不需要重启”的说法,至少在开发者工具类应用程序上,重启是真的有必要的。
4. 进阶实操:解决“每次新建项目都下载Gradle”这个老大难
4.1 让Gradle Wrapper走本地分发
Android Studio每次新建项目都要下载gradle,这背后的逻辑是:每一个项目通过Gradle Wrapper定义了它需要的Gradle版本(在gradle/wrapper/gradle-wrapper.properties文件里),如果你本地没有一个匹配的发行版,它就会从distributionUrl指向的地址下载。默认的distributionUrl指向官网,所以就会出现每次新建项目都卡在下载的情况。
要想根治这个问题,有两个思路。第一个思路是把gradle-wrapper.properties里的distributionUrl改成一个更快的镜像地址。比如把:
distributionUrl=https\://services.gradle.org/distributions/gradle-7.2-all.zip改成:
distributionUrl=https\://mirrors.cloud.tencent.com/gradle/gradle-7.2-all.zip这样每次项目需要Gradle 7.2时,就会直接从腾讯镜像下载,速度快很多。
第二个思路是让本地已经存在的一个Gradle发行版作为“种子”,然后在GRADLE_USER_HOME下的wrapper/dists目录里预置好对应的zip和解压目录。Gradle Wrapper在下载时,会先把zip文件缓存到~/.gradle/wrapper/dists/gradle-7.2-all/ /目录下,并生成一个名为gradle-7.2-all.zip.part的临时文件,下载完成后改名。如果你手动把完整的zip文件放进这个目录,即使没有.part文件,Gradle在检测到完整zip存在时也会跳过下载,直接解压使用。这个方法对于离线环境尤其好使。
4.2 本地Maven仓库和POM文件的手动生成
很多项目在构建时需要依赖本地的Maven仓库,或者需要生成POM文件用于发布。Gradle项目生成POM最常用的方式是使用maven-publish插件。在build.gradle中配置:
plugins { id 'maven-publish' } publishing { publications { mavenJava(MavenPublication) { from components.java } } }然后在项目根目录执行gradle publishToMavenLocal,Gradle就会把项目的构建产物和自动生成的POM文件发布到本地的~/.m2/repository目录。这个能力和Maven的mvn install是等效的。很多人在搜索“让.gradle生成本地maven和pom文件”,其实就是想达到这个效果:不通过Maven,也能把Gradle项目产物安装到本地Maven仓库,供其他基于Maven构建的项目依赖使用。
实际操作中,你可能会遇到“No publication named 'mavenJava' found”这样的报错,原因一般是你的项目没有应用java-library或者java插件。因为from components.java这个写法依赖java插件的SoftwareComponent。解决办法是在build.gradle里加上:
plugins { id 'java-library' }然后重新执行publishToMavenLocal即可。
4.3 仓库换源配置(allprojects/repositories)
除了Gradle发行版的镜像,依赖仓库的换源同样重要。默认情况下,项目会从Google和Maven Central拉取依赖,国内访问这两个仓库的速度也是一言难尽。常见的做法是使用阿里云的公共仓库:
buildscript { repositories { maven { url 'https://maven.aliyun.com/repository/google' } maven { url 'https://maven.aliyun.com/repository/public' } maven { url 'https://maven.aliyun.com/repository/gradle-plugin' } } } allprojects { repositories { maven { url 'https://maven.aliyun.com/repository/google' } maven { url 'https://maven.aliyun.com/repository/public' } maven { url 'https://maven.aliyun.com/repository/gradle-plugin' } } }这里有几个镜像对应关系需要搞清楚:maven.aliyun.com/repository/google对应的是Google的Maven仓库;repository/public是Maven Central和JCenter的聚合;repository/gradle-plugin则对应Gradle Plugin Portal。把这三个配好,绝大多数项目的依赖都能顺利下下来。
换源的另一个收益是,可以避免“could not get resource”这类因为网络问题导致的构建失败。我实际测试过,同一台机器,默认源构建一个中型Android项目需要十几分钟,换成阿里云镜像后五分钟以内就能完成。这个时间差异对于日常开发来说影响非常大。
5. 常见问题与排查技巧实录
5.1 could not install gradle distribution from(SocketTimeoutException)
这个报错翻译成人话就是:Gradle在下载发行版时连接超时了。原因几乎可以断定是网络无法稳定访问官网的下载服务器。排查步骤很简单:先检查你的gradle-wrapper.properties里distributionUrl是不是指向了services.gradle.org,如果指向官网,那就把它换成腾讯镜像或者阿里云镜像。另外再把项目目录下的.gradle缓存清一下,因为损坏的下载临时文件有时候会导致反复失败。
如果换了镜像还是不行,那就手动把zip文件下载下来,然后按照4.1节里说的方式手动放进wrapper/dists目录。这个方法不需要任何代理,完全离线,是最保险的方案。
5.2 deprecated gradle features were used in this build
这个警告在Gradle 7.x中非常常见,项目构建日志末尾会出现“deprecated gradle features were used in this build, making it incompatible with Gradle 8.0”。它的本质是你的项目(或者项目里引用的某个插件)使用了Gradle 7.x已经标记为弃用的API或特性。
要定位到底是哪里用了弃用API,可以在gradle.properties里加上:
org.gradle.warning.mode=all这样Gradle会把每一个弃用警告的完整堆栈打出来。你看到具体是哪段代码后,针对性地替换成新写法。对于大多数项目,最常见的原因是旧版本的Android Gradle Plugin或者某个第三方插件调用了被标记弃用的Gradle API。如果暂时没有精力改,可以暂时忽略这个警告,它不会导致构建失败,但会在升级到Gradle 8.0的时候变成硬性错误。
5.3 Flutter项目的Gradle插件应用方式警告
搜索热词里有一条“you are applying flutter's main gradle plugin imperatively using the apply script method”,这是Flutter项目迁移到新版Gradle时的高频警告。它的意思是,你项目的settings.gradle或build.gradle里用了旧式的apply script方式引入Flutter插件,而新版推荐使用plugins DSL。
解决办法是把apply script改成plugins DSL。在settings.gradle里,把:
apply from: "$flutterRoot/packages/flutter_tools/gradle/app_plugin_loader.gradle"改为:
plugins { id "dev.flutter.flutter-plugin-loader" version "1.0.0" }然后移除build.gradle里的对应apply配置。这个改动需要你的Flutter版本和Gradle版本匹配,如果是在Flutter 2.x时代创建的项目,直接改成plugins DSL可能会遇到插件找不到的问题,需要先升级Flutter或者把settings.gradle里的pluginManagement仓库配置好。
5.4 Android Studio每次新建项目都要下载gradle
这个现象的根本原因是Android Studio在创建项目时,会根据模板生成一个指定版本的Gradle Wrapper,而这个版本你本地没有,所以它就去下载。解决办法有两个层面:第一个层面是给所有新项目指定一个统一版本,Android Studio里File -> Settings -> Build Tools -> Gradle,可以配置Gradle的发行版为一个本地目录,这样新建项目时会优先使用你指定的本地发行版,而不是每次去下载wrapper指定的版本。第二个层面是修改IDE的模板文件,让新项目的gradle-wrapper.properties默认指向你已经下载好的版本。这个方法比较麻烦,需要在Android Studio安装目录里找到项目模板的wrapper配置,不建议新手操作。
对我来说,最省事的方案就是:把gradle-7.2-all.zip提前下载好,然后在Android Studio的Gradle设置里选择“Use local Gradle distribution”,路径指向你解压好的目录。这样IDE就不会再去重复下载发行版了,无论是新建项目还是导入项目都会快很多。
6. 避坑经验与实用建议
6.1 备份和版本管理的血泪教训
Gradle的发行包说大不大,说小不小,但每次网络不好时都要重新下载,真的非常折磨人。我现在在公司电脑和个人的移动硬盘里各存了一份gradle-7.2-all.zip,还专门建了一个目录用来收藏各种版本的Gradle发行包。因为项目迭代久了,不同分支可能锁定在不同的Gradle版本,如果没有本地备份,切换分支时经常要等下载,这效率实在是太低了。
另外,我强烈建议团队内部维护一个统一的Gradle版本规范。不要每个项目各写各的distributionUrl,尽量统一到一个经过验证的版本上,比如7.2。这样可以大幅减少团队成员“我本地可以跑,你本地为什么不行”这种问题的出现频率。
6.2 关于gradle.properties的优化配置
在用户主目录下的.gradle文件夹中创建一个gradle.properties文件,可以全局性地影响所有Gradle构建的性能。我常用的配置有:
org.gradle.daemon=true org.gradle.parallel=true org.gradle.caching=true org.gradle.jvmargs=-Xmx4096m -XX:MaxMetaspaceSize=1024m开启daemon可以减少每次构建的JVM启动时间,parallel可以让多模块项目并行构建,caching则可以对构建输出做缓存,大幅提升重复构建的速度。jvmargs的大小要根据你电脑内存来设定,内存只有8G的话建议把Xmx设置为2048m,不然Gradle和Android Studio同时跑,机器容易卡死。
6.3 什么时候需要重装或者清理
Gradle用久了,~/.gradle/caches目录会非常庞大,动辄几个GB。如果你发现某次构建行为非常怪异,比如依赖解析出现莫名其妙的错误、插件版本不对,最直接的排查手段是执行gradle clean和gradle build,如果还不行,就直接删掉~/.gradle/caches目录重新构建。虽然是“核武器”级别的操作,但确实能解决很大一部分隐藏的缓存问题。
删缓存不会影响你之前安装的Gradle发行版,发行版在wrapper/dists目录,和caches是分开的。所以这个操作是安全的,最多就是第一次重新构建时要把依赖重新拉一遍,但换来的干净环境通常值得这个时间成本。
最后再做个小结式的推荐:新手也好,老手也罢,如果你要选择一个Gradle版本作为主力工具来使用,7.2-all这个版本真的是一个非常稳妥的选择。配置好了之后,日常开发的构建速度和稳定性都很不错,网上能搜到的各种资料也多。下载的时候记得先去腾讯镜像,安装的时候一定把环境变量配好,遇到下载问题就手动放本地dists目录,这几个关键点掌握住,Gradle这个工具就再也难不倒你了。
本文还有配套的精品资源,点击获取