Erreur: impossible de trouver org.jetbrains.kotlin: kotlin-stdlib-jdk8: 1.3.60-eap-25 dans Ionic 3

81

Je reçois soudainement l'erreur suivante lors de la création 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 d'Android Studio ici, mais après avoir modifié mon build.gradle avec le code suivant, j'obtiens 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.

Tapas Mukherjee
la source
Avez-vous réellement ajouté ...et supprimé les autres référentiels qui étaient déjà là?
ianhanniballake
Non, je viens de changer l'URL maven.
Tapas Mukherjee
À quoi ressemble réellement votre fichier build.gradle s'il n'est pas ce que vous avez publié? Parce que votre message d'erreur indique que vous avez supprimé le référentiel où gradle:3.0.1se trouve.
ianhanniballake
Veuillez vérifier la description. J'ai ajouté mon code build.gradle. Je viens de remplacer l'URL.
Tapas Mukherjee
Vous ne devez ajouter que les nouvelles lignes, pas remplacer les lignes existantes. Quelle ligne avez-vous remplacée?
ianhanniballake

Réponses:

75

Le problème réside dans le cordova-support-google-servicesplugin pour Cordova.

Ce plugin build.gradleressemble à 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 rompt 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 plateforme 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 niveau 4.0.0. En attendant, utilisez simplement un fork fixe de ce plugin.

Monsieur Smith
la source
Comme nous parlons d'une solution temporaire, c'est la solution la plus rapide et explicative pour moi. Merci
Tapas Mukherjee
Cependant j'ai une question. Si mon application est déjà construite et qu'elle est installée dans le téléphone, l'utilisation du «+» dans les dépendances peut-elle interrompre l'application? Il y a beaucoup de dépendances dans une application et il est difficile de maintenir la version de toutes.
Tapas Mukherjee
1
Je compile mon application à l'aide de Phonegap Build; J'obtiens la même erreur, bien que je n'aie pas inclus le plugin 'cordova-support-google-services'. Aucune suggestion? En particulier, comment puis-je résoudre ce problème dans mon fichier config.xml?
peterk
1
@peterk ici un correctif pour la construction de phonegap community.adobe.com/t5/PhoneGap/…
r1si
3
Le plugin cordova-support-google-services a déjà sorti une nouvelle version ^ 1.3.2, où il fige les dépendances corrigeant le problème. Les réponses doivent être mises à jour pour refléter cela.
le0diaz
30

EDIT 28/10/19:

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

Réponse originale

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 alors 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.

DanielRead
la source
a dû changer << to doLast dans les plateformes / android / app / build.gradle, selon stackoverflow.com/a/55793096/2393822
umadesign
2
@JimBergman J'ai obtenu l'URL kotlin sur le site officiel d'Android Studio: référence androidstudio.googleblog.com/2019/10/…
DanielRead
1
Faites défiler jusqu'à la section intitulée «Problème connu pour le dépôt Kotlin Maven manquant»
DanielLire
@DanielRead merci je le vois maintenant. Ne pensez toujours pas que référencer des fichiers dans bintray.com est le moyen de contourner le problème. La solution de Monsieur Smith ci-dessus est bien meilleure.
Jim Bergman
1
Pour mettre à jour le plugin, exécutez: cordova plugin rm cordova-support-google-services --force && cordova plugin add cordova-support-google-services
Klemens Zleptnig
29

Voici la solution.

Le problème était exactement le référentiel maven ( ici ), mais le problème était avec le build.gradle du plugin cordova -support-google-services , j'ai donc ajouté la ligne requise et tout va bien maintenant, j'ai déjà créé un pull demande au dépôt d'origine ( ici ). Mais en attendant, vous pouvez faire ce que j'ai fait, il suffit de remplacer dans le package.json la version actuelle par 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:

  • Supprimer les plates - formes de dossiers et les plugins
  • courir npm install

Il s'agit d'une solution temporelle tandis que la demande de tirage vers le référentiel principal est acceptée et le package npm mis à jour

et c'est tout, vous pouvez maintenant 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 savoir 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: de: com.android.tools.build:gradle:+ à classpath com.android.tools.build:gradle: 3. + , c'est déjà dans mon repo si vous voulez voir ce qui a changé

Luis Gonzalez
la source
Combien de temps faut-il habituellement à quelqu'un pour approuver quelque chose sur ce dépôt?
AndySousa
7

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' }
   }
}
Ven Ren
la source
6

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 :)
Sayed Mohd Ali
la source
Ça marche. Je vous remercie. Je pense que nous pouvons définir la même version à la version du fichier build.gradle
Nguyen Tran
1
@NguyenTran Je pense que la configuration de Kotlin dans votre système avec le studio Android est la solution la plus avancée et la meilleure si vous souhaitez utiliser le dernier Gradle, sinon, restez sur l'ancienne version Gradle prise en charge par votre projet. ou recherchez le meilleur support gradle pour ionic v3.
Sayed Mohd Ali
5

Pour corriger temporairement la 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
Greg Haygood
la source
1
A travaillé pour moi après avoir changé app-build.gradlepour %MY_APP_NAME%-build.gradle. Merci!
Alexander Zinchuk
3

J'ai dû ajouter à la maven { url 'https://dl.bintray.com/kotlin/kotlin-eap' }fois au niveau supérieur build.gradleet au appmodule build.gradle. Dans les deux cas , les deux dans le buildscripts.repositorieset enallprojects.repositories

Alexander Kulyakhtin
la source
2

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

L'homme a appelé Haney
la source
C'est la seule réponse qui a réellement résolu le problème. La suppression et l'ajout du plugin corrigent tout ce qui doit être corrigé dans le fichier build.gradle.
Felipe Ferri