0%

Flutter的坑

Flutter国内镜像

国内下载flutter和安装依赖实在是太太太太太慢了!!!

下面是国内几个镜像,PUB_HOSTED_URL是Dart依赖包地址,FLUTTER_STORAGE_BASE_URL是Flutter依赖文件地址。

要手动下载最新版本的flutter SDK包,可以访问 FLUTTER_STORAGE_BASE_URL 地址,然后进入/flutter_infra/releases/目录下载(这个方式Flutter社区不可用)。

Flutter 社区
社区主镜像,采用多种方式同步 Flutter 开发者资源(推荐)。

1
2
$ export PUB_HOSTED_URL=https://pub.flutter-io.cn
$ export FLUTTER_STORAGE_BASE_URL=https://storage.flutter-io.cn

上海交大 Linux 用户组
使用反向代理方式建立的 Flutter 镜像,数据与站源实时同步。 Pub API 返回值未做处理,可能造成无法访问的情况。

1
2
$ export PUB_HOSTED_URL=https://dart-pub.mirrors.sjtug.sjtu.edu.cn
$ export FLUTTER_STORAGE_BASE_URL=https://mirrors.sjtug.sjtu.edu.cn

清华大学 TUNA 协会
定时与 Flutter 社区 Storage 镜像同步,Pub API 采取定时主动抓取策略,镜像配置了完善的失败回源策略(推荐)。

1
2
$ export PUB_HOSTED_URL=https://mirrors.tuna.tsinghua.edu.cn/dart-pub
$ export FLUTTER_STORAGE_BASE_URL=https://mirrors.tuna.tsinghua.edu.cn/flutter

CNNIC
基于 TUNA 协会的镜像服务,数据策略与 TUNA 一致,通过非教育网的域名访问。

1
2
$ export PUB_HOSTED_URL=http://mirrors.cnnic.cn/dart-pub
$ export FLUTTER_STORAGE_BASE_URL=http://mirrors.cnnic.cn/flutter

腾讯云开源镜像站
定时(每天凌晨)与 TUNA 协会镜像同步,数据有延迟,访问速度有待反馈。

1
2
$ export PUB_HOSTED_URL=https://mirrors.cloud.tencent.com/dart-pub
$ export FLUTTER_STORAGE_BASE_URL=https://mirrors.cloud.tencent.com/flutter

开发或者编译卡死的问题

开发或者编译会遇到 Running Gradle task 'assembleDebug'... 或者 Running Gradle task 'assembleRelease'...

因为需要下载安卓中的一些依赖,maven,下载地址需要替换。

打开 flutter_app/android/build.gradle,修改

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
buildscript {
ext.kotlin_version = '1.3.50'
repositories {
// google()
// jcenter()
maven { url 'https://maven.aliyun.com/repository/google' }
maven { url 'https://maven.aliyun.com/repository/jcenter' }
maven { url 'http://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 'http://maven.aliyun.com/nexus/content/groups/public' }
}
}

打开flutter的SDK目录flutter/packages/flutter_tools/gradle/flutter.gradle

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
buildscript {
repositories {
// google()
// jcenter()
maven { url 'https://maven.aliyun.com/repository/google' }
maven { url 'https://maven.aliyun.com/repository/jcenter' }
maven { url 'http://maven.aliyun.com/nexus/content/groups/public' }
}
dependencies {
classpath 'com.android.tools.build:gradle:3.5.0'
}
}
....

// 下面这个变量改成国内地址
private static final String MAVEN_REPO = "https://storage.flutter-io.cn/download.flutter.io";

注: 如果还有问题,那么可以排查安装的依赖包,有的依赖包也需要gradle编译,所以也要修改repositories,可以在import语句那里ctrl加鼠标点击跳转到依赖包目录,进行同样的操作即可修复。

如果flutter run 失败了,或者ctrl+c,请在任务管理器中把dart,java相关的进程kill掉,再重试。