Ich bin sehr neu im ionischen Framework :)
>npm install -g cordova
>npm install -g ionic
>ionic start test blank
>cd test
>ionic platform add Android
Wenn ich '>ionic build Android
' verwende, starte download gradle, aber ich kann nicht herunterladen und bekomme eine Fehlermeldung.
Was hat diesen Fehler verursacht und wie kann ich ihn beheben ?!
Ich lade Gradle herunter und installiere es auf einem PC, möchte es aber erneut herunterladen .. 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)
Ich verwende Ionic Version 1.7.14 und die distributionUrl in der folgenden Datei. myApp/platforms/Android/cordova/lib/builders/GradleBuilder.js.
Ich musste das lokal heruntergeladene Gradle wie in dieser Antwort angegeben zeigen.
Ich hatte das gleiche Problem. Ich habe gradle zu meinem Projekt offline hinzugefügt.
Nach dem Herunterladen von Gradle von dem ausgegebenen Link (hier ist http://services.gradle.org/distributions/gradle-2.2.1-all.Zip ) fügen Sie ihn in irgendwo ein, wie myApp\platforms\Android\gradle\gradle-2.2.1-all.Zip
und in build.js von myApp\platforms\Android\cordova\lib\build.js
:
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';
Da die Lösung, die oben veröffentlicht wurde, .Zip in einen Ordner aufnehmen muss, der ungefähr 55 MB beträgt
Mit dem folgenden Befehl können Sie die CLI auch dazu zwingen, während eines Builds Ant anstelle von Gradle zu verwenden:
cordova build Android -- --ant
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 Bibliothek von Cordova nicht direkt ändern. Dies ist weitaus weniger anfällig für "Fehler" oder wird überschrieben, wenn Sie
ionic state restore
ausführen.
Laden Sie gradle - http://services.gradle.org/distributions/gradle-2.2.1-all.Zip herunter.
Legen Sie diese Datei in platforms/Android/gradle
ab. Wenn Sie dies jedoch in Ihren Build-Prozess integrieren, sollten Sie es an einem weniger flüchtigen Ort speichern und einen Schritt hinzufügen, um die Datei an diesen Speicherort zu kopieren.
Setzen Sie die Umgebungsvariable CORDOVA_Android_GRADLE_DISTRIBUTION_URL
auf ../gradle-2.2.1-all.Zip
.
export CORDOVA_Android_GRADLE_DISTRIBUTION_URL="../gradle-2.2.1-all.Zip"
zu Ihrer ~/.bashrc-Datei hinzusetx CORDOVA_Android_GRADLE_DISTRIBUTION_URL ../gradle-2.2.1-all.Zip
ionic build Android
ausführen
Eine weitere Option in der Befehlszeile ist die Ausführung von $ 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.
Wenn Sie in Ihrem Netzwerk einen Proxy verwenden müssen, fügen Sie in gradle.properties
eine %USER_HOME%/.gradle
-Datei mit dem folgenden Code hinzu, wobei die Werte durch Ihre Proxy-Details ersetzt werden. 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
Cordova 6.0.0/Visual Studio-Code 0.10.6
TL; DR
Laden Sie http://services.gradle.org/distributions/gradle-2.2.1-all.Zip
manuell herunter.
Platziere 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 distributionUrl
wie 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:
Herunterladen der Datei: //appname/platforms/Android/gradle/gradle-2.2.1-all.Zip
Hallo zusammen, ich hatte das gleiche Problem.
In der Plattform\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.
Ich hatte das gleiche Problem und es wurde behoben, indem Build-Tools 24 deinstalliert und Build-Tools 23 vom SDK-Manager installiert wurden.
Wenn Sie einen Webserver auf Ihrem localhost haben, laden Sie alternativ die Gradle herunter (genau die getestete Version, dh http://downloads.gradle.org/distributions/gradle-2.2.1-all.Zip at den Zeitpunkt dieses Beitrags) im WWW-Stammverzeichnis und ändern Sie die Datei platform\Android\cordova\lib\build.js in Ihrem Anwendungsverzeichnis zu dieser:
var distributionUrl = 'distributionUrl=http\\://localhost/gradle-2.2.1-all.Zip';
Das Ändern der URL in eine lokale Datei (keine http-Adresse) würde für mich unter Windows nicht funktionieren und es würde sich beschweren, dass die URL ein unbekanntes Protokoll hat.
Es scheint ein Problem für die bisherigen Lösungen zu geben. Zumindest arbeitete keiner von ihnen für mich und ich änderte es einfach zu:
var distributionUrl = 'http://localhost/gradle-2.2.1-all.Zip';
Dann klappt es. Ich weiß nicht, warum sie "distributionUrl =" wie folgt hinzufügen (dies funktioniert bei mir nicht):
var distributionUrl = 'distributionUrl=http\\://localhost/gradle-2.2.1-all.Zip';
Übrigens, ich benutze ionisch 2.
Achten Sie auf den Pfad, wenn Sie localhost
nicht verwenden möchten. Es wird automatisch myApp/platforms/Android/gradle/wrapper
vor distributionUrl hinzugefügt. Wenn Sie beispielsweise gradle-2.2.1-all.Zip im myApp/platforms/Android/gradle
-Verzeichnis angeben, müssen Sie Folgendes festlegen:
var distributionUrl = '../gradle-2.2.1-all.Zip';
Ich habe kürzlich das gleiche Problem gesehen und habe hier und dort gesucht.
Schließlich fand ich für den neuesten Build die Lösung.
Nach dem Befehl "ionic platform add Android" gehen Sie zu Plattformen/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
Es hört sich an, als ob Windows Defender oder ein anderes Antivirus-System Ihre Installation durcheinander bringt. 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 BUILD SUCCESSFUL ...
Alle Antworten hier sagen alle dasselbe, wenn dies einfacher als die Top-Antwort wäre. Das Aktualisieren Ihres Android SDK sollte dies beheben, und Sie können es 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 this repos issue (es handelt sich im Wesentlichen um dasselbe Problem).
Aber nachdem Sie das wieder aufgebaut haben, sollte es funktionieren.
Im Hinblick auf die Entwicklung der 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";