私はIonicフレームワークに非常に新しいです:)
>npm install -g cordova
>npm install -g ionic
>ionic start test blank
>cd test
>ionic platform add Android
「>ionic build Android
」を使用すると、ダウンロードグラドルを開始できますが、ダウンロードできず、エラーが発生します。
このエラーの原因と修正方法を教えてください!
GradleをダウンロードしてPCにインストールしますが、もう一度ダウンロードしたいです。 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)
Ionicバージョン1.7.14および次のファイルにあるdistributionUrlを使用しています。 myApp/platforms/Android/cordova/lib/builders/GradleBuilder.js.
この回答で指定されているように、ローカルにダウンロードされたgradleを指す必要がありました。
同じ問題がありました。プロジェクトにオフラインでgradleを追加しました。
発行されたリンク(ここでは http://services.gradle.org/distributions/gradle-2.2.1-all.Zip )からgradleをダウンロードした後、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';
上記のソリューションには、約55MBのフォルダーに.Zipを含める必要があるため
次のコマンドを使用して、ビルド中にgradleの代わりにAntを使用するようにCLIを強制することもできます。
cordova build Android -- --ant
ネットワークプロキシがZipファイルのダウンロードをブロックしているため、この問題に遭遇しました。私が見つけたものは次のとおりです。
注:これは、Cordovaのライブラリを直接変更していないという点で「受け入れられた」回答とは異なります。これは、
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
に設定します
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
ionic build Android
を実行します
コマンドラインからの別のオプションは、cordovaビルドコマンドの前に$ export Java_OPTS="-Dhttp.proxyHost=proxy-url.com -Dhttp.proxyPort=911 -Dhttps.proxyHost=secure-proxy-url.com -Dhttps.proxyPort=911"
を実行することです。
ネットワークでプロキシを使用する必要がある場合は、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
Cordova 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
こんにちは、私は同じ問題を抱えていました。
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';
そしてそれは働いた。
または、ローカルホストにWebサーバーがある場合、ダウンロードしてgradle(正確にテストされたバージョン、つまり http://downloads.gradle.org/distributions/gradle-2.2.1をダウンロードします。この投稿の時点で-all.Zip )wwwルートで、アプリケーションディレクトリ内のplatform\Android\cordova\lib\build.jsファイルを次のように変更します。
var distributionUrl = 'distributionUrl=http\\://localhost/gradle-2.2.1-all.Zip';
URLを(httpアドレスではなく)ローカルファイルに変更すると、Windowsで機能しなくなり、URLのプロトコルが不明であると文句を言います。
私も同じ問題を抱えていましたが、ビルドツール24をアンインストールし、SDKマネージャーからビルドツール23をインストールすることで解決しました。
私は最近同じ問題に直面しており、あちこち検索しました。
最後に、最新のビルドで解決策を見つけました。
「ionic platform add Android」コマンドの後、platforms/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
Windows Defenderまたは他のウイルス対策システムがインストールを台無しにしているようです。したがって、ファイアウォールを一時的に無効にして、コマンドを再実行します。
ionic build Android (or ios)
最後に、メッセージBUILD SUCCESSFUL ...が表示されます。
ここでのすべての答えは、これが一番上の答えよりも簡単にできる場合、すべて同じことを言っています。 Android SDKを更新すると修正されるはずです。ターミナルから次の1行を使用して修正できます。
Android update sdk --no-ui --all --filter "extra-Android-m2repository"
または
Android update sdk --no-ui --filter extra
this リポジトリの問題も参照してください(本質的に同じ問題です)。
しかし、あなたがそれを再構築した後、それは動作するはずです。
ionic開発に関する限り、GradleBuilder.jsのdistributionURLを下記の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';