Error: No se pudo encontrar org.jetbrains.kotlin: kotlin-stdlib-jdk8: 1.3.60-eap-25 en Ionic 3

81

De repente recibo el siguiente error al crear la aplicación Ionic 3 para Android.

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

Aquí tenemos una solución de Android Studio , pero después de que cambié mi build.gradle con el siguiente código, todavía recibo el error.

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

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

Mi archivo build.gradle se ve así después de actualizar mi Cordova y agregar la solución anterior.

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
}

Sigue siendo el mismo error.

Tapas Mukherjee
fuente
¿Realmente colocó ...y eliminó los otros repositorios que ya estaban allí?
ianhanniballake
No. Acabo de cambiar la url maven.
Tapas Mukherjee
Entonces, ¿qué aspecto tiene realmente su archivo build.gradle si no es lo que publicó? Porque su mensaje de error dice que eliminó el repositorio donde gradle:3.0.1se encuentra.
ianhanniballake
Por favor revise la descripción. He agregado mi código build.gradle. Acabo de reemplazar la url.
Tapas Mukherjee
Solo debe agregar las nuevas líneas, no reemplazar las líneas existentes. ¿Qué línea reemplazaste?
ianhanniballake

Respuestas:

75

El problema radica en el cordova-support-google-servicescomplemento para Cordova.

Este complemento se build.gradleve así a partir de hoy (24 de octubre de 2019):

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

Más exactamente el problema radica en esta dependencia:

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

Esa es una forma extremadamente frágil de especificar dependencias. El signo '+' aquí significa "buscar la versión más reciente disponible en el repositorio". Si se publica una versión más nueva en el repositorio, y se rompe la compilación, entonces todos los que tengan este complemento tienen sus proyectos interrumpidos. Esto sucedió hoy. La versión rota que se está buscando es com.android.tools.build:gradle:4.0.0. Requiere algunas cosas de Kotlin.

Es por eso que SIEMPRE necesita congelar las dependencias para construir su proyecto de manera confiable. Nunca confíes en las cosas más nuevas. Esta dependencia se compila bien tal como lo hizo ayer:

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

Para aquellos que usan Cordova o Ionic, puede hacer una solución rápida para poder construir el proyecto congelando la dependencia en el archivo:

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

Sin embargo, esta no es una solución definitiva. Si reinstala la plataforma de Android a través de Cordova, el error volverá a aparecer. El responsable del proyecto debe congelar la dependencia o arreglarla para que soporte gradle 4.0.0. Mientras tanto, solo use una bifurcación fija de este complemento.

Señor Smith
fuente
Como estamos hablando de una solución temporal, esta es la solución más rápida y explicativa para mí. Gracias
Tapas Mukherjee
Sin embargo, tengo una pregunta. Si mi aplicación ya está compilada y está instalada en el teléfono, ¿puede usar la aplicación el '+' en las dependencias? Hay muchas dependencias en una aplicación y es difícil mantener la versión de todas ellas.
Tapas Mukherjee
1
Compilo mi aplicación usando Phonegap Build; Me sale el mismo error, aunque no he incluido el complemento 'cordova-support-google-services'. ¿Alguna sugerencia? En particular, ¿cómo puedo solucionar esto en mi archivo config.xml?
Peter
1
@peterk aquí una solución para la compilación de phonegap community.adobe.com/t5/PhoneGap/…
r1si
3
El plugin cordova-support-google-services ya ha lanzado una nueva versión ^ 1.3.2, donde congela las dependencias que solucionan el problema. Las respuestas deben actualizarse para reflejar esto.
le0diaz
30

EDITAR 28/10/19:

cordova-support-google-services se actualizó hoy a la versión 1.3.2 que cambia el classpath de classpath 'com.android.tools.build:gradle:+'

a

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

que parece corregir el error de Kotlin

Respuesta original

Obtuve el mío para construir con éxito haciendo lo siguiente:

Edité plataformas-> android-> cordova-support-google-services-> myAppName-build.gradle

y cambiado

maventCentral()

a

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

Eso resolvió el error de Kotlin y luego recibí un error diferente que resolví cambiando

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

a

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

Luego se construyó con éxito.

DanielLeer
fuente
tuvo que cambiar << a doLast en plataformas / android / app / build.gradle, de acuerdo con stackoverflow.com/a/55793096/2393822
umadesign
2
@ JimBergman Obtuve la URL de Kotlin del sitio web oficial de Android Studio: referencia androidstudio.googleblog.com/2019/10/…
DanielRead
1
Desplácese hacia abajo a la sección titulada "Problema conocido por el repositorio Missing Kotlin Maven"
DanielRead
@ DanielRead gracias, ahora veo eso. Todavía no creo que hacer referencia a archivos en bintray.com sea la forma de solucionar el problema. La solución de Mister Smith arriba es mucho mejor.
Jim Bergman
1
Para actualizar el complemento, ejecute: cordova plugin rm cordova-support-google-services --force && cordova plugin add cordova-support-google-services
Klemens Zleptnig
29

Aquí está la solución.

El problema era exactamente el repositorio de Maven ( aquí ), pero el problema era con el build.gradle del complemento cordova-support-google-services , así que agregué la línea requerida y todo está bien ahora, ya he creado un pull solicitud al repositorio original ( aquí ). Pero mientras tanto, puede hacer lo que hice, simplemente reemplace en el paquete.json la versión actual con mi repositorio:

Antes de:

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

Después:

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

después de eso tendrás que:

  • Eliminar carpetas, plataformas y complementos
  • correr npm install

Esta es una solución temporal mientras se acepta la solicitud de extracción al repositorio principal y se actualiza el paquete npm

y eso es todo, ahora puedes construir tu proyecto nuevamente.


Estoy usando Ionic 4, y algunos complementos requieren cordova-support-google-services, en caso de que no lo tenga en su package.json, el error podría estar con otro complemento, si es así, agregue package.json para que podamos averiguar cuál es el problema.


ACTUALIZACIÓN 24 / OCT:

Cambié la solución en mi repositorio como muchos de ustedes sugirieron, ahora la solución consiste solo en arreglar la dependencia: de: com.android.tools.build:gradle:+ a classpath com.android.tools.build:gradle: 3. + , esto ya está en mi repositorio si quieres ver qué ha cambiado

Luis gonzalez
fuente
¿Cuánto tiempo suele llevar a alguien aprobar algo en ese repositorio?
AndySousa
7

en mi proyecto lo arreglo así (mi proyecto 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
fuente
6

Solución para iónico v3 y cordova

La solución de @Mister Smith resolvió mi problema

tienes que ir al archivo

platforms/android/cordova-support-google-services

entonces

Reemplazar

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

por

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

@La solución alternativa que he encontrado es

setup kotlin in your system :)
Sayed Mohd Ali
fuente
Funciona. Gracias. Creo que podemos configurar la versión igual a la versión del archivo build.gradle
Nguyen Tran
1
@NguyenTran Creo que configurar Kotlin en su sistema con el estudio de Android es la solución más avanzada y mejor si desea usar el último Gradle, de lo contrario, adhiérase a la versión anterior gradle compatible con su proyecto. o busque el mejor soporte de gradle para ionic v3.
Sayed Mohd Ali
5

Como una solución temporal adicional para el seguimiento de la sugerencia de @MisterSmith, use un gancho para volver a aplicar el bloqueo:

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

con este código bash excesivamente prolijo:

#!/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
fuente
1
Trabajó para mí después de cambiar app-build.gradlea %MY_APP_NAME%-build.gradle. ¡Gracias!
Alexander Zinchuk
3

Tuve que agregar maven { url 'https://dl.bintray.com/kotlin/kotlin-eap' }tanto al nivel superior build.gradlecomo al appmódulo build.gradle. En ambos casos, tanto en el buildscripts.repositoriesy enallprojects.repositories

Alexander Kulyakhtin
fuente
2

Nada de lo anterior funcionó para mí. Terminé eliminando el complemento de servicios de google y lo agregué.

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

El hombre llamado Haney
fuente
Esta es la única respuesta que realmente resolvió el problema. Al eliminar y agregar el complemento se corrige todo lo que se debe corregir en el archivo build.gradle.
Felipe Ferri el