2015-04-26 4 views
63

Я новичок в рамках Ионные :)Ионные строить Android ошибки при загрузке Gradle

>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) 
+3

У меня такая же проблема, загрузка завершилась неудачно из-за прокси-сервера моей корпоративной сети. Я ищу решение, я отправлю его здесь, если найду. –

+0

@Renan Имея ту же проблему здесь ... найти решение еще? – njtman

+0

Я вернулся к кордове 4 ведьма не использует градледу:/ –

ответ

104

Я использую Ionic версию 1.7.14, а дистрибутивUrl найден в следующем файле. myApp/platforms/android/cordova/lib/builders/GradleBuilder.js.

Мне пришлось указывать локально загруженный град, как указано в этом ответе.

У меня была та же проблема. Я добавил град в свой проект в автономном режиме.

После загрузки 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'; 
+1

Удивительный. Я просто вхожу в разработку Android, и я новичок во всей технологии, которую я использую ... Я даже не знал, как задать правильный вопрос. Ваш ответ закончился двумя днями страданий, спасибо! –

+0

@Spara awsome debug, не могли бы вы рассказать мне, как вы это узнали? –

+0

@SouparnoMajumder От курса, я только что прочитал коды кордовой библиотеки, чтобы найти, где он загружает град, и заменил его своим собственным файлом. – Spara

48

Поскольку решение размещен выше необходимо включить .zip в папку, которая составляет около 55MB

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

cordova build android -- --ant 
+0

Отлично, спасибо вам большое за то, что поделились этим :) – lulu88

+0

Отличное спасибо за обмен ..... –

+0

муравей не установлен. что делать? –

2

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

5

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

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

, и она работала.

+0

Благодарим за редактирование @MichaelS – sid1337

+0

, который изменяет https для использования http – Mukus

+1

Извините, в моей ** build.js ** не эта переменная, которая находится в ** GradleBuilder.js ** –

10

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

+0

, это не дает вам чтобы скопировать файлы градиента и изменить файлы конфигурации для каждого проекта подписи. –

+0

Но нужно ли это указывать каждый раз? – Mukus

7

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

Это ответ для меня (macOS). Если файл 'gradle.properties' отсутствует, просто создайте его в' platform/android' Нужно только: 'systemProp.http.proxyHost',' systemProp.http.proxyPort', 'systemProp.https.proxyHost',' systemProp .https.proxyPort' –

-1

Обновление Android платформы сделал трюк для меня:

  • Кордова обновление платформы Android
  • Кордова подготовить
  • Кордова компилировать и, наконец,
  • Кордова построить
7

Cordova 6.0.0/Visual Studio C ода 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 следующим образом:

вар 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

+0

Кажется, что это не зависит от Кордовы 6 на самом деле, но на [Cordova Android 5.0] (https://cordova.apache.org/announcements/2015/11/09/cordova-android-5.0.0 .html) - см. [этот вопрос] (https://issues.apache.org/jira/browse/CB-9402). Поэтому, когда вы обновляете Cordova Android до 5.0, вы можете использовать 'CORDOVA_ANDROID_GRADLE_DISTRIBUTION_URL' env param без необходимости редактировать любые файлы сборки. –

1

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

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

После "ионная платформа добавить андроида" команду, перейдите платформ/Android/Кордову/Lib/строителей/GradleBuilder.js

Поиск

http\\://services.gradle.org/distributions/gradle-2.2.1-all.zip 

и изменить его на

http\\://downloads.gradle.org/distributions/gradle-2.2.1-all.zip 
+0

он сбрасывает себя обратно – iOSAndroidWindowsMobileAppsDev

2

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

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

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

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

BTW, я использую ионную 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'; 
+0

Это сработало для меня с помощью ionic 1 с cordova 6 (cordova-android 4.1.1) –

18

Я столкнулся с этой проблемой, как наш сетевой прокси блокирует загрузку zip-файла. Вот что я нашел:

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

+2

это самый чистый ответ мне – DMCISSOKHO

0

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

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

или

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

Также см this Repòs вопрос (это по сути та же проблема).

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

0

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

ionic build android (or ios) 

В конце у Вас есть сообщение BUILD УСПЕШНОГО ...

3

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

+0

В android studo: Это работает, если вы не обновили до сборки инструментов 25 и все еще нацелены на api 23. После того, как я обновил sdk, tareget api и build до 25, это не было проблемой. – iOSAndroidWindowsMobileAppsDev

0

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

Скачать файл http://services.gradle.org/distributions/gradle-2.14.1-all.zip и распаковать его в любом из каталога и указываем путь открытым ЦМД и введите: Setx путь (извлеченный каталог)/bin

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

-1

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

И обновить Ионный.

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