it-roy-ru.com

Ионная ошибка сборки 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)
68
sadegh

Я использую 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';
107
Spara

Поскольку вышеприведенное решение должно включать .Zip в папку размером около 55 МБ

Вы также можете заставить CLI использовать Ant вместо gradle во время сборки с помощью следующей команды:

cordova build Android -- --ant
52
A.B

Я столкнулся с этой проблемой, так как наш сетевой прокси-сервер блокирует загрузку 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

21
Jeff Woodard

Другой вариант из командной строки - запустить $ export Java_OPTS="-Dhttp.proxyHost=proxy-url.com -Dhttp.proxyPort=911 -Dhttps.proxyHost=secure-proxy-url.com -Dhttps.proxyPort=911" перед командой buildova.

12
Lucas Massuh

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

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

8
user5880697

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

В файле платформы\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';

и это сработало.

6
sid1337

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

5
Emad Dehnavi

В качестве альтернативы, если у вас есть веб-сервер на вашем локальном хосте, загрузите и установите gradle (именно проверенную версию, т.е. http://downloads.gradle.org/distributions/gradle-2.2.1-all.Zip at время публикации) в корне www и измените файл платформы\Android\cordova\lib\build.js в каталоге приложения на этот:

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

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

3
wmac

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

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 перед distributionUrl, например, если вы поместите gradle-2.2.1-all.Zip в В каталог myApp/platforms/Android/gradle, тогда вам нужно установить:

var distributionUrl = '../gradle-2.2.1-all.Zip';
3
seaguest

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

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

После команды «Ионная платформа добавить 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
2
Tapan

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

ionic build Android (or ios)

В конце у вас есть сообщение BUILD SUCCESSFUL ...

0
Theophane Fotso

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

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

или же

Android update sdk --no-ui --filter extra

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

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

0
garrettmac

Что касается ионной разработки, вам придется изменить дистрибутивURL в GradleBuilder.js с нижеуказанным 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'; 

0
Sachin Mishra