问题概况
在执行 flutter run 后,长时间卡在 initializing gradle 或 resolving dependencies,然后报错。
这一情况通常是因为无法从 Google 和 JCenter 中获取相关资源所导致的,而 gradle 在进行资源访问时由于会绕过系统代理(未证实),所以即使有时在配置了代理的情况下也无法访问成功。
解决方案
这一解决方案只在 mac 上用过,不过 Windows 和 Linux 也是一样的操作。在不科学上网的情况下,可以用阿里云的源来替代 Google 和 JCenter,可以修改以下两个文件中的一个(或者都改了)。
修改项目目录中的 build.gradle
修改项目中的 build.gradle 可以修改当前项目 gradle 使用的源,位置如下:
你的 flutter 项目根目录 /android/gradle/build.gradle
进行如下修改:
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.0.1’
}
}
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 的 flutter.gradle
也可以选择直接修改 flutter SDK 中的 gradle 文件,位置如下:
你的 flutter SDK 根目录 /packages/flutter_tools/gradle/flutter.gradle
进行如下修改:
import …
…
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.3.2’
}
}
…