下载Gradle时,Ionic构建Android错误

sad*_*egh 71 java android build gradle ionic-framework

我是Ionic框架的新手:)

>npm install -g cordova
>npm install -g ionic
>ionic start test blank
>cd test
>ionic platform add android
Run Code Online (Sandbox Code Playgroud)

当我使用' >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)
Run Code Online (Sandbox Code Playgroud)

Spa*_*ara 108

我正在使用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和build.js的某个地方,从中myApp\platforms\android\cordova\lib\build.js找到:

var distributionUrl = 'distributionUrl=http\\://services.gradle.org/distributions/gradle-2.2.1-all.zip';
Run Code Online (Sandbox Code Playgroud)

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

var distributionUrl = 'distributionUrl=../gradle-2.2.1-all.zip';
Run Code Online (Sandbox Code Playgroud)

  • 真正的路径是:project/platforms/android/cordova/lib/builders/GradleBuilder.js (7认同)
  • 我在以下路径找到了分发网址&文件'myApp\platforms\android\cordova\lib\builders\GradleBuilder.js' (2认同)
  • @aishapp看到我的回答.这是正确的解决方案.这个答案不应该被接受,也不应该如此高涨.我们不应该修改cordova的代码.如果你运行"cordova platform remove android"这个东西会被删除 (2认同)

A.B*_*A.B 52

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

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

cordova build android -- --ant
Run Code Online (Sandbox Code Playgroud)

  • 已经有2天了,我正在尝试在linux mint上构建和模拟一个离子应用程序,唯一的方法是这个解决方案`离子构建android - - ```离子模拟android - --ant` (2认同)

Jef*_*ard 23

我遇到了这个问题,因为我们的网络代理阻止了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


Luc*_*suh 13

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


小智 9

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
Run Code Online (Sandbox Code Playgroud)

启动代码并编译.

说明:

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


Ben*_*ris 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
Run Code Online (Sandbox Code Playgroud)


小智 6

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

在平台\ android\cordova\lib\build.js文件中,我改变了

var distributionUrl = 'distributionUrl=http\\://services.gradle.org/distributions/gradle-2.2.1-all.zip';
Run Code Online (Sandbox Code Playgroud)

var distributionUrl = 'distributionUrl=http://services.gradle.org/distributions/gradle-2.2.1-all.zip';
Run Code Online (Sandbox Code Playgroud)

它起作用了.

  • 对不起,在我的**build.js中**不是这个变量,在**GradleBuilder.js** (2认同)