Erro: Não foi possível encontrar org.jetbrains.kotlin: kotlin-stdlib-jdk8: 1.3.60-eap-25 no Ionic 3

81

Estou recebendo o seguinte erro de repente ao criar o aplicativo Ionic 3 para Android.

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

Temos uma solução do Android Studio aqui, mas depois que eu mudei no build.gradle com o código a seguir, ainda estou recebendo o erro.

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

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

Meu arquivo build.gradle se parece com este após atualizar meu Cordova e adicionar a solução acima.

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
}

Ainda é o mesmo erro.

Tapas Mukherjee
fonte
Você realmente colocou ...e excluiu os outros repositórios que já estavam lá?
Ianhanniballake #
Não. Acabei de alterar o URL do maven.
Tapas Mukherjee
Então, como é o seu arquivo build.gradle se ele não foi o que você postou? Porque sua mensagem de erro está dizendo que você excluiu o repositório onde gradle:3.0.1está localizado.
Ianhanniballake 23/10/19
Por favor, verifique a descrição. Eu adicionei meu código build.gradle. Acabei de substituir o URL.
Tapas Mukherjee
Você deve adicionar apenas as novas linhas, não substituindo as linhas existentes. Que linha você substituiu?
Ianhanniballake #

Respostas:

75

O problema está no cordova-support-google-servicesplug - in do Cordova.

build.gradleHoje, este plug-in está assim (24 de outubro de 2019):

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

Mais exatamente, o problema está nesta dependência:

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

Essa é uma maneira extremamente frágil de especificar dependências. O sinal '+' aqui significa "buscar a versão mais recente disponível no repositório". Se uma versão mais recente for publicada no repositório e interromper a compilação, todos os usuários deste plugin terão seus projetos danificados. Isso aconteceu hoje. A versão quebrada que está sendo buscada é com.android.tools.build:gradle:4.0.0. Requer algumas coisas de Kotlin.

É por isso que você sempre deve congelar dependências para criar seu projeto com segurança. Nunca confie nas coisas mais recentes. Essa dependência compila bem, como fez ontem:

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

Para aqueles que usam Cordova ou Ionic, é possível fazer uma correção rápida para poder construir o projeto congelando a dependência no arquivo:

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

Esta não é uma solução definitiva. Se você reinstalar a plataforma Android via Cordova, o erro será exibido novamente. O mantenedor do projeto deve congelar a dependência ou corrigi-la para dar suporte ao gradle 4.0.0. Enquanto isso, basta usar um fork fixo deste plugin.

Mister Smith
fonte
Como estamos falando de uma solução temporária, esta é a solução mais rápida e explicativa para mim. Obrigado
Tapas Mukherjee
Eu tenho uma pergunta embora. Se meu aplicativo já estiver construído e instalado no telefone, o uso do '+' nas dependências pode prejudicar o aplicativo? Existem muitas dependências em um aplicativo e é difícil manter a versão de todas elas.
Tapas Mukherjee
11
Eu compilo meu aplicativo usando o Phonegap Build; Eu recebo o mesmo erro, embora não tenha incluído o plug-in 'cordova-support-google-services'. Alguma sugestão? Em particular, como posso corrigir isso no meu arquivo config.xml?
Peterk 26/10/19
11
@peterk aqui uma correção para phonegap construção community.adobe.com/t5/PhoneGap/...
r1si
3
O plugin cordova-support-google-services já lançou uma nova versão ^ 1.3.2, onde ele congela as dependências que consertam o problema. As respostas devem ser atualizadas para refletir isso.
Le0diaz 07/11/19
30

EDIT 28/10/19:

O cordova-support-google-services foi atualizado hoje para a versão 1.3.2, que altera o caminho de classe de classpath 'com.android.tools.build:gradle:+'

para

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

que parece corrigir o erro do kotlin

Resposta original

Eu consegui criar o meu com êxito, fazendo o seguinte:

Eu editei plataformas-> android-> cordova-support-google-services-> myAppName-build.gradle

e mudou

maventCentral()

para

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

Isso resolveu o erro kotlin, então eu estava recebendo um erro diferente que resolvi alterando

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

para

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

Ele então foi construído com sucesso.

DanielRead
fonte
Última atualização em plataformas / android / app / build.gradle, de acordo com stackoverflow.com/a/55793096/2393822 #
umadesign 24/19/19
2
@JimBergman Eu obtive o URL do kotlin no site oficial do Android Studio: referência androidstudio.googleblog.com/2019/10/…
DanielRead 24/19/19
11
Role para a seção intitulada "Problema conhecido para o repo ausente do Kotlin Maven"
DanielRead 24/10/19
@DanielRead obrigado, vejo isso agora. Ainda não acho que fazer referência a arquivos no bintray.com seja a maneira de solucionar o problema. A solução do Sr. Smith acima é muito melhor.
21819 Jim Bergman
11
Para atualizar o plug-in, execute: cordova plugin rm cordova-support-google-services --force && cordova plugin add cordova-support-google-services
Klemens Zleptnig 6/11/19
29

Aqui está a solução.

O problema era exatamente o repositório maven ( aqui ), mas o problema era com o build.gradle do plug - in cordova-support-google-services , então adicionei a linha necessária e está tudo bem agora, já criei um pull solicitação ao repositório original ( aqui ). Mas, enquanto isso, você pode fazer o que eu fiz, basta substituir no package.json a versão atual pelo meu repo:

Antes:

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

Depois de:

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

depois disso você terá que:

  • Remover plataformas de pastas e plugins
  • corre npm install

Esta é uma solução temporal, enquanto a solicitação de recebimento para o repositório principal é aceita e o pacote npm é atualizado

e é isso, agora você pode construir seu projeto novamente.


Estou usando o Ionic 4, e alguns plugins exigem cordova-support-google-services, caso você não o tenha no seu package.json, o erro pode estar em outro plug-in; se houver, adicione o package.json para que possamos descobrir qual é o problema.


ATUALIZAÇÃO 24 / OUT:

Alterei a solução no meu repositório, como muitos de vocês sugeriram, agora a solução consiste apenas em corrigir a dependência: de: com.android.tools.build:buildle :+ para classpath com.android.tools.build:gradle: 3. + , isso já está no meu repositório, se você quiser ver o que mudou

Luis Gonzalez
fonte
Quanto tempo geralmente leva para alguém aprovar algo nesse repositório?
AndySousa 23/10/19
7

no meu projeto eu corrijo assim (meu projeto no 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
fonte
6

Solução para ionic v3 e cordova

A solução @Mister Smith resolveu meu problema

você tem que ir para o arquivo

platforms/android/cordova-support-google-services

então

Substituir

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

de

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

Solução alternativa que eu encontrei é

setup kotlin in your system :)
Sayed Mohd Ali
fonte
Funciona. Obrigado. Acho que podemos definir a versão mesma para a versão de arquivo build.gradle
Nguyen Tran
11
@NguyenTran Acho que configurar o Kotlin no seu sistema com o android studio é a solução mais avançada e melhor se você quiser usar o Gradle mais recente, caso contrário, atenha-se à versão mais antiga gradle suportada pelo seu projeto. ou procure o melhor suporte de gradle para o ionic v3.
Sayed Mohd Ali
5

Como uma correção temporária adicional para acompanhar a sugestão do @MisterSmith, use um gancho para reaplicar a trava:

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

com este código bash excessivamente prolixo:

#!/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
fonte
11
Trabalhou para mim depois de mudar app-build.gradlepara %MY_APP_NAME%-build.gradle. Obrigado!
Alexander Zinchuk 27/10/19
3

Eu tive que adicionar maven { url 'https://dl.bintray.com/kotlin/kotlin-eap' }ambos ao nível superior build.gradlee ao appmódulo build.gradle. Em ambos os casos, tanto buildscripts.repositoriesnoallprojects.repositories

Alexander Kulyakhtin
fonte
2

Nenhuma das opções acima funcionou para mim. Acabei removendo o plug-in do google-services e o adicionei.

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

Homem chamado Haney
fonte
Esta é a única resposta que realmente resolveu o problema. A remoção e inclusão do plug-in corrigem tudo o que deve ser corrigido no arquivo build.gradle.
Felipe Ferri