在 Flutter 开发过程中,尤其是在中国这样的特殊网络环境下,经常会遇到各种编译和构建问题。本文将分享我在编译 Flutter 安卓手机 App 应用时遇到的问题、原因分析以及解决方案。
症状描述
在执行 flutter run
命令时,编译过程卡在了 Running Gradle task 'assembleDebug'...
这一步。通过使用 flutter run -v
查看详细日志,发现问题出现在下载 Kotlin 插件这一环节。
> flutter run -v
[ +105 ms] Downloading
https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-gradle-plugin/1.7.10/kotlin-gradle-plugin-1.7.10-gradle70.jar to
use_path\.gradle\.tmp\gradle_download56489745132789bin
成因分析
由于中国大陆的网络环境受到 GFW 的影响,访问国外服务器时常会遇到连接缓慢或者无法连接的问题。这直接导致了从 Gradle 官方网站和 JCenter 等源下载依赖时的困难。
解决方法
1. 修改 build.gradle
在项目的 build.gradle
文件中,我替换了原有的 google()
和 jcenter()
源为阿里云提供的Maven仓库。这样可以通过国内的镜像加速下载过程。
buildscript {
ext.kotlin_version = '1.7.10'
repositories {
- google()
- jcenter()
+ maven { url 'https://maven.aliyun.com/repository/google' }
+ maven { url 'https://maven.aliyun.com/repository/jcenter' }
+ maven { url 'https://maven.aliyun.com/nexus/content/groups/public' }
}
...
}
allprojects {
repositories {
- google()
- jcenter()
+ maven { url 'https://maven.aliyun.com/repository/google' }
+ maven { url 'https://maven.aliyun.com/repository/jcenter' }
+ maven { url 'https://maven.aliyun.com/nexus/content/groups/public' }
}
}
2. 修改 gradle-wrapper.properties
将 Gradle 的分发 URL 从官方地址更改为腾讯云提供的镜像地址,这样可以更快地下载 Gradle 包。
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
- distributionUrl=https\://services.gradle.org/distributions/gradle-7.5.1-all.zip
+ distributionUrl=https\://mirrors.cloud.tencent.com/gradle/gradle-7.5.1-all.zip
结果
通过上述修改后,我成功解决了编译卡顿的问题,现在可以顺利在模拟器上运行应用。
小结
对于在中国进行 Flutter 开发的开发者来说,适应当地的网络环境是非常重要的。通过选择合适的镜像源,可以显著提高依赖下载速度,从而提升开发效率。
希望我的经验能帮助到遇到类似问题的开发者。
参考: