用 Android Studio 做安卓开发的人,十个里有九个经历过这样的场景:项目一打开,右下角 Gradle 开始转圈,仔细一看日志,卡在“Downloading https://services.gradle.org/distributions/gradle-8.2-bin.zip”,等了十分钟还是百分之几;要么就是 sync 的时候刷了一屏红色错误,点开一看全是 “Could not resolve androidx.appcompat:appcompat:1.6.1”,但其实这个包确实存在,也不是版本写错了,就是拉不下来。这些问题的根源,说白了就是 Gradle 默认下载源在国内访问不稳定。用国内镜像把下载地址替换掉,是解决这个问题的核心手段,也是今天我要展开说的内容。
1. 每次构建卡半天:先把 Gradle 的两个独立下载阶段拆明白
很多人在“Gradle 国内镜像”这个问题上绕圈子,不是因为教程少,而是因为没搞清楚 Gradle 的“下载慢”其实包含两个完全不同的阶段:一个是下载 Gradle 发行包本身,另一个是下载项目依赖的第三方库。两个阶段用的配置文件、解决方案完全不一样。混在一起排查,经常会出现“改了 A 没解决 B”的情况,非常浪费时间。
1.1 发行包:gradle-wrapper.properties 里的 distributionUrl 决定一切
先说发行包。每一个 Android Studio 项目,根目录下都会有一个 gradlew 脚本,以及 gradle/wrapper/gradle-wrapper.properties 文件,这套机制叫 Gradle Wrapper。它的作用是把项目的 Gradle 版本固定下来,让所有开发者和 CI 机器用同一个版本构建,避免“我机器上能过,你机器上过不了”的环境不一致问题。
gradle-wrapper.properties 里最关键的一行是:
properties复制distributionUrl=https\://services.gradle.org/distributions/gradle-8.2-bin.zip
第一次打开项目或执行构建时,Gradle Wrapper 就会根据 distributionUrl 去下载 gradle-8.2-bin.zip。只要本地缓存里没有这个版本,它就会重新下载。这个压缩包通常 100MB 到 200MB,从默认的官方源下载,在国内经常只有几 KB/s,甚至直接超时。项目多、版本多的时候,每切换一个项目就要重新经历一次这种等待,非常消耗耐心。
1.2 依赖库:仓库地址写在 settings.gradle 而不是 gradlew 里
第二个阶段是项目依赖下载。项目里用到的 AndroidX、Compose、Glide、OkHttp 这些第三方库,全部要从仓库拉取。仓库地址定义在项目根目录的 settings.gradle(新版项目)或者 build.gradle(老版项目)里,最常见的是:
groovy复制repositor
