Je reçois soudainement l'erreur suivante lors de la construction de l'application Ionic 3 pour Android.
Could not find org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.3.60-eap-25
Nous avons une solution de Android Studio ici mais après avoir changé mon build.gradle avec le code suivant, je reçois toujours l'erreur.
buildscript {
repositories {
...
maven { url 'https://dl.bintray.com/kotlin/kotlin-eap' }
}
}
allprojects {
repositories {
...
maven { url 'https://dl.bintray.com/kotlin/kotlin-eap' }
}
}
Mon fichier build.gradle ressemble à ceci après avoir mis à jour mon Cordova et ajouté la solution ci-dessus.
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
}
Toujours la même erreur.
Le problème réside dans le cordova-support-google-services
plugin pour Cordova.
Ce plugin build.gradle
ressemble à ceci à partir d'aujourd'hui (24 octobre 2019):
dependencies {
classpath 'com.Android.tools.build:gradle:+'
classpath 'com.google.gms:google-services:4.2.0'
}
Plus précisément, le problème réside dans cette dépendance:
classpath 'com.Android.tools.build:gradle:+'
C'est une façon extrêmement fragile de spécifier les dépendances. Le signe "+" signifie ici "récupérer la version la plus récente disponible dans le dépôt". Si une version plus récente est publiée dans le référentiel et qu'elle casse la version, alors tout le monde avec ce plugin a ses projets cassés. C'est arrivé aujourd'hui. La version cassée qui est récupérée est com.Android.tools.build:gradle:4.0.0
. Cela nécessite des trucs de Kotlin.
C'est pourquoi vous devez TOUJOURS geler les dépendances pour construire votre projet de manière fiable. Ne faites jamais confiance aux nouveautés. Cette dépendance se compile très bien comme hier:
classpath 'com.Android.tools.build:gradle:3.5.1'
Pour ceux qui utilisent Cordova ou Ionic, vous pouvez apporter une solution rapide pour pouvoir créer le projet en gelant la dépendance dans le fichier:
<projectroot>/platforms/Android/cordova-support-google-services/<project>-build.gradle
Ce n'est cependant pas une solution définitive. Si vous réinstallez la plate-forme Android via Cordova, l'erreur réapparaîtra. Le responsable du projet doit soit geler la dépendance, soit la corriger pour prendre en charge le grade 4.0.0. En attendant, utilisez simplement une fourchette fixe de ce plugin.
cordova-support-google-services a été mis à jour aujourd'hui vers la version 1.3.2 qui change le chemin de classe de classpath 'com.Android.tools.build:gradle:+'
à
classpath 'com.Android.tools.build:gradle:3.+'
qui semble corriger l'erreur kotlin
J'ai réussi à construire le mien en procédant comme suit:
J'ai édité les plateformes-> Android-> cordova-support-google-services-> myAppName-build.gradle
et changé
maventCentral()
à
maven { url "https://maven.google.com" }
maven { url 'https://dl.bintray.com/kotlin/kotlin-eap' }
Cela a résolu l'erreur kotlin, puis j'obtenais une erreur différente que j'ai résolue en changeant
classpath 'com.google.gms:google-services:4.2.0'
à
classpath 'com.google.gms:google-services:4.1.0'
Il s'est ensuite construit avec succès.
Voici la solution.
Le problème était exactement le référentiel maven ( ici ), mais le problème était avec le build.gradle du cordova-support-google-services plugin, j'ai donc ajouté la ligne requise et tout va bien maintenant, j'ai déjà créé une requête pull vers le référentiel d'origine ( ici ). Mais en attendant, vous pouvez faire ce que j'ai fait, il suffit de remplacer dans package.json la version actuelle avec mon dépôt:
Avant:
...
"cordova-support-google-services": "^1.3.1",
...
Après:
...
"cordova-support-google-services": "https://github.com/LuisEGR/cordova-support-google-services.git",
...
après cela, vous devrez:
npm install
Il s'agit d'une solution temporelle tandis que la demande de pull vers le référentiel principal est acceptée et le package npm mis à jour
et c'est tout, maintenant vous pouvez reconstruire votre projet.
J'utilise Ionic 4, et certains plugins nécessitent cordova-support-google-services
, au cas où vous ne l'auriez pas dans votre package.json, l'erreur pourrait être avec un autre plugin, si c'est le cas, veuillez ajouter le package.json afin que nous puissions déterminer lequel est le problème.
MISE À JOUR 24/OCT:
J'ai changé la solution dans mon référentiel comme beaucoup d'entre vous l'ont suggéré, maintenant la solution consiste simplement à corriger la dépendance: from: com.Android.tools.build:gradle:+ vers classpath com.Android.tools.build:gradle:3.+, c'est déjà dans mon référentiel si vous voulez voir ce qui a changé
dans mon projet je fixe comme ça. (mon projet en 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' }
}
}
Solution pour ionic v3 et cordova
La solution @Mister Smith a résolu mon problème
il faut aller au dossier
platforms/Android/cordova-support-google-services
puis
Remplacer
classpath 'com.Android.tools.build:gradle:+'
par
classpath 'com.Android.tools.build:gradle:3.5.1'
@La solution alternative que j'ai trouvée consiste à
setup kotlin in your system :)
Comme autre correctif temporaire pour suivre le suggestion de @MisterSmith, utilisez un crochet pour ré-appliquer le verrou:
<hook src="scripts/fix_Android_dep.sh" type="after_platform_add"/>
avec ce code bash trop verbeux:
#!/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
Je devais ajouter maven { url 'https://dl.bintray.com/kotlin/kotlin-eap' }
à la fois dans le niveau supérieur build.gradle
et dans le module app
build.gradle
. Dans les deux cas, à la fois dans le buildscripts.repositories
et en allprojects.repositories
Rien de ce qui précède n'a fonctionné pour moi. J'ai fini par supprimer le plugin google-services et l'ajouter.
cordova plugin rm cordova-support-google-services cordova plugin add cordova-support-google-services