Ошибка Ionic build Android при загрузке Gradle
Я очень новичок в Ionic Framework :)
>npm install -g cordova
>npm install -g ionic
>ionic start test blank
>cd test
>ionic platform add android
Когда я использую '>ionic build android
', запускаю загрузку gradle, но я не могу загрузить и получаю сообщение об ошибке.
Что вызвало эту ошибку и как я могу ее исправить?!
Я загружаю Gradle и устанавливаю его на ПК, но он хочет загрузить снова. Могу ли я добавить 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)
Переведено автоматически
Ответ 1
Я использую 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';
И замените ее местоположением вашего собственного файла:
var distributionUrl = 'distributionUrl=../gradle-2.2.1-all.zip';
Ответ 2
Поскольку решение, опубликованное выше, должно включать файл .zip в папку размером около 55 МБ
Вы также можете заставить CLI использовать Ant вместо gradle во время сборки с помощью следующей команды:
cordova build android -- --ant
Ответ 3
Я столкнулся с этой проблемой, поскольку наш сетевой прокси-сервер блокирует загрузку zip-файла. Вот что я нашел:
ПРИМЕЧАНИЕ: это отличается от "принятого" ответа тем, что мы не изменяем библиотеку Cordova напрямую. Это гораздо менее подвержено "ошибке" или перезаписи при запуске
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
Ответ 4
Другой вариант из командной строки - выполнить $ export JAVA_OPTS="-Dhttp.proxyHost=proxy-url.com -Dhttp.proxyPort=911 -Dhttps.proxyHost=secure-proxy-url.com -Dhttps.proxyPort=911"
перед командой cordova build.