Errore: Impossibile trovare org.jetbrains.kotlin: kotlin-stdlib-jdk8: 1.3.60-eap-25 in Ionic 3


81

Ricevo improvvisamente il seguente errore durante la creazione dell'app Ionic 3 per Android.

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

Abbiamo una soluzione da Android Studio qui, ma dopo che ho modificato il mio build.gradle con il seguente codice ricevo ancora l'errore.

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

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

Il mio file build.gradle appare così dopo aver aggiornato Cordova e aggiunto la soluzione sopra.

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
}

Ancora lo stesso errore.


Hai effettivamente inserito ...e cancellato gli altri repository che erano già lì?
ianhanniballake,

No. Ho appena cambiato l'URL di Maven.
Tapas Mukherjee,

Quindi, com'è il tuo file build.gradle se non è quello che hai pubblicato? Perché il tuo messaggio di errore dice che hai eliminato il repository in cui gradle:3.0.1si trova.
ianhanniballake,

Si prega di controllare la descrizione. Ho aggiunto il mio codice build.gradle. Ho appena sostituito l'URL.
Tapas Mukherjee,

Dovresti solo aggiungere le nuove linee, non sostituire quelle esistenti. Quale linea hai sostituito?
ianhanniballake,

Risposte:


75

Il problema risiede nel cordova-support-google-servicesplug-in per Cordova.

Questo plugin ha questo build.gradleaspetto a partire da oggi (24 ottobre 2019):

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

Più esattamente il problema sta in questa dipendenza:

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

Questo è un modo estremamente fragile per specificare le dipendenze. Il segno '+' qui significa "recupera la versione più recente disponibile nel repository". Se una versione più recente viene pubblicata nel repository e interrompe la compilazione, tutti i progetti con questo plug-in vengono interrotti. Questo è successo oggi. La versione rotta che viene recuperata è com.android.tools.build:gradle:4.0.0. Richiede alcune cose di Kotlin.

Ecco perché devi SEMPRE congelare le dipendenze per costruire il tuo progetto in modo affidabile. Non fidarti mai delle novità. Questa dipendenza si compila bene come ha fatto ieri:

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

Per quelli che usano Cordova o Ionic, puoi fare una soluzione rapida per poter costruire il progetto congelando la dipendenza nel file:

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

Questa non è una soluzione definitiva però. Se reinstalli la piattaforma Android tramite Cordova, l'errore verrà nuovamente visualizzato. Il manutentore del progetto dovrebbe bloccare la dipendenza o correggerla per supportare Gradle 4.0.0. Nel frattempo basta usare un fork fisso di questo plugin.


Dato che stiamo parlando di una soluzione temporanea, questa è la soluzione più rapida ed esplicativa per me. Grazie
Tapas Mukherjee,

Ho una domanda però. Se la mia app è già stata creata ed è installata nel telefono, è possibile utilizzare l'app '+' nelle dipendenze per interrompere l'app? Ci sono molte dipendenze in un'app ed è difficile mantenere la versione di tutte.
Tapas Mukherjee,

1
Compilo la mia app usando Phonegap Build; Ottengo lo stesso errore, anche se non ho incluso il plug-in "cordova-support-google-services". Eventuali suggerimenti? In particolare, come posso risolvere questo problema nel mio file config.xml?
Peter,

1
@peterk qui una correzione per phonegap build community.adobe.com/t5/PhoneGap/…
r1si

3
Il plug-in cordova-support-google-services ha già rilasciato una nuova versione ^ 1.3.2, dove blocca le dipendenze che risolvono il problema. Le risposte dovrebbero essere aggiornate per riflettere questo.
le0diaz,

30

MODIFICA 28/10/19:

cordova-support-google-services è stato aggiornato oggi alla versione 1.3.2 che cambia il percorso di classe da classpath 'com.android.tools.build:gradle:+'

per

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

che sembra correggere l'errore di kotlin

Risposta originale

Ho ottenuto il mio per costruire con successo nel modo seguente:

Ho modificato piattaforme-> android-> cordova-support-google-services-> myAppName-build.gradle

e cambiato

maventCentral()

per

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

Ciò ha risolto l'errore di kotlin, quindi stavo ottenendo un errore diverso che ho risolto cambiando

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

per

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

Quindi è stato costruito con successo.


Ho dovuto cambiare << per doLast nelle piattaforme / android / app / build.gradle, secondo stackoverflow.com/a/55793096/2393822
umadesign

2
@JimBergman ho ottenuto l'URL Kotlin dal sito ufficiale di Studio Android: riferimento androidstudio.googleblog.com/2019/10/...
DanielRead

1
Scorri verso il basso fino alla sezione intitolata "Problema noto per Missing Kotlin Maven repo"
Daniel Leggi il

@DanielRead grazie lo vedo ora. Non pensare ancora che fare riferimento ai file in bintray.com sia il modo per aggirare il problema. La soluzione di Mister Smith sopra è molto migliore.
Jim Bergman,

1
Per aggiornare il plugin, esegui: cordova plugin rm cordova-support-google-services --force && cordova plugin add cordova-support-google-services
Klemens Zleptnig,

29

Ecco la soluzione

Il problema era esattamente il repository maven ( qui ), ma il problema era con build.gradle dal plug-in cordova -support-google-services , quindi ho aggiunto la riga richiesta e ora è tutto a posto, ho già creato un pull richiesta al repository originale ( qui ). Ma nel frattempo puoi fare quello che ho fatto, basta sostituire nel package.json l'attuale versione con il mio repository:

Prima:

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

Dopo:

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

dopodiché dovrai:

  • Rimuovere le cartelle piattaforme e plug-in
  • correre npm install

Questa è una soluzione temporale mentre la richiesta pull al repository principale viene accettata e il pacchetto npm aggiornato

e basta, ora puoi costruire di nuovo il tuo progetto.


Sto usando Ionic 4 e alcuni plugin richiedono cordova-support-google-services , nel caso in cui non lo possieda nel tuo pacchetto. L'errore potrebbe essere con un altro plugin, in tal caso aggiungi il pacchetto.json in modo che possiamo scoprire quale è il problema.


AGGIORNAMENTO 24 / OTT:

Ho cambiato la soluzione nel mio repository come molti di voi hanno suggerito, ora la soluzione consiste proprio nel fissare la dipendenza: da: com.android.tools.build:gradle:+ a classpath com.android.tools.build:gradle: 3. + , questo è già nel mio repository se vuoi vedere cosa è cambiato


Quanto tempo impiega solitamente qualcuno ad approvare qualcosa su quel repository?
AndySousa,

7

nel mio progetto ho risolto in questo modo (il mio progetto 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' }
   }
}

6

Soluzione per ionic v3 e cordova

La soluzione di @Mister Smith ha risolto il mio problema

devi andare al file

platforms/android/cordova-support-google-services

poi

Sostituire

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

di

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

La soluzione alternativa che ho trovato è

setup kotlin in your system :)

Funziona. Grazie. Penso che possiamo impostare la stessa versione per la versione dal file build.gradle
Nguyen Tran

1
@NguyenTran Penso che configurare Kotlin nel tuo sistema con Android Studio sia la soluzione più avanzata e migliore se vuoi usare l'ultimo Gradle, altrimenti, attenersi al gradle di versione precedente supportato dal tuo progetto. oppure cerca il miglior supporto per i gradi per ionic v3.
Ha detto Mohd Ali il

5

Come ulteriore soluzione temporanea per dare seguito al suggerimento di @MisterSmith, utilizzare un hook per riapplicare il blocco:

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

con questo codice bash eccessivamente prolisso:

#!/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

1
Ha funzionato per me dopo essere passato app-build.gradlea %MY_APP_NAME%-build.gradle. Grazie!
Alexander Zinchuk,

3

Ho dovuto aggiungere maven { url 'https://dl.bintray.com/kotlin/kotlin-eap' }sia al livello superiore build.gradleche al appmodulo build.gradle. In entrambi i casi sia in buildscripts.repositoriesche inallprojects.repositories


2

Nessuna delle precedenti ha funzionato per me. Ho finito per rimuovere il plug-in Google Services e aggiungerlo.

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


Questa è l'unica risposta che ha effettivamente risolto il problema. La rimozione e l'aggiunta del plug-in corregge tutto ciò che dovrebbe essere corretto sul file build.gradle.
Felipe Ferri,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.