如何进行 Flutter Android Gradle 网络优化
Posted on Wed, 25 Dec 2024 11:21:03 +0800 by LiangMingJian
需求
运行 Flutter 或 Android 项目后,终端一直卡在:Running Gradle task 'assembleDebug'...,或在这个后提示连接被拒绝。
原因
Flutter Android 项目,或者说 Android 项目会在编译项目前检查项目配置,然后从远端服务器下载所需资源。因此,受远端服务器影响,所需时间可能会很长,同时界面不会有任何提示,所以用户会觉得程序卡住,无法执行。
此时,用户可以打开任务管理器,检查 IDE 或 JDK 的下载流量,以此判断程序是否在执行。
但最好的解决办法是替换镜像源,来加快资源下载速度。(因为资源大部分都在国外,因此需要进行镜像加速)
解决方案
配置 Flutter 资源库镜像
在系统环境变量中添加以下内容。
PUB_HOSTED_URL="https://pub.flutter-io.cn"
FLUTTER_STORAGE_BASE_URL="https://storage.flutter-io.cn"
配置项目 Gradle 的下载地址
访问项目文件 android\gradle\wrapper\gradle-wrapper.properties,修改 distributionUrl 这个值。
# 原来的配置
distributionUrl=https\://services.gradle.org/distributions/gradle-8.14-all.zip
# 使用腾讯云加速
distributionUrl=https\://mirrors.cloud.tencent.com/gradle/gradle-8.14-all.zip
# 使用阿里云加速
distributionUrl=https\://mirrors.aliyun.com/macports/distfiles/gradle/gradle-8.14-all.zip
配置 build.gradle 或 settings.gradle 文件
定位文件 android\build.gradle 和 android\settings.gradle。
在 build.gradle 中找到 buildscript 或 allprojects 这两个配置项。
在 settings.gradle 中找到 pluginManagement 或 dependencyResolutionManagement 这两个配置项。
在上面这些配置项中,找到 repositories 这个值,在值内加入以下的镜像地址。
repositories {
maven { url 'https://maven.aliyun.com/repository/public'}
maven { url 'https://maven.aliyun.com/repository/central' }
maven { url 'https://maven.aliyun.com/repository/google'}
maven { url 'https://maven.aliyun.com/repository/gradle-plugin' }
}
配置 build.gradle.kts 或 settings.gradle.kts 文件(在较新版本的 Flutter Android 项目)
定位文件 android\build.gradle.kts 和 android\settings.gradle.kts。
在 build.gradle.kts 中找到 buildscript 或 allprojects 这两个配置项。
在 settings.gradle.kts 中找到 pluginManagement 或 dependencyResolutionManagement 这两个配置项。
在上面这些配置项中,找到 repositories 这个值,在值内加入以下的镜像地址。
在
.kts这类 Kotlin 语言文件中,这里的 maven 被写成了一个方法,因此需要使用url=xxx键值对来传递参数。
repositories {
maven(url = "https://maven.aliyun.com/repository/public/")
maven(url = "https://maven.aliyun.com/repository/central")
maven(url = "https://maven.aliyun.com/repository/google")
maven(url = "https://maven.aliyun.com/repository/gradle-plugin")
}