これは、上記のエラーの解決策です。他の同様の投稿を見つけましたが、このエラーがCordovaまたはIonicにどのように関連付けられるかについては説明していません。
注意しないと、Android Studioが使用するGradleのバージョンとCordova/cordova-Androidが自動生成アプリケーションコードで指定するGradleのバージョンとの間に不一致が生じる可能性があります。あなたが知っている、実行している
$ cordova platform add Android
(または $ ionic platform add Android
、Ionic app)をビルドしている場合、-project/platforms/Androidでネイティブアプリケーションコードを作成します。
そのフォルダー内のファイル:/the-project/platforms/Android/cordova/lib/builders/GradleBuilder.jsは、以下に示すように変数をエクスポートします。
var distributionUrl = process.env['CORDOVA_Android_GRADLE_DISTRIBUTION_URL'] || 'http\\://services.gradle.org/distributions/gradle-x.y-all.Zip';
Xとyは、ネイティブアプリケーションコードのビルドに使用されているCordova/cordova-Androidのバージョンに依存します。
走るとき
$ cordova build Android
distributionUrl
varで指定されたGradleのバージョンは、ビルドに使用されるバージョンです。
さて、ここからが難しい部分です。プロジェクトをAndroid Studioにインポートすると、以下に示すように、Gradleを新しいバージョンにアップグレードすることを強く推奨するメッセージが表示される可能性が高くなります。
これを行うと、Android StudioはGradleの新しいバージョンをダウンロードしてローカルに保存し、新しくダウンロードされたローカルGradleディストリビューションを使用するようにプロジェクトを構成します。 「デフォルトグレードラッパーを使用する」を選択しました。これにより、エラーが発生するため、選択を解除しました。
Android StudioとCordovaは異なるバージョンのGradleでアプリケーションをビルドしようとするため、Android Studioととも
$ cordova build Android
コマンドラインで。 Cordovaアプリのソリューションは、Android Studioプロジェクトを[デフォルトのgradleラッパーを使用]に設定したままにし、アップグレードする魅力的なメッセージを無視することです。Gradleの新しいバージョンを使用する場合は、上記のファイルのdistributionUrl変数はいつでも変更できます(ただし、Cordovaはプラットフォームフォルダー内のコードを簡単に上書きできるため、コードの変更はお勧めしません)。これを書いている時点では、Gradleバージョンで
$ cordova platform add Android
ステップ、それはあなたがそれをしたいときですので、あなたは直接プロジェクト内のコードを変更することはありません
私にとって、次のコマンドは問題を解決しました。
cordova platform remove Android
cordova platform add Android
ionic build Android
これをコメントとして残したいのですが、どうやら評判が悪いようです...
ドキュメントを読んだ後、Android Studioを[デフォルトのgradleラッパーを使用]に保つことを提案して問題を解決できませんでした。見つけたのは、セッション変数CORDOVA_Android_GRADLE_DISTRIBUTION_URLの設定です構築する前に私にもう少しを得ました:
root@dev:$ export CORDOVA_Android_GRADLE_DISTRIBUTION_URL="https\://services.gradle.org/distributions/gradle-2.14.1-all.Zip"
root@dev:$ cordova build Android
次にすべきことは、編集<project>/platforms/Android/build.gradle
および<project>/platforms/Android/CordovaLib/build.gradle
そして、両方が有効なgradleプラグインバージョンを指していることを確認します。
dependencies {
classpath 'com.Android.tools.build:gradle:2.2.0'
}
...および<project>/platforms/Android/CordovaLib/build.gradle
jcenterをリポジトリに追加しました(maven.orgには2.2.0がないようです)
repositories {
mavenCentral();
jcenter()
}
私はその時に構築することができました。
私のionic 1プロジェクトで、デフォルトのgradleラッパーを使用する]に切り替えても機能しませんでしたが、実行中です
ionic platform remove Android
ionic platform add Android
私のために働いた
platform/Android/cordova/lib/builders/GradleBuilder.jsで値を変更できます
変更した値は、Android platform
var distributionUrl = process.env['CORDOVA_Android_GRADLE_DISTRIBUTION_URL'] || 'https\\://services.gradle.org/distributions/gradle-2.14.1-all.Zip';
または他のANSのような
export CORDOVA_Android_GRADLE_DISTRIBUTION_URL="https\://services.gradle.org/distributions/gradle-2.14.1-all.Zip"
問題を修正する別の方法は、Windowsでも機能します。
cordova build Android --release --CORDOVA_Android_GRADLE_DISTRIBUTION_URL=https\://services.gradle.org/distributions/gradle-2.14.1-all.Zip
@bunglerの回答を拡張したいと思います。
GradleのバージョンとAndroid gradleのプラグインの互換バージョン。次のリンクには互換バージョンのマッピングのリストがあります。
Gradle vs Android gradle用プラグイン-互換性のあるバージョンリスト
Gradleの現在のバージョン3.3 +、Androidプラグインの互換バージョンは) 2.3.3
したがって、最終的な設定は次のようになります。
Mac用
ステップ1:環境変数に以下を追加します。
オプションa)環境変数の更新:
export CORDOVA_Android_GRADLE_DISTRIBUTION_URL="https\://services.gradle.org/distributions/gradle-3.3-all.Zip"
または
オプションb)gradle file をダウンロードして、<project>/platforms/Android/gradle/
およびenv変数の更新:
export CORDOVA_Android_GRADLE_DISTRIBUTION_URL="../gradle-3.3-all.Zip"
ステップ2:<project>/platforms/Android/CordovaLib/build.gradle
buildscript {
...
dependencies {
classpath 'com.Android.tools.build:gradle:2.3.3'
}
}
これは私のために働いた。
フォローエラーの場合:
サポートされているGradleの最小バージョンは4.1です。現在のバージョンは3.3です。 gradleラッパーを使用している場合、E:\ ionic\MyIonicProject\gr adle\wrapper\gradle-wrapper.propertiesのdistributionUrlをgradle 4.1のgradle-4.1-all.Zipに編集してみてください
このコマンドは私のために働いた:
ionic cordova platform update Android
Chuck Holbrooksの回答に続いて、次の解決策でAndroid platformが既に追加されていると再度言ったときにエラーが発生します。
ionic cordova platform remove Android
ionic cordova platform add Android
私の作業ソリューション:
ionic cordova platform remove Android
ionic cordova platform check Android
ionic cordova platform add Android