Ionic Build Android Fehler beim Herunterladen von Gradle

72

Ich bin sehr neu im Ionic Framework :)

>npm install -g cordova
>npm install -g ionic
>ionic start test blank
>cd test
>ionic platform add android

Wenn ich ' >ionic build android' benutze, starte den Download gradle, aber ich kann nicht herunterladen und erhalte eine Fehlermeldung.

Was hat diesen Fehler verursacht und wie kann ich ihn beheben?!

Ich lade Gradle herunter und installiere es auf einem PC, aber es möchte erneut heruntergeladen werden. Kann ich Gradle offline zu einem Projekt hinzufügen?

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)
Sadegh
quelle
3
Ich habe das gleiche Problem, der Download schlägt aufgrund des Proxys meines Unternehmensnetzwerks fehl. Ich suche nach einer Lösung, ich werde sie hier posten, wenn ich welche finde.
Renan Le Caro
Ich ging zurück zu Cordova 4, die kein Graddle benutzt: /
Renan Le Caro
1
Sie müssen VPN verwenden.
Hamed Hossani
Bitte überprüfen Sie diesen wichtigen Kommentar
Burak

Antworten:

109

Ich verwende Ionic Version 1.7.14 und die DistributionUrl in der folgenden Datei. myApp/platforms/android/cordova/lib/builders/GradleBuilder.js.

Ich musste auf den lokal heruntergeladenen Gradle zeigen, wie in dieser Antwort angegeben.

Ich hatte das gleiche Problem. Ich habe meinem Projekt offline gradle hinzugefügt.

Nach dem Download gradle von ausgegebenen Link (hier ist http://services.gradle.org/distributions/gradle-2.2.1-all.zip ) fügen Sie ihn in irgendwo gefällt myApp\platforms\android\gradle\gradle-2.2.1-all.zipund in build.js von myApp\platforms\android\cordova\lib\build.jsdiesen finden:

var distributionUrl = 'distributionUrl=http\\://services.gradle.org/distributions/gradle-2.2.1-all.zip';

Und ersetzen Sie es durch den Speicherort Ihrer eigenen Datei:

var distributionUrl = 'distributionUrl=../gradle-2.2.1-all.zip';
Spara
quelle
8
Der wahre Pfad ist: project / platform / android / cordova / lib / builders / GradleBuilder.js
Ivan Ferrer
1
Diese Lösung ist „meistens“ richtig, obwohl wir wahrscheinlich empfehlen , sollte gegen Modifizierung der cordova JS - Code. Es scheint, dass es eine Umgebungsvariable gibt, die Sie festlegen können, um dies zu erreichen. Diese ist a) weniger fehleranfällig und b) weniger wahrscheinlich, dass sie beim Löschen Ihres Plattformverzeichnisses "überschrieben" wird
Jeff Woodard
2
Ich fand die Verteilungs-URL unter folgendem Pfad und Datei 'myApp \ platform \ android \ cordova \ lib \ builders \ GradleBuilder.js'
RAVI VAGHELA
1
Ich hatte das gleiche Problem, ging aber nach mehreren Versuchen weg.
Stimmen Sie
2
@aishapp siehe meine Antwort. Es ist die richtige Lösung. Diese Antwort sollte nicht die akzeptierte sein, noch sollte sie so hoch bewertet werden. Wir sollten den Code von Cordova NICHT ändern. Dieses Zeug wird gelöscht, wenn Sie "Cordova Platform Remove Android" ausführen
Jeff Woodard
52

Da die oben beschriebene Lösung .zip in einen Ordner aufnehmen muss, der ungefähr 55 MB groß ist

Mit dem folgenden Befehl können Sie CLI auch zwingen, Ant anstelle von Gradle während eines Builds zu verwenden:

cordova build android -- --ant
AB
quelle
Ameise ist nicht installiert. was ist zu tun?
Jay Shukla
1
Dies funktioniert nicht, wenn Sie Plugins haben, die nicht von ant erstellt werden können.
Paul
2
Es ist 2 Tage her, dass ich versuche, eine ionische App unter Linux Mint zu erstellen und zu emulieren. Der einzige Weg war diese Lösung ionic build android -- --ant ionic emulate android -- --ant
zied.hosni
23

Ich bin auf dieses Problem gestoßen, da unser Netzwerk-Proxy den Download der Zip-Datei blockiert. Folgendes habe ich gefunden:

HINWEIS: Dies unterscheidet sich von der "akzeptierten" Antwort darin, dass wir die Cordova-Bibliothek nicht direkt ändern. Dies ist weitaus weniger anfällig für "Fehler" oder das Überschreiben beim Ausführenionic state restore

  1. Laden Sie gradle herunter - http://services.gradle.org/distributions/gradle-2.2.1-all.zip

  2. Legen Sie diese Datei ein platforms/android/gradle. Wenn Sie dies jedoch in Ihren Erstellungsprozess integrieren, möchten Sie es möglicherweise an einem weniger flüchtigen Ort speichern und einen Schritt hinzufügen, um die Datei an diesen Speicherort zu kopieren.

  3. Setzen Sie die Umgebungsvariable CORDOVA_ANDROID_GRADLE_DISTRIBUTION_URLauf../gradle-2.2.1-all.zip

    • linux / osx: Füge export CORDOVA_ANDROID_GRADLE_DISTRIBUTION_URL="../gradle-2.2.1-all.zip"es deiner ~ / .bashrc-Datei hinzu
    • Fenster: setx CORDOVA_ANDROID_GRADLE_DISTRIBUTION_URL ../gradle-2.2.1-all.zip
  4. Lauf ionic build android

Jeff Woodard
quelle
Ich bekomme nicht den eingestellten Umgebungsvariablenpunkt im Fenster. Wie setze ich eine Benutzervariable oder eine Systemvariable?
Muneeb_ahmed
In Punkt 2) Hinzufügen eines Schritts zum Kopieren der Datei an diesen Speicherort.
Muneeb_ahmed
1
@muneeb_ahmed Sie können eine Umgebungsvariable mit Powershell oder über die Benutzeroberfläche "Umgebungsvariablen" festlegen. stackoverflow.com/questions/32730544/…
Jeff Woodard
1
Sie können die Datei auch manuell kopieren oder einer npm-Aufgabe oder Ähnlichem hinzufügen. Es gibt unzählige Möglichkeiten, dies zu automatisieren. Es würde etwas vom Rest Ihres Prozesses abhängen. Normalerweise verschwindet diese Datei erst nach einer Wiederherstellung des Ionenzustands.
Jeff Woodard
13

Eine weitere Option über die Befehlszeile ist die Ausführung $ export JAVA_OPTS="-Dhttp.proxyHost=proxy-url.com -Dhttp.proxyPort=911 -Dhttps.proxyHost=secure-proxy-url.com -Dhttps.proxyPort=911"vor dem Befehl cordova build.

Lucas Massuh
quelle
Dies verhindert, dass Sie die Gradle-Dateien kopieren und Konfigurationsdateien für jedes Signgle-Projekt ändern müssen.
Lucas Massuh
Aber müssen Sie dies jedes Mal angeben?
Mukus
9

Wenn Sie einen Proxy in Ihrem Netzwerk verwenden müssen, fügen Sie eine gradle.propertiesDatei %USER_HOME%/.gradlemit den folgenden Angaben hinzu, ersetzen Sie jedoch die Werte durch Ihre Proxy-Details. Das hat bei mir funktioniert.

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
Ben Morris
quelle
Dies ist die Antwort für mich (macOS). Wenn gradle.propertiesDatei nicht vorhanden ist , erstellen Sie einfach eine in platforms/android nur benötigt: systemProp.http.proxyHost, systemProp.http.proxyPort, systemProp.https.proxyHost,systemProp.https.proxyPort
Jonathan Lin
9

Cordova 6.0.0 / Visual Studio Code 0.10.6

TL; DR

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

Legen Sie es in appName\platforms\android\gradle\

set CORDOVA_ANDROID_GRADLE_DISTRIBUTION_URL=..\gradle-2.2.1-all.zip

Code starten und kompilieren.

Erläuterung:

GradleBuilder.js setzt distributionUrlwie folgt:

var DistributionUrl = process.env ['CORDOVA_ANDROID_GRADLE_DISTRIBUTION_URL'] || 'http \: //services.gradle.org/distributions/gradle-2.2.1-all.zip';

Skript läuft in appName\platforms\android\gradle\wrapper

Ausgabe ist:

Datei herunterladen: //appname/platforms/android/gradle/gradle-2.2.1-all.zip

user5880697
quelle
Es scheint, dass es nicht von Cordova 6 abhängt, sondern von Cordova Android 5.0 - siehe dieses Problem . Wenn Sie Cordova Android auf 5.0 aktualisieren, können Sie CORDOVA_ANDROID_GRADLE_DISTRIBUTION_URLenv param verwenden, ohne Build-Dateien bearbeiten zu müssen.
Jakub.g
6

Hallo zusammen, ich hatte das gleiche Problem.

In der Datei platform \ android \ cordova \ lib \ build.js habe ich geändert

var distributionUrl = 'distributionUrl=http\\://services.gradle.org/distributions/gradle-2.2.1-all.zip';

zu

var distributionUrl = 'distributionUrl=http://services.gradle.org/distributions/gradle-2.2.1-all.zip';

und es hat funktioniert.

sid1337
quelle
das ändert https, um http zu verwenden
Mukus
2
Entschuldigung, in meiner build.js ist diese Variable nicht, die in GradleBuilder.js
Pedro Miguel Pimienta Morales
für mich ist es in /platforms/android/cordova/lib/builders/StudioBuilder.js und /platforms/android/cordova/lib/builders/GradleBuilder.js
Rohit Dhiman
4

Es scheint ein Problem für die vorherigen Lösungen zu geben. Zumindest hat keiner von ihnen für mich gearbeitet, und ich habe es einfach geändert in:

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

Dann funktioniert es. Ich weiß nicht, warum sie alle "DistributionUrl =" wie folgt hinzufügen (das funktioniert bei mir nicht):

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

Übrigens benutze ich ionic 2.

Achten Sie auf den Pfad, wenn Sie ihn nicht verwenden möchten localhost. Es wird automatisch myApp/platforms/android/gradle/wrappervor DistributionUrl hinzugefügt. Wenn Sie beispielsweise gradle-2.2.1-all.zip in das myApp/platforms/android/gradleVerzeichnis einfügen , müssen Sie Folgendes festlegen:

var distributionUrl = '../gradle-2.2.1-all.zip';
Seegast
quelle
Dies funktionierte für mich mit Ion 1 mit Cordova 6 (Cordova-Android 4.1.1)
Jakub.g
3

Wenn Sie alternativ einen Webserver auf Ihrem lokalen Host haben, laden Sie den Gradle herunter und legen Sie ihn ab (genau die getestete Version, dh http://downloads.gradle.org/distributions/gradle-2.2.1-all.zip zum Zeitpunkt dieses Vorgangs) post) im www root und ändern Sie die Datei platform \ android \ cordova \ lib \ build.js in Ihrem Anwendungsverzeichnis in diese:

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

Das Ändern der URL in eine lokale Datei (keine http-Adresse) würde unter Windows nicht funktionieren und es würde sich beschweren, dass die URL ein unbekanntes Protokoll hat.

wmac
quelle
3

Ich hatte das gleiche Problem und es wurde gelöst, indem Build-Tools 24 deinstalliert und Build-Tools 23 über SDK Manager installiert wurden.

Emad Dehnavi
quelle
In Android Studio: Dies funktioniert, wenn Sie nicht auf Build-Tools 25 aktualisiert haben und immer noch auf API 23 abzielen. Nachdem ich SDK, Tareget-API und Build-Tools auf 25 aktualisiert habe, war dies kein Problem.
iOSAndroidWindowsMobileAppsDev
2

Ich habe in letzter Zeit das gleiche Problem gehabt und hier und da gesucht.

Schließlich habe ich für den neuesten Build die Lösung gefunden.

Wechseln Sie nach dem Befehl "ionic platform add android" zu platform / android / cordova / lib / builders / GradleBuilder.js

Suchen nach

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

und ändern Sie es in

http\\://downloads.gradle.org/distributions/gradle-2.2.1-all.zip
Tapan
quelle
es setzt sich immer wieder zurück
iOSAndroidWindowsMobileAppsDev
0

Alle Antworten hier sagen dasselbe, wenn dies einfacher als die oberste Antwort möglich wäre. Das Aktualisieren Ihres Android SDK sollte das Problem beheben, und Sie können dies mit dieser einen Zeile vom Terminal aus tun:

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

oder

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

Siehe auch dieses Repos-Problem (es ist im Wesentlichen das gleiche Problem).

Aber nachdem Sie das wieder aufgebaut haben, sollte es funktionieren.

Garrettmac
quelle
0

Es hört sich so an, als würde Windows Defender oder ein anderes Antivirensystem Ihre Installation durcheinander bringen. Deaktivieren Sie daher vorübergehend Ihre Firewall und führen Sie den Befehl erneut aus:

ionic build android (or ios)

Am Ende haben Sie die Meldung ERFOLGREICH BAUEN ...

Theophan Fotso
quelle
0

In Bezug auf die Ionenentwicklung müssen Sie die DistributionURL in GradleBuilder.js mit der unten angegebenen URL ändern.

/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';

Sachin Mishra
quelle
0

Ich habe alles oben benutzt, aber nichts hat funktioniert und dann habe ich das gemacht und es hat funktioniert ..!

Geben Sie hier die Bildbeschreibung ein

Folgendes habe ich getan: 1. Öffnen Sie cmd aus Ihrem Projekt. 2. Gehen Sie zu https://services.gradle.org/distributions/. Klicken Sie auf die gewünschte Version, klicken Sie mit der rechten Maustaste und kopieren Sie den Link. 3. Wenn Sie fertig sind, setzen Sie die Variable: setze CORDOVA_ANDROID_GRADLE_DISTRIBUTION_URL = https://services.gradle.org/distributions/gradle-2.2.1-all.zip 4. Gut gemacht!

Geben Sie hier die Bildbeschreibung ein

Gru
quelle
-1

Das Aktualisieren der Android-Plattform hat den Trick für mich getan:

  • Cordova Plattform Update Android
  • Cordova vorbereiten,
  • Cordova kompilieren und schließlich
  • Cordova bauen
Priyanka
quelle
-1

Dies liegt an einem Gradle-Fehler.

Laden Sie die Datei http://services.gradle.org/distributions/gradle-2.14.1-all.zip herunter, extrahieren Sie sie in ein beliebiges Verzeichnis, legen Sie den Pfad durch Öffnen von cmd fest und geben Sie Folgendes ein: setx path (extrahiertes Verzeichnis) / bin

Öffnen Sie danach cmd erneut und überprüfen Sie, ob Gradle funktioniert, indem Sie eine Ausgabe ausführen gradle -v. Es zeigt die Ausgabe der Gradle-Version. Jetzt ist der Fehler behoben; laufen ionic build android.

Navin als
quelle
-3

Laden Sie JDK Version 8 herunter und entfernen Sie alle vorhandenen Versionen.

Und Ionic aktualisieren.

Ich hoffe, Ihr Problem wird gelöst.

Somnath
quelle