【问题标题】:Ionic build Android error when downloading Gradle下载 Gradle 时 Ionic 构建 Android 错误
【发布时间】:2015-07-04 15:44:44
【问题描述】:

我对 Ionic 框架很陌生 :)

>npm install -g cordova
>npm install -g ionic
>ionic start test blank
>cd test
>ionic platform add android

当我使用 '>ionic build android' 开始下载 gradle,但我无法下载并出现错误。

是什么导致了这个错误,我该如何解决?!

我下载 Gradle 并将其安装在 PC 上,但它想再次下载。 我可以离线将 Gradle 添加到项目中吗?

C:\Users\LENOVO2014\test>ionic build android
running cordova build android
Running command: "C:\Program Files\nodejs\node.exe" C:\Users\LENOVO2014\myApp\ho
oks\after_prepare\010_add_platform_class.js C:\Users\LENOVO2014\myApp
add to body class: platform-android
Running command: C:\Users\LENOVO2014\myApp\platforms\android\cordova\build.bat
ANDROID_HOME=D:\program\Programing\Android\sdk
JAVA_HOME=C:\Program Files\Java\jdk1.8.0_31
Running: C:\Users\LENOVO2014\myApp\platforms\android\gradlew cdvBuildDebug -b C:
\Users\LENOVO2014\myApp\platforms\android\build.gradle -Dorg.gradle.daemon=true
Downloading http://services.gradle.org/distributions/gradle-2.2.1-all.zip
................................................................................
................................................................................
................................................................................
............................................
Exception in thread "main" java.lang.RuntimeException: java.net.SocketException:
 Connection reset
        at org.gradle.wrapper.ExclusiveFileAccessManager.access(ExclusiveFileAcc
essManager.java:78)
        at org.gradle.wrapper.Install.createDist(Install.java:47)
        at org.gradle.wrapper.WrapperExecutor.execute(WrapperExecutor.java:129)
        at org.gradle.wrapper.GradleWrapperMain.main(GradleWrapperMain.java:48)
Caused by: java.net.SocketException: Connection reset
        at java.net.SocketInputStream.read(SocketInputStream.java:189)
        at java.net.SocketInputStream.read(SocketInputStream.java:121)
        at java.io.BufferedInputStream.read1(BufferedInputStream.java:284)
        at java.io.BufferedInputStream.read(BufferedInputStream.java:345)
        at sun.net.www.MeteredStream.read(MeteredStream.java:134)
        at java.io.FilterInputStream.read(FilterInputStream.java:133)
        at sun.net.www.protocol.http.HttpURLConnection$HttpInputStream.read(Http
URLConnection.java:3335)
        at sun.net.www.protocol.http.HttpURLConnection$HttpInputStream.read(Http
URLConnection.java:3328)
        at org.gradle.wrapper.Download.downloadInternal(Download.java:63)
        at org.gradle.wrapper.Download.download(Download.java:45)
        at org.gradle.wrapper.Install$1.call(Install.java:60)
        at org.gradle.wrapper.Install$1.call(Install.java:47)
        at org.gradle.wrapper.ExclusiveFileAccessManager.access(ExclusiveFileAcc
essManager.java:65)
        ... 3 more

C:\Users\LENOVO2014\myApp\platforms\android\cordova\node_modules\q\q.js:126
                    throw e;
                          ^
Error code 1 for command: cmd with args: /s /c "C:\Users\LENOVO2014\myApp\platfo
rms\android\gradlew cdvBuildDebug -b C:\Users\LENOVO2014\myApp\platforms\android
\build.gradle -Dorg.gradle.daemon=true"
ERROR building one of the platforms: Error: C:\Users\LENOVO2014\myApp\platforms\
android\cordova\build.bat: Command failed with exit code 1
You may not have the required environment or OS to build this project
Error: C:\Users\LENOVO2014\myApp\platforms\android\cordova\build.bat: Command fa
iled with exit code 1
    at ChildProcess.whenDone (C:\Users\LENOVO2014\AppData\Roaming\npm\node_modul
es\cordova\node_modules\cordova-lib\src\cordova\superspawn.js:131:23)
    at ChildProcess.emit (events.js:110:17)
    at maybeClose (child_process.js:1015:16)
    at Process.ChildProcess._handle.onexit (child_process.js:1087:5)

【问题讨论】:

  • 我也有同样的问题,下载失败是因为我公司网络的代理。我正在寻找解决方案,如果我找到了,我会在这里发布。
  • 我回到科尔多瓦 4 女巫不使用 graddle :/
  • 你必须使用VPN。

标签: java android ionic-framework gradle build


【解决方案1】:

我使用了上面的所有东西,但没有任何效果,然后我做了这个并且成功了..!

这是我所做的: 1.从你的项目中打开cmd 2.转到https://services.gradle.org/distributions/点击你需要的版本,右键复制链接。 3. 完成后设置变量:设置 CORDOVA_ANDROID_GRADLE_DISTRIBUTION_URL=https://services.gradle.org/distributions/gradle-2.2.1-all.zip 4. 一切顺利!

【讨论】:

    【解决方案2】:

    就离子开发而言,您必须使用下面提到的 URL 修改 GradleBuilder.js 中的分发 URL。

    /android/cordova/lib/builders/GradleBuilder.js

    var distributionUrl = process.env['CORDOVA_ANDROID_GRADLE_DISTRIBUTION_URL'] || 'https://services.gradle.org/distributions/gradle-2.14.1-all.zip';

    【讨论】:

      【解决方案3】:

      由于上面发布的解决方案需要将 .zip 包含到大约 55MB 的文件夹中

      您还可以使用以下命令强制 CLI 在构建期间使用 Ant 而不是 gradle:

      cordova build android -- --ant
      

      【讨论】:

      • ant 未安装。怎么办?
      • 如果你有 ant 无法构建的插件,这将不起作用。
      • 我尝试在 linux mint 上构建和模拟 ionic 应用程序已经两天了,唯一的方法是这个解决方案ionic build android -- --antionic emulate android -- --ant
      【解决方案4】:

      下载 JDK 版本 8 并删除所有现有版本。

      并更新 Ionic。

      希望你的问题能得到解决。

      【讨论】:

        【解决方案5】:

        这是因为 Gradle 错误。

        下载http://services.gradle.org/distributions/gradle-2.14.1-all.zip文件,解压到任意目录,打开cmd设置路径,输入:setx path (extracted directory)/bin

        之后,重新打开 cmd 并通过发出 gradle -v 检查 Gradle 是否正常工作。它显示 Gradle 版本输出。现在错误已修复;运行ionic build android

        【讨论】:

          【解决方案6】:

          我遇到了同样的问题,通过卸载 build-tools 24 并从 SDK Manager 安装 build-tools 23 解决了。

          【讨论】:

          • 在 android studo 中:如果您尚未升级到 build-tools 25 并且仍然针对 api 23,则此方法有效。在我将 sdk、tareget api 和 build tools 升级到 25 后,它不是 aa问题。
          【解决方案7】:

          听起来 Windows Defender 或其他一些防病毒系统正在干扰您的安装。所以暂时停用防火墙并重新运行命令:

          ionic build android (or ios)
          

          最后你会看到消息 BUILD SUCCESSFUL...

          【讨论】:

            【解决方案8】:

            这里的所有答案都在说同样的事情,而这比最佳答案更容易做到。更新您的 Android SDK 应该可以修复它,您可以在终端使用这一行来完成:

            android update sdk --no-ui --all --filter "extra-android-m2repository"
            

            android update sdk --no-ui --filter extra
            

            另请参阅this repos 问题(本质上是相同的问题)。

            但是在你进行重建之后,它应该可以工作。

            【讨论】:

              【解决方案9】:

              我遇到了这个问题,因为我们的网络代理阻止了 zip 文件的下载。这是我发现的:

              注意:这与“接受”的答案不同,因为我们没有直接修改 Cordova 的库。当您运行 ionic state restore 时,这不太容易出现“错误”或被覆盖

              1. 下载 gradle - http://services.gradle.org/distributions/gradle-2.2.1-all.zip

              2. 将此文件放入platforms/android/gradle。但是,如果您要将其集成到构建过程中,您可能希望将其粘贴到不那么不稳定的地方,并添加一个将文件复制到该位置的步骤。

              3. 设置环境变量CORDOVA_ANDROID_GRADLE_DISTRIBUTION_URL../gradle-2.2.1-all.zip

                • linux/osx:将 export CORDOVA_ANDROID_GRADLE_DISTRIBUTION_URL="../gradle-2.2.1-all.zip" 添加到您的 ~/.bashrc 文件中
                • 窗口:setx CORDOVA_ANDROID_GRADLE_DISTRIBUTION_URL ../gradle-2.2.1-all.zip
              4. 运行ionic build android

              【讨论】:

              • 我没有在窗口中获得设置的环境变量点。如何在用户变量或系统变量中设置?
              • 在第 2 点)如何添加将文件复制到该位置的步骤。
              • @muneeb_ahmed 您可以使用 Powershell 或通过“环境变量”UI 设置环境变量。 stackoverflow.com/questions/32730544/…
              • 另外,就在那里复制文件而言,您可以手动复制文件或将其添加到 npm 任务或其他东西中。有无数的选项可以实现自动化。这在某种程度上取决于您的其余过程。通常,该文件只会在离子状态恢复后消失。
              【解决方案10】:

              以前的解决方案似乎有问题。至少它们都不适合我,我只是将其更改为:

              var distributionUrl = 'http://localhost/gradle-2.2.1-all.zip';
              

              然后就可以了。我不知道为什么他们都添加“distributionUrl=”如下(这对我不起作用):

               var distributionUrl = 'distributionUrl=http\\://localhost/gradle-2.2.1-all.zip';
              

              顺便说一句,我使用的是 ionic 2。

              如果不想使用localhost,请注意路径。它会在distributionUrl之前自动添加myApp/platforms/android/gradle/wrapper,例如如果你把gradle-2.2.1-all.zip放进去 myApp/platforms/android/gradle 目录,则需要设置:

              var distributionUrl = '../gradle-2.2.1-all.zip';
              

              【讨论】:

              • 这对我使用 ionic 1 和 cordova 6 (cordova-android 4.1.1) 有效
              【解决方案11】:

              我最近遇到了同样的问题,我到处搜索。

              最后我找到了最新版本的解决方案。

              在“ionic platform add android”命令后,进入platforms/android/cordova/lib/builders/GradleBuilder.js

              搜索

              http\\://services.gradle.org/distributions/gradle-2.2.1-all.zip
              

              并将其更改为

              http\\://downloads.gradle.org/distributions/gradle-2.2.1-all.zip
              

              【讨论】:

              • 它不断地重新设置自己
              【解决方案12】:

              Cordova 6.0.0 / Visual Studio Code 0.10.6

              TL;DR

              手动下载http://services.gradle.org/distributions/gradle-2.2.1-all.zip

              把它放在appName\platforms\android\gradle\

              set CORDOVA_ANDROID_GRADLE_DISTRIBUTION_URL=..\gradle-2.2.1-all.zip
              

              启动代码并编译。

              解释:

              GradleBuilder.js 设置distributionUrl 如下:

              var distributionUrl = process.env['CORDOVA_ANDROID_GRADLE_DISTRIBUTION_URL'] || 'http\://services.gradle.org/distributions/gradle-2.2.1-all.zip';

              脚本在appName\platforms\android\gradle\wrapper中运行

              输出是:

              正在下载文件://appname/platforms/android/gradle/gradle-2.2.1-all.zip

              【讨论】:

              • 似乎它实际上并不依赖于 Cordova 6,而是依赖于 Cordova Android 5.0 - 请参阅 this issue。因此,当您将 Cordova Android 更新到 5.0 时,您可以使用 CORDOVA_ANDROID_GRADLE_DISTRIBUTION_URL env 参数而无需编辑任何构建文件。
              【解决方案13】:

              更新 Android 平台对我有用:

              • Cordova 平台更新 Android
              • 科尔多瓦准备,
              • Cordova 编译,最后
              • Cordova 构建

              【讨论】:

                【解决方案14】:

                命令行的另一个选项是在cordova build 命令之前运行$ export JAVA_OPTS="-Dhttp.proxyHost=proxy-url.com -Dhttp.proxyPort=911 -Dhttps.proxyHost=secure-proxy-url.com -Dhttps.proxyPort=911"

                【讨论】:

                • 这使您不必为每个 signle 项目复制 gradle 文件和修改配置文件。
                • 但是每次都必须指定这个?
                【解决方案15】:

                我使用的是 Ionic 版本 1.7.14 和以下文件中的 distributionUrl。 myApp/platforms/android/cordova/lib/builders/GradleBuilder.js.

                我必须按照此答案中的说明指向本地下载的 gradle。

                我遇到了同样的问题。我离线添加了 gradle 到我的项目中。

                从发布的链接(这里是 http://services.gradle.org/distributions/gradle-2.2.1-all.zip)下载 gradle 后,将其粘贴到 myApp\platforms\android\gradle\gradle-2.2.1-all.zip 之类的地方,然后在 myApp\platforms\android\cordova\lib\build.js 的 build.js 中找到这个:

                var distributionUrl = 'distributionUrl=http\\://services.gradle.org/distributions/gradle-2.2.1-all.zip';
                

                并将其替换为您自己的文件位置:

                var distributionUrl = 'distributionUrl=../gradle-2.2.1-all.zip';
                

                【讨论】:

                • 真实路径为:project/platforms/android/cordova/lib/builders/GradleBuilder.js
                • 这个解决方案“大部分”是正确的,尽管我们可能应该建议反对修改cordova JS代码。看来您可以设置一个环境变量来完成此操作,它a)不易出错,b)在删除平台目录时不太可能被“覆盖”
                • 我在以下路径和文件 'myApp\platforms\android\cordova\lib\builders\GradleBuilder.js' 中找到了分发 url
                • 我遇到了同样的问题,但多次尝试后消失了。同意@Jeff
                • @aishapp 看到我的回答。这是正确的解决方案。这个答案不应该被接受,也不应该被如此高地投票。我们不应该修改科尔多瓦的代码。如果你运行“cordova platform remove android”,这些东西会被删除
                【解决方案16】:

                如果您需要在您的网络上使用代理,请在 %USER_HOME%/.gradle 中添加一个 gradle.properties 文件,其中包含以下内容,但将值替换为您的代理详细信息。这对我有用。

                gradlePropertiesProp=gradlePropertiesValue
                sysProp=shouldBeOverWrittenBySysProp   
                envProjectProp=shouldBeOverWrittenByEnvProp  
                systemProp.system=systemValue    
                systemProp.http.proxyHost=myproxy.com    
                systemProp.http.proxyPort=8080    
                systemProp.http.nonProxyHosts=\*.mydomain.com|localhost   
                systemProp.https.proxyHost=myproxy.com    
                systemProp.https.proxyPort=8080    
                systemProp.https.nonProxyHosts=\*.mydomain.com|localhost
                

                【讨论】:

                • 这就是我的答案 (macOS)。如果gradle.properties 文件不存在,只需在platforms/android 中创建一个即可。只需要:systemProp.http.proxyHostsystemProp.http.proxyPortsystemProp.https.proxyHostsystemProp.https.proxyPort
                【解决方案17】:

                大家好,我有同样的问题。

                在platforms\android\cordova\lib\build.js文件中,我改了

                var distributionUrl = 'distributionUrl=http\\://services.gradle.org/distributions/gradle-2.2.1-all.zip';
                

                var distributionUrl = 'distributionUrl=http://services.gradle.org/distributions/gradle-2.2.1-all.zip';
                

                它成功了。

                【讨论】:

                • 将 https 更改为使用 http
                • 抱歉,在我的 build.js 中没有这个变量,在 GradleBuilder.js
                • 对我来说它位于 /platforms/android/cordova/lib/builders/StudioBuilder.js 和 /platforms/android/cordova/lib/builders/GradleBuilder.js
                【解决方案18】:

                或者,如果您的本地主机上有 Web 服务器,请下载并将 gradle(正是测试版本,即本文发布时的http://downloads.gradle.org/distributions/gradle-2.2.1-all.zip)放在 www 根目录中,然后更改平台\android\cordova\ lib\build.js 文件在你的应用程序目录到这个:

                 var distributionUrl = 'distributionUrl=http\\://localhost/gradle-2.2.1-all.zip';
                

                在 Windows 下将 URL 更改为本地文件(不是 http 地址)对我不起作用,它会抱怨 URL 的协议未知。

                【讨论】:

                  猜你喜欢
                  • 1970-01-01
                  • 2016-09-19
                  • 2018-04-18
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 2018-09-07
                  • 1970-01-01
                  • 1970-01-01
                  相关资源
                  最近更新 更多