下载Gradle时,Ionic构建Android错误

时间:2015-04-26 06:34:54

标签: java android ionic-framework gradle build

我对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)

16 个答案:

答案 0 :(得分:107)

我使用的是Ionic 1.7.14版,以及在以下文件中找到的distributionUrl。 myApp/platforms/android/cordova/lib/builders/GradleBuilder.js.

我不得不指出本答复中指定的本地下载的gradle。

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

从已发布的链接下载gradle后(此处为http://services.gradle.org/distributions/gradle-2.2.1-all.zip)将其粘贴到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';

答案 1 :(得分:52)

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

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

cordova build android -- --ant

答案 2 :(得分:21)

我遇到了这个问题,因为我们的网络代理阻止了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文件
    • windows:setx CORDOVA_ANDROID_GRADLE_DISTRIBUTION_URL ../gradle-2.2.1-all.zip
  4. 运行ionic build android

答案 3 :(得分:12)

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

答案 4 :(得分:8)

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

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

答案 5 :(得分:8)

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

答案 6 :(得分:6)

大家好我有同样的问题。

在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';

并且有效。

答案 7 :(得分:3)

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

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

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

答案 8 :(得分:3)

以前的解决方案似乎存在问题。至少他们都没有为我工作,我只是改为:

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

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

 var distributionUrl = 'distributionUrl=http\\://localhost/gradle-2.2.1-all.zip';
BTW,我正在使用离子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';

答案 9 :(得分:3)

我遇到了同样的问题,它通过卸载构建工具24并从SDK Manager安装构建工具23来解决。

答案 10 :(得分:2)

我最近遇到了同样的问题,我一直在那里搜索。

最后,对于最新版本,我找到了解决方案。

"离子平台添加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

答案 11 :(得分:0)

听起来像Windows Defender或其他一些防病毒系统正在搞乱您的安装。因此,暂时停用防火墙并重新运行命令:

ionic build android (or ios)

最后你有消息BUILD SUCCESSFUL ...

答案 12 :(得分:0)

我用了上面的所有东西,但是什么也没用,然后我做了,繁荣了。.

enter image description here

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

enter image description here

答案 13 :(得分:-1)

更新Android平台为我做了诀窍:

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

答案 14 :(得分:-1)

这是因为Gradle错误。

下载文件http://services.gradle.org/distributions/gradle-2.14.1-all.zip并在任何目录中解压缩并通过打开cmd设置路径并输入: setx path(解压缩目录)/ bin

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

答案 15 :(得分:-2)

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

更新Ionic。

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