相关文章推荐
幸福的骆驼  ·  The project is using ...·  6 天前    · 
彷徨的铁链  ·  java中的 SecureRandom ...·  4 月前    · 
老实的松鼠  ·  Minio + Nginx ...·  1 年前    · 

使用vscode新建Flutter项目之后运行的时候可能会(大部分情况)报以下错误提示:

Exception in thread "main" java.util.zip.ZipException: error in opening zip file
        at java.util.zip.ZipFile.open(Native Method)                    
        at java.util.zip.ZipFile.<init>(ZipFile.java:225)               
        at java.util.zip.ZipFile.<init>(ZipFile.java:155)               
        at java.util.zip.ZipFile.<init>(ZipFile.java:169)               
        at org.gradle.wrapper.Install.unzip(Install.java:214)           
        at org.gradle.wrapper.Install.access$600(Install.java:27)       
        at org.gradle.wrapper.Install$1.call(Install.java:74)           
        at org.gradle.wrapper.Install$1.call(Install.java:48)           
        at org.gradle.wrapper.ExclusiveFileAccessManager.access(ExclusiveFileAccessManager.java:65)
        at org.gradle.wrapper.Install.createDist(Install.java:48)       
        at org.gradle.wrapper.WrapperExecutor.execute(WrapperExecutor.java:128)
        at org.gradle.wrapper.GradleWrapperMain.main(GradleWrapperMain.java:61)
Running Gradle task 'assembleDebug'...                                  
Running Gradle task 'assembleDebug'... Done                         1.8s
[!] Gradle threw an error while downloading artifacts from the network.
Retrying to download...

简单分析一下这个错误提示,错误信息的最后一句有这样一句:

Gradle threw an error while downloading artifacts from the network.

这句话的意思是,通过网络下载Gradle配置文件的时候出错了。那么我们的项目中有哪些地方是需要配置并且下载gradle的呢?主要是build.gradle和gradle-wrapper.properties这两个文件。 既然知道问题大概出在什么位置了,那就从这两个文件入手试着解决一下看看。

首先是build.gradle文件,我们知道这个文件里的配置信息都是通过google和jcenter下载的,这两个下载源在国内访问都是很慢的,我们把镜像源改为国内的阿里云试一下,注意需要同时配置buildscript、allprojects两个节点,把这两个节点下的repositories内容替换成阿里云镜像源:

repositories {
        maven { url 'http://maven.aliyun.com/nexus/content/groups/public/'}
         maven { url 'http://maven.aliyun.com/nexus/content/repositories/jcenter'}
         maven { url 'http://maven.aliyun.com/nexus/content/repositories/google'}
         maven { url 'http://maven.aliyun.com/nexus/content/repositories/gradle-plugin'}
        jcenter()

然后执行flutter run运行程序,发现依然报错,这就说明这个错误和镜像源本身是没有关系的,但是为了后续使用方便,我们依然保留阿里云的镜像源配置。

既然配置镜像源的方式没有解决我们的问题,那么我们就试着修改一下gradle-wrapper.properties中的内容。 vscode创建的flutter项目,其gradle-wrapper.properties文件中默认为我们配置的gradle版本是5.6.2,我本地有比较新的6.7-all版本。我们把默认的版本替换成本地比较新的

distributionUrl=https\://services.gradle.org/distributions/gradle-6.7-all.zip

然后再次执行flutter run,发现没有报错并且应用成功安装到了手机上。问题解决,那么文章开头提到的错误应该是跟gradle的版本比较低有关了。

  •