解决 Flutter 编译问题:适应中国网络环境

编程

在 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 开发的开发者来说,适应当地的网络环境是非常重要的。通过选择合适的镜像源,可以显著提高依赖下载速度,从而提升开发效率。

希望我的经验能帮助到遇到类似问题的开发者。

参考: