Ionic 构建 Android 下载时出错 Gradle
Ionic build Android error when downloading Gradle
我对 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_prepare0_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.call(Install.java:60)
at org.gradle.wrapper.Install.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)
我使用的是 Ionic 版本 1.7.14 和在以下文件中找到的 distributionUrl。 myApp/platforms/android/cordova/lib/builders/GradleBuilder.js.
我不得不指出本地下载的 gradle 在此答案中指定。
我遇到了同样的问题。我将 gradle 添加到我的离线项目中。
从已发布的 link 下载 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';
由于上面发布的解决方案需要将 .zip 包含到大约 55MB 的文件夹中
您还可以在构建过程中使用以下命令强制 CLI 使用 Ant 而不是 gradle:
cordova build android -- --ant
或者,如果您的本地主机上有 Web 服务器,请下载 gradle(正是测试版本,即 http://downloads.gradle.org/distributions/gradle-2.2.1-all.zip 在 post 时)并将其放入www 根并将应用程序目录中的 platforms\android\cordova\lib\build.js 文件更改为以下文件:
var distributionUrl = 'distributionUrl=http\://localhost/gradle-2.2.1-all.zip';
将 URL 更改为本地文件(不是 http 地址)对我来说在 windows 下不起作用,它会抱怨 URL 具有未知协议。
大家好,我遇到了同样的问题。
在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';
成功了。
命令行的另一个选项是 运行 $ export JAVA_OPTS="-Dhttp.proxyHost=proxy-url.com -Dhttp.proxyPort=911 -Dhttps.proxyHost=secure-proxy-url.com -Dhttps.proxyPort=911"
在 cordova 构建命令之前。
如果您需要在您的网络上使用代理,请使用以下内容在 %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
更新 Android 平台对我有用:
- Cordova 平台更新Android
- 科尔多瓦准备,
- Cordova 编译,最后
- Cordova 构建
科尔多瓦 6.0.0 / Visual Studio 代码 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
我最近遇到了同样的问题,到处找了一下。
终于在最新版本中找到了解决方案。
执行"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
之前的解决方案好像有问题。至少 none 对我有用,我只是将其更改为:
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';
我 运行 解决了这个问题,因为我们的网络代理阻止了 zip 文件的下载。这是我的发现:
NOTE: this differs from the "accepted" answer in that we aren't modifying Cordova's library directly. This is far less prone to "error" or being overwritten when you run ionic state restore
下载gradle - http://services.gradle.org/distributions/gradle-2.2.1-all.zip
将此文件放入 platforms/android/gradle
。但是,如果您将其集成到构建过程中,您可能希望将其粘贴到不太易变的位置并添加一个步骤以将文件复制到该位置。
设置环境变量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
运行 ionic build android
这里的所有答案都在说同样的事情,而这比最佳答案更容易完成。更新您的 Android SDK 应该可以修复它,您可以通过终端中的这一行来完成:
android update sdk --no-ui --all --filter "extra-android-m2repository"
或
android update sdk --no-ui --filter extra
另请参阅 this 回购问题(本质上是相同的问题)。
但是在你重建之后,它应该可以工作。
听起来 Windows Defender 或其他一些防病毒系统在安装过程中出现问题。所以暂时停用你的防火墙并重新运行命令:
ionic build android (or ios)
最后您会看到消息构建成功...
我遇到了同样的问题,通过卸载 build-tools 24 并从 SDK Manager 安装 build-tools 23 解决了这个问题。
这是因为 Gradle 错误。
下载文件http://services.gradle.org/distributions/gradle-2.14.1-all.zip解压到任意目录,打开cmd设置路径,输入:setx路径(解压目录)/bin
之后,重新打开 cmd 并通过发出 gradle -v
检查 Gradle 是否有效。它显示 Gradle 版本输出。现在错误已修复; 运行 ionic build android
.
下载 JDK 版本 8 并删除所有现有版本。
并更新 Ionic。
希望你的问题得到解决
就离子开发问题而言,您将不得不修改 GradleBuilder.js 中的分布 URL,下面提到 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';
我用了上面的所有东西,但没有任何效果,然后我做了这个,它成功了......!
这是我所做的:
1. 从您的项目中打开 cmd
2. goto https://services.gradle.org/distributions/点击你需要的版本,右击并复制link。
3. 完成后设置变量:set CORDOVA_ANDROID_GRADLE_DISTRIBUTION_URL=https://services.gradle.org/distributions/gradle-2.2.1-all.zip
4. 干得好!
我对 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_prepare0_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.call(Install.java:60)
at org.gradle.wrapper.Install.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)
我使用的是 Ionic 版本 1.7.14 和在以下文件中找到的 distributionUrl。 myApp/platforms/android/cordova/lib/builders/GradleBuilder.js.
我不得不指出本地下载的 gradle 在此答案中指定。
我遇到了同样的问题。我将 gradle 添加到我的离线项目中。
从已发布的 link 下载 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';
由于上面发布的解决方案需要将 .zip 包含到大约 55MB 的文件夹中
您还可以在构建过程中使用以下命令强制 CLI 使用 Ant 而不是 gradle:
cordova build android -- --ant
或者,如果您的本地主机上有 Web 服务器,请下载 gradle(正是测试版本,即 http://downloads.gradle.org/distributions/gradle-2.2.1-all.zip 在 post 时)并将其放入www 根并将应用程序目录中的 platforms\android\cordova\lib\build.js 文件更改为以下文件:
var distributionUrl = 'distributionUrl=http\://localhost/gradle-2.2.1-all.zip';
将 URL 更改为本地文件(不是 http 地址)对我来说在 windows 下不起作用,它会抱怨 URL 具有未知协议。
大家好,我遇到了同样的问题。
在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';
成功了。
命令行的另一个选项是 运行 $ export JAVA_OPTS="-Dhttp.proxyHost=proxy-url.com -Dhttp.proxyPort=911 -Dhttps.proxyHost=secure-proxy-url.com -Dhttps.proxyPort=911"
在 cordova 构建命令之前。
如果您需要在您的网络上使用代理,请使用以下内容在 %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
更新 Android 平台对我有用:
- Cordova 平台更新Android
- 科尔多瓦准备,
- Cordova 编译,最后
- Cordova 构建
科尔多瓦 6.0.0 / Visual Studio 代码 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
我最近遇到了同样的问题,到处找了一下。
终于在最新版本中找到了解决方案。
执行"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
之前的解决方案好像有问题。至少 none 对我有用,我只是将其更改为:
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';
我 运行 解决了这个问题,因为我们的网络代理阻止了 zip 文件的下载。这是我的发现:
NOTE: this differs from the "accepted" answer in that we aren't modifying Cordova's library directly. This is far less prone to "error" or being overwritten when you run
ionic state restore
下载gradle - http://services.gradle.org/distributions/gradle-2.2.1-all.zip
将此文件放入
platforms/android/gradle
。但是,如果您将其集成到构建过程中,您可能希望将其粘贴到不太易变的位置并添加一个步骤以将文件复制到该位置。设置环境变量
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
- linux/osx: 添加
运行
ionic build android
这里的所有答案都在说同样的事情,而这比最佳答案更容易完成。更新您的 Android SDK 应该可以修复它,您可以通过终端中的这一行来完成:
android update sdk --no-ui --all --filter "extra-android-m2repository"
或
android update sdk --no-ui --filter extra
另请参阅 this 回购问题(本质上是相同的问题)。
但是在你重建之后,它应该可以工作。
听起来 Windows Defender 或其他一些防病毒系统在安装过程中出现问题。所以暂时停用你的防火墙并重新运行命令:
ionic build android (or ios)
最后您会看到消息构建成功...
我遇到了同样的问题,通过卸载 build-tools 24 并从 SDK Manager 安装 build-tools 23 解决了这个问题。
这是因为 Gradle 错误。
下载文件http://services.gradle.org/distributions/gradle-2.14.1-all.zip解压到任意目录,打开cmd设置路径,输入:setx路径(解压目录)/bin
之后,重新打开 cmd 并通过发出 gradle -v
检查 Gradle 是否有效。它显示 Gradle 版本输出。现在错误已修复; 运行 ionic build android
.
下载 JDK 版本 8 并删除所有现有版本。
并更新 Ionic。
希望你的问题得到解决
就离子开发问题而言,您将不得不修改 GradleBuilder.js 中的分布 URL,下面提到 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';
我用了上面的所有东西,但没有任何效果,然后我做了这个,它成功了......!
这是我所做的: 1. 从您的项目中打开 cmd 2. goto https://services.gradle.org/distributions/点击你需要的版本,右击并复制link。 3. 完成后设置变量:set CORDOVA_ANDROID_GRADLE_DISTRIBUTION_URL=https://services.gradle.org/distributions/gradle-2.2.1-all.zip 4. 干得好!