问题概况
在执行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'
}
}
...