Dies ist eine Lösung für den obigen Fehler, den ich dokumentieren möchte. Ich habe andere ähnliche Beiträge gefunden, aber keiner hat beschrieben, wie dieser Fehler mit Cordova oder Ionic in Verbindung gebracht werden kann.
Wenn Sie nicht vorsichtig sind, kann es zu Abweichungen zwischen der von Android Studio verwendeten Version von Gradle und der von Cordova/cordova-Android im automatisch generierten Anwendungscode angegebenen Version von Gradle kommen. Wie du weißt, rennst du?
$ cordova platform add Android
(oder $ ionic platform add Android
, wenn Sie eine Ionic-App erstellen) erstellt den nativen Anwendungscode im Projekt/Plattformen/Android.
In diesem Ordner exportiert die Datei /the-project/platforms/Android/cordova/lib/builders/GradleBuilder.js eine Variable wie folgt:
var distributionUrl = process.env['CORDOVA_Android_GRADLE_DISTRIBUTION_URL'] || 'http\\://services.gradle.org/distributions/gradle-x.y-all.Zip';
Wo x und y davon abhingen, auf welcher Version von Cordova/Cordova-Android der native Anwendungscode erstellt wird.
Wenn du rennst
$ cordova build Android
Die in distributionUrl
var angegebene Version von Gradle ist die für den Build verwendete Version.
Nun kommt der knifflige Teil. Wenn Sie das Projekt in Android Studio importieren, erhalten Sie höchstwahrscheinlich eine Meldung, in der Sie dringend aufgefordert werden, Gradle auf eine neuere Version zu aktualisieren (siehe unten):
Wenn Sie dies tun, lädt Android Studio eine neue Version von Gradle herunter, speichert sie lokal und konfiguriert das Projekt für die Verwendung der neu heruntergeladenen lokalen Gradle-Distribution. Dies ist die Radio-Option unterhalb der ausgewählten Option "Standard-Wrapper verwenden". , die ich jedoch abgewählt habe, weil dies Fehler verursachen würde.
Dies wird zu Problemen führen, da Android Studio und Cordova nun versuchen, die Anwendung mit verschiedenen Gradle-Versionen zu erstellen, und es werden Build-Fehler in Android Studio und auch mit angezeigt
$ cordova build Android
in der Befehlszeile. Die Lösung mit Cordova-Apps besteht darin, das Android Studio-Projekt immer auf "Standard-Gradle-Wrapper verwenden" zu setzen und die verführerischen Nachrichten für das Upgrade zu ignorieren. Wenn Sie eine neuere Version von Gradle verwenden möchten, können Sie jederzeit die distributionUrl-Variable in der oben genannten Datei ändern (Cordova rät jedoch dringend davon ab, Code im Plattformordner zu ändern, da er leicht überschrieben werden kann). Zum Zeitpunkt des Schreibens kann ich nicht sagen, ob es eine Möglichkeit gibt, die Gradle-Version auf der Website einzustellen
$ cordova platform add Android
schritt, das ist der Zeitpunkt, zu dem Sie dies tun möchten, damit Sie den Code innerhalb des Projekts/der Plattformen niemals direkt ändern
Für mich haben die folgenden Befehle das Problem gelöst:
cordova platform remove Android
cordova platform add Android
ionic build Android
Ich würde das gerne als Kommentar hinterlassen, aber ich bin anscheinend nicht seriös genug ...
Nachdem ich Ihre Dokumentation gelesen hatte, konnte ich mein Problem mit Ihrem Vorschlag, das Android Studio auf "Standard-Gradle-Wrapper verwenden" zu setzen, nicht beheben. Was ich gefunden habe ist, dass das Setzen der Sitzungsvariablen CORDOVA_Android_GRADLE_DISTRIBUTION_URL vor dem Bauen mich etwas weiter brachte:
[email protected]:$ export CORDOVA_Android_GRADLE_DISTRIBUTION_URL="https\://services.gradle.org/distributions/gradle-2.14.1-all.Zip"
[email protected]:$ cordova build Android
Als nächstes musste ich <project>/platforms/Android/build.gradle
und <project>/platforms/Android/CordovaLib/build.gradle
bearbeiten und sicherstellen, dass beide auf eine gültige Gradle-Plugin-Version hinweisen.
dependencies {
classpath 'com.Android.tools.build:gradle:2.2.0'
}
... und in <project>/platforms/Android/CordovaLib/build.gradle
habe ich jcenter in den Repositories hinzugefügt (weil maven.org scheinbar nicht 2.2.0 hatte)
repositories {
mavenCentral();
jcenter()
}
Ich konnte damals bauen.
Die Umstellung auf "Standard-Gradle-Wrapper verwenden" funktionierte bei meinem ionic 1-Projekt nicht, aber das Laufen
ionic platform remove Android
ionic platform add Android
Arbeitete für mich
sie können den Wert in Platform/Android/cordova/lib/builders/GradleBuilder.js ändern
wenn Sie den Wert ändern, den Sie geändert haben, wird er bei der Neuinstallation der Android-Plattform durch den neuesten Zip-Code ersetzt
var distributionUrl = process.env['CORDOVA_Android_GRADLE_DISTRIBUTION_URL'] || 'https\\://services.gradle.org/distributions/gradle-2.14.1-all.Zip';
oder wie die anderen ans
export CORDOVA_Android_GRADLE_DISTRIBUTION_URL="https\://services.gradle.org/distributions/gradle-2.14.1-all.Zip"
Eine andere Möglichkeit, ein Problem zu beheben, das auch unter Windows funktioniert:
cordova build Android --release --CORDOVA_Android_GRADLE_DISTRIBUTION_URL=https\://services.gradle.org/distributions/gradle-2.14.1-all.Zip
Ich möchte die @bungler-Antwort erweitern.
Ich wurde mit der Version von Gradle und der kompatiblen Version des Android-Plugins für Gradle verwechselt. Der folgende Link enthält die Liste der kompatiblen Versionszuordnungen:
Gradle vs Android Plugin für Gradle - Liste der kompatiblen Versionen
Für die aktuelle Version von gradle 3.3+ ist die kompatible Version des Android-Plugins 2.3.3.
Die endgültigen Einstellungen sehen also wie folgt aus:
Für Mac
SCHRITT 1: Fügen Sie Folgendes in env-Variablen hinzu:
option a) Aktualisierungsvariable:
export CORDOVA_Android_GRADLE_DISTRIBUTION_URL="https\://services.gradle.org/distributions/gradle-3.3-all.Zip"
oder
option b) Sie können die Gradle Datei herunterladen und in <project>/platforms/Android/gradle/
platzieren und die env-Variable aktualisieren:
export CORDOVA_Android_GRADLE_DISTRIBUTION_URL="../gradle-3.3-all.Zip"
SCHRITT 2: Update folgt in <project>/platforms/Android/CordovaLib/build.gradle
buildscript {
...
dependencies {
classpath 'com.Android.tools.build:gradle:2.3.3'
}
}
Das hat bei mir funktioniert.
Für folge fehler:
Minimale unterstützte Gradle-Version ist 4.1. Aktuelle Version ist 3.3. Ob Versuchen Sie, mit dem Gradle-Wrapper die DistributionUrl in .__ zu bearbeiten. E:\ionic\MyIonicProject\gr adle\wrapper\gradle-wrapper.properties auf gradle-4.1-all.Zip für gradle 4.1
Dieser Befehl hat für mich funktioniert:
ionic cordova platform update Android
Im Anschluss an die Antwort von Chuck Holbrook bekomme ich mit der folgenden Lösung eine Fehlermeldung, wenn ich erneut versuche, die Android-Plattform hinzuzufügen, dass sie bereits hinzugefügt wurde.
ionic cordova platform remove Android
ionic cordova platform add Android
Meine Arbeitslösung:
ionic cordova platform remove Android
ionic cordova platform check Android
ionic cordova platform add Android