Ионная ошибка при создании Android при загрузке 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 и устанавливаю его на ПК, но он хочет снова загрузить. Могу ли я добавить 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, а дистрибутив Url найден в следующем файле. 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 файла. Вот что я нашел:

ПРИМЕЧАНИЕ: это отличается от "принятого" ответа тем, что мы не модифицируем библиотеку Кордовы напрямую. Это гораздо менее подвержено ошибкам или может быть перезаписано при запуске 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

Ответ 4

Еще одна опция из командной строки - запустить $ export JAVA_OPTS="-Dhttp.proxyHost=proxy-url.com -Dhttp.proxyPort=911 -Dhttps.proxyHost=secure-proxy-url.com -Dhttps.proxyPort=911" перед командой сборки cordova.

Ответ 5

Если вам требуется использовать прокси-сервер в вашей сети, добавьте файл 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

Ответ 6

Кордова 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';

Script работает в appName\platforms\android\gradle\wrapper

Выход:

Загрузка файла://appname/platform/android/ gradle/gradle -2.2.1-all.zip

Ответ 7

Привет всем, у меня была такая же проблема.

В файле platform\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';

и он работал.

Ответ 8

У меня была такая же проблема, и она была решена с удалением сборных инструментов 24 и установкой сборщиков 23 из SDK Manager.

Ответ 9

В качестве альтернативы, если у вас есть веб-сервер на вашем локальном хосте, загрузите и поместите 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';

Изменение URL-адреса локального файла (а не http-адреса) не будет работать для меня под окнами, и он будет жаловаться, что URL-адрес имеет неизвестный протокол.

Ответ 10

Кажется, что проблема для предыдущих решений. По крайней мере, никто из них не работал у меня, и я просто изменил его на:

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

Тогда он работает. Я не знаю, почему все они добавляют "distributionUrl =" следующим образом (это не работает для меня):

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

Кстати, я использую ионный 2.

Обратите внимание на путь, если вы не хотите использовать localhost. Он автоматически добавит myApp/platforms/android/gradle/wrapper до дистрибутиваUrl, например, если вы поместите gradle -2.2.1-all.zip в в каталоге myApp/platforms/android/gradle, вам необходимо установить:

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

Ответ 11

В последнее время я столкнулся с той же проблемой, и я искал здесь и там.

Наконец, для последней сборки я нашел решение.

После команды "andic platform add android" перейдите на платформы /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

Все ответы здесь все говорят одно и то же, когда это можно сделать проще, чем верхний ответ. Обновление Android SDK должно исправить его, и вы можете сделать это с помощью этой одной линии от терминала:

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

или

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

Также см. этот вопрос репозиции (это по сути та же проблема).

Но после того, как вы это сделаете, он будет работать.

Ответ 13

Похоже, что Windows Defender или какая-то другая антивирусная система испортили вашу установку. Поэтому временно отключите брандмауэр и запустите команду:

ionic build android (or ios)

В конце вы получите сообщение BUILD SUCCESSFUL...

Ответ 14

Это из-за ошибки Gradle.

Загрузите файл http://services.gradle.org/distributions/gradle-2.14.1-all.zip и извлеките его в любом каталоге и установите путь с помощью open cmd и введите: setx путь (извлеченная директория)/bin

После этого повторно запустите cmd и проверьте, работает ли Gradle, выпуская gradle -v. Он показывает выход версии Gradle. Теперь исправлена ​​ошибка; выполните ionic build android.

Ответ 15

Обновление платформы Android помогло мне:

  • Обновление платформы платформы Cordova Android
  • Кордова готовит,
  • Кордовы компилируются и, наконец,
  • Кордова построит

Ответ 16

Загрузите JDK версию 8 и удалите все существующие версии.

И обновите Ionic.

Я надеюсь, что ваша проблема будет решена.