建立Flutter工程后,编译过程卡在了Running Gradle task ‘assembleDebug’…或者‘assembleRelease’
这时候一般在下载gradle并配置项目。所以可能出现的问题一般有两种
一、下载过程出现问题。
Gradle目录一般在 “C:\Users\[用户名]\.gradle\” 下,若是非windows系统,请自行替换用户主目录。如果AndroidStudio开发,该路径可以在"File | Settings | Build, Execution, Deployment | Build Tools | Gradle"中修改。
我使用的是 “gradle-6.0.1” ,可以在官网 https://gradle.org/releases/ 页面下载对应的 “complete” 安装包,放在 “C:\Users\[用户名]\.gradle\wrapper\dists\gradle-6.0.1-all\99d3u8wxs16ndehh90lbbir67” 目录下,gradle的版本可以在 "[工程目录]\android\gradle\wrapper\gradle-wrapper.properties" 文件中设置
#Fri Jun 23 08:50:38 CEST 2017
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-6.0.1-all.zip
如果Running Gradle task报错,提示Exception in thread "main" java.util.zip.ZipException: error in opening zip file,并且编译时很快就提示此错误,没有太长的等待时间。说明是gradle压缩包损坏,解决方案是,去上一段所说的gradle目录中,删掉 “[Gradle目录]\wrapper\dists\gradle-6.0.1-all\99d3u8wxs16ndehh90lbbir67” 文件夹下的zip文件以及解压出的文件夹,重新编译下载或者手动下载gradle压缩包。
二、gradle仓库问题
如果gradle工具下载正常,但编译过程依然卡住超过10分钟不能结束。那可能就是仓库问题,gradle的Maven仓库在国外, 因此可以使用阿里云的镜像地址,如果搭梯子翻墙并且梯子质量很好,可能不会越到这个问题。
主要解决思路为使用如下镜像:
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' }
具体修改文件为:"[工程目录]\android\build.gradle" 和 "[Flutter安装目录]\packages\flutter_tools\gradle\flutter.gradle"。将文件中的 google()和jcenter() 替换为上述镜像。
[工程目录]\android\build.gradle:
buildscript {
ext.kotlin_version = '1.3.71'
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.6.3'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
}
}
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' }
}
}
// 后文的配置不要改动
rootProject.buildDir = '../build'
subprojects {
project.buildDir = "${rootProject.buildDir}/${project.name}"
}
subprojects {
project.evaluationDependsOn(':app')
}
task clean(type: Delete) {
delete rootProject.buildDir
}
[Flutter安装目录]\packages\flutter_tools\gradle\flutter.gradle:
import org.apache.tools.ant.taskdefs.condition.Os
import org.gradle.api.DefaultTask
import org.gradle.api.GradleException
import org.gradle.api.Project
import org.gradle.api.Plugin
import org.gradle.api.Task
import org.gradle.api.file.CopySpec
import org.gradle.api.file.FileCollection
import org.gradle.api.tasks.Copy
import org.gradle.api.tasks.InputFiles
import org.gradle.api.tasks.OutputDirectory
import org.gradle.api.tasks.TaskAction
import org.gradle.api.tasks.bundling.Jar
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'
}
}
// 后边的配置不要动
android {
compileOptions {
sourceCompatibility 1.8
targetCompatibility 1.8
}
}
…………
…………