Fehler: org.jetbrains.kotlin: kotlin-stdlib-jdk8: 1.3.60-eap-25 in Ionic 3 konnte nicht gefunden werden

81

Beim Erstellen der Ionic 3-App für Android wird plötzlich der folgende Fehler angezeigt.

Could not find org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.3.60-eap-25

Wir haben hier eine Lösung von Android Studio , aber nachdem ich mein build.gradle mit dem folgenden Code geändert habe, wird immer noch der Fehler angezeigt.

buildscript {
    repositories {
        ...
        maven { url 'https://dl.bintray.com/kotlin/kotlin-eap' }
    }
}

allprojects {
    repositories {
        ...
        maven { url 'https://dl.bintray.com/kotlin/kotlin-eap' }
    }
}

Meine build.gradle-Datei sieht folgendermaßen aus, nachdem ich meine Cordova aktualisiert und die obige Lösung hinzugefügt habe.

buildscript {
    repositories {
        google()
        jcenter()
        maven { url 'https://dl.bintray.com/kotlin/kotlin-eap' }
    }

    dependencies {
        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files

        classpath 'com.android.tools.build:gradle:3.3.0'
    }
}

allprojects {
    repositories {
        google()
        jcenter()
        maven { url 'https://dl.bintray.com/kotlin/kotlin-eap' }
    }

    //This replaces project.properties w.r.t. build settings
    project.ext {
      defaultBuildToolsVersion="28.0.3" //String
      defaultMinSdkVersion=19 //Integer - Minimum requirement is Android 4.4
      defaultTargetSdkVersion=28 //Integer - We ALWAYS target the latest by default
      defaultCompileSdkVersion=28 //Integer - We ALWAYS compile with the latest by default
    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}

Immer noch der gleiche Fehler.

Tapas Mukherjee
quelle
Haben Sie tatsächlich ...die anderen Repositorys eingefügt und gelöscht, die bereits vorhanden waren?
Ianhanniballake
Nein, ich habe gerade die Maven-URL geändert.
Tapas Mukherjee
Wie sieht Ihre build.gradle-Datei tatsächlich aus, wenn sie nicht von Ihnen gepostet wurde? Weil Ihre Fehlermeldung besagt, dass Sie das Repository gelöscht haben, in dem Sie gradle:3.0.1sich befinden.
Ianhanniballake
Bitte überprüfen Sie die Beschreibung. Ich habe meinen build.gradle-Code hinzugefügt. Ich habe gerade die URL ersetzt.
Tapas Mukherjee
Sie sollten nur die neuen Zeilen hinzufügen und keine vorhandenen Zeilen ersetzen. Welche Leitung haben Sie ersetzt?
Ianhanniballake

Antworten:

75

Das Problem liegt im cordova-support-google-servicesPlugin für Cordova.

Dieses Plugin build.gradlesieht ab heute (24. Oktober 2019) folgendermaßen aus:

dependencies {
    classpath 'com.android.tools.build:gradle:+'
    classpath 'com.google.gms:google-services:4.2.0'
}

Genauer gesagt liegt das Problem in dieser Abhängigkeit:

classpath 'com.android.tools.build:gradle:+'

Dies ist eine äußerst spröde Methode, um Abhängigkeiten anzugeben. Das Pluszeichen bedeutet hier "die aktuellste im Repo verfügbare Version abrufen". Wenn eine neuere Version im Repo veröffentlicht wird und der Build unterbrochen wird, sind die Projekte aller Benutzer dieses Plugins fehlerhaft. Das ist heute passiert. Die defekte Version, die abgerufen wird, ist com.android.tools.build:gradle:4.0.0. Es erfordert einige Kotlin-Sachen.

Aus diesem Grund müssen Sie Abhängigkeiten IMMER einfrieren, um Ihr Projekt zuverlässig zu erstellen. Vertraue niemals den neueren Sachen. Diese Abhängigkeit lässt sich genauso gut kompilieren wie gestern:

classpath 'com.android.tools.build:gradle:3.5.1'

Wenn Sie Cordova oder Ionic verwenden, können Sie eine schnelle Lösung vornehmen, um das Projekt erstellen zu können, indem Sie die Abhängigkeit in der Datei einfrieren:

<projectroot>/platforms/android/cordova-support-google-services/<project>-build.gradle

Dies ist jedoch keine endgültige Lösung. Wenn Sie die Android-Plattform über Cordova neu installieren, wird der Fehler erneut angezeigt. Der Projektbetreuer sollte die Abhängigkeit entweder einfrieren oder korrigieren, um Gradle 4.0.0 zu unterstützen. Verwenden Sie in der Zwischenzeit einfach eine feste Gabel dieses Plugins.

Herr Smith
quelle
Da es sich um eine vorübergehende Lösung handelt, ist dies für mich die schnellste und erklärendste Lösung. Danke
Tapas Mukherjee
Ich habe allerdings eine Frage. Wenn meine App bereits erstellt und auf dem Telefon installiert ist, kann die Verwendung des '+' in Abhängigkeiten die Wirkung der App unterbrechen? Es gibt viele Abhängigkeiten in einer App und es ist schwierig, die Version von allen zu pflegen.
Tapas Mukherjee
1
Ich kompiliere meine App mit Phonegap Build. Ich erhalte den gleichen Fehler, obwohl ich das Plugin 'cordova-support-google-services' nicht enthalten habe. Irgendwelche Vorschläge? Wie kann ich dies insbesondere in meiner Datei config.xml beheben?
Peterk
1
@ Peterk hier ein Fix für Phonegap Build Community.adobe.com/t5/PhoneGap/…
r1si
3
Das Plugin cordova-support-google-services hat bereits eine neue Version ^ 1.3.2 veröffentlicht, in der er die Abhängigkeiten einfriert, die das Problem beheben. Die Antworten sollten aktualisiert werden, um dies widerzuspiegeln.
Le0diaz
30

EDIT 28.10.19:

cordova-support-google-services wurde heute auf Version 1.3.2 aktualisiert, die den Klassenpfad von ändert classpath 'com.android.tools.build:gradle:+'

zu

classpath 'com.android.tools.build:gradle:3.+'

Das scheint den Kotlin-Fehler zu beheben

Ursprüngliche Antwort

Ich habe meine erfolgreich gebaut, indem ich Folgendes getan habe:

Ich habe Plattformen-> Android-> Cordova-Support-Google-Services-> myAppName-build.gradle bearbeitet

und geändert

maventCentral()

zu

    maven { url "https://maven.google.com" }
    maven { url 'https://dl.bintray.com/kotlin/kotlin-eap' }

Das hat den Kotlin-Fehler behoben, dann bekam ich einen anderen Fehler, den ich durch Ändern behoben habe

classpath 'com.google.gms:google-services:4.2.0'

zu

classpath 'com.google.gms:google-services:4.1.0'

Es wurde dann erfolgreich gebaut.

DanielRead
quelle
musste << in doLast in platform / android / app / build.gradle ändern, laut stackoverflow.com/a/55793096/2393822
umadesign
2
@ JimBergman Ich habe die Kotlin-URL von der offiziellen Android Studio-Website erhalten: Referenz androidstudio.googleblog.com/2019/10/…
DanielRead
1
Scrollen Sie nach unten zum Abschnitt "Bekanntes Problem für Missing Kotlin Maven Repo"
DanielRead
@ DanielRead danke ich sehe das jetzt. Denken Sie immer noch nicht, dass das Verweisen auf Dateien in bintray.com der Weg ist, um das Problem zu umgehen. Die Lösung von Mister Smith oben ist viel besser.
Jim Bergman
1
Um das Plugin zu aktualisieren, führen Sie cordova plugin rm cordova-support-google-services --force && cordova plugin add cordova-support-google-services
Folgendes aus
29

Hier ist die Lösung.

Das Problem war genau das Maven-Repository ( hier ), aber das Problem war mit dem build.gradle aus dem Cordova-Support-Google-Services- Plugin, also habe ich die erforderliche Zeile hinzugefügt und jetzt ist alles in Ordnung. Ich habe bereits einen Pull erstellt Anfrage an das Original Repo ( hier ). Aber in der Zwischenzeit können Sie das tun, was ich getan habe. Ersetzen Sie einfach in der package.json die aktuelle Version durch mein Repo:

Vor:

...
"cordova-support-google-services": "^1.3.1",
...

Nach:

...
"cordova-support-google-services": "https://github.com/LuisEGR/cordova-support-google-services.git",
...

Danach müssen Sie:

  • Entfernen von Ordnern Plattformen und Plug - in
  • Lauf npm install

Dies ist eine zeitliche Lösung, während die Pull-Anforderung an das Haupt-Repo akzeptiert und das npm-Paket aktualisiert wird

Und das war's, jetzt können Sie Ihr Projekt erneut erstellen.


Ich verwende Ionic 4 und einige Plugins erfordern cordova-support-google-services, falls Sie es nicht in Ihrem package.json haben. Der Fehler könnte bei einem anderen Plugin liegen. Wenn ja, fügen Sie bitte die package.json hinzu, damit wir herausfinden können, welches das ist Problem.


UPDATE 24 / OKT:

Ich habe die Lösung in meinem Repo geändert, wie viele von Ihnen vorgeschlagen haben. Jetzt besteht die Lösung nur noch darin, die Abhängigkeit zu beheben: von: com.android.tools.build:gradle:+ zu classpath com.android.tools.build:gradle: 3. + , das ist schon in meinem Repo, wenn du sehen willst, was sich geändert hat

Luis Gonzalez
quelle
Wie lange dauert es normalerweise, bis jemand etwas für dieses Repo genehmigt?
AndySousa
7

in meinem Projekt behebe ich so (mein Projekt in Kotlin)

buildscript{

    repositories {
         google()
         jcenter()
         ......
         maven { url 'https://dl.bintray.com/kotlin/kotlin-eap' }
    }

}

allprojects {
    repositories {
         google()
         jcenter()
         ......
         maven { url 'https://dl.bintray.com/kotlin/kotlin-eap' }
   }
}
Ven Ren
quelle
6

Lösung für ionisches v3 und Cordova

@ Herr Smith Lösung hat mein Problem gelöst

Sie müssen zur Datei gehen

platforms/android/cordova-support-google-services

dann

Ersetzen

classpath 'com.android.tools.build:gradle:+'

durch

classpath 'com.android.tools.build:gradle:3.5.1'

@ Alternative Lösung, die ich gefunden habe, ist zu

setup kotlin in your system :)
Sagte Mohd Ali
quelle
Es klappt. Vielen Dank. Ich denke, wir können die gleiche Version auf die Version aus der Datei build.gradle einstellen
Nguyen Tran
1
@NguyenTran Ich denke, das Einrichten von Kotlin in Ihrem System mit dem Android Studio ist die fortschrittlichste und beste Lösung, wenn Sie den neuesten Gradle verwenden möchten. Andernfalls halten Sie sich an den älteren Gradle, der von Ihrem Projekt unterstützt wird. oder suchen Sie nach der besten Gradle-Unterstützung für ionic v3.
Sagte Mohd Ali
5

Verwenden Sie als weitere vorübergehende Lösung für die Weiterverfolgung des Vorschlags von @MisterSmith einen Haken, um die Sperre erneut anzuwenden:

<hook src="scripts/fix_android_dep.sh" type="after_platform_add"/>

mit diesem übermäßig wortreichen Bash-Code:

#!/usr/bin/env bash

## temporary fix for android studio EAP issue
## SOURCE: https://stackoverflow.com/a/58536638/56545
if [ -d "platforms/android/cordova-support-google-services" ]; then
  file="platforms/android/cordova-support-google-services/app-build.gradle"
  from="classpath 'com.android.tools.build:gradle:+'"
  to="classpath 'com.android.tools.build:gradle:3.5.1'"

  change=`sed "s/$from/$to/" < "$file"`
  echo "$change" > "$file"
fi
Greg Haygood
quelle
1
Arbeitete für mich nach dem Wechsel app-build.gradlezu %MY_APP_NAME%-build.gradle. Vielen Dank!
Alexander Zinchuk
3

Ich musste maven { url 'https://dl.bintray.com/kotlin/kotlin-eap' }sowohl in die oberste Ebene build.gradleals auch in das appModul hinzufügen build.gradle. In beiden Fällen sowohl in die buildscripts.repositoriesals auch inallprojects.repositories

Alexander Kulyakhtin
quelle
2

Keines der oben genannten hat bei mir funktioniert. Am Ende habe ich das Google-Services-Plugin entfernt und hinzugefügt.

cordova plugin rm cordova-support-google-services cordova plugin add cordova-support-google-services

Mann namens Haney
quelle
Dies ist die einzige Antwort, die das Problem tatsächlich gelöst hat. Durch Entfernen und Hinzufügen des Plugins wird alles korrigiert, was in der Datei build.gradle korrigiert werden sollte.
Felipe Ferri