Ошибка: не удалось найти org.jetbrains.kotlin: kotlin-stdlib-jdk8: 1.3.60-eap-25 в Ionic 3 - PullRequest
77 голосов
/ 23 октября 2019

При создании приложения Ionic 3 для Android внезапно появляется следующая ошибка.

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

У нас есть одно решение от Android Studio здесь , но после того, как я изменил свою сборку. gradle со следующим кодом, я все еще получаю сообщение об ошибке.

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

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

Мой файл build.gradle выглядит так после того, как я обновил Cordova и добавил вышеуказанное решение.

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
}

Все ещета же ошибка.

Ответы [ 8 ]

69 голосов
/ 24 октября 2019

Проблема заключается в плагине cordova-support-google-services для Cordova.

На сегодня этот плагин build.gradle выглядит так (24 октября 2019 г.):

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

Точнее, проблема заключается в этой зависимости:

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

Это чрезвычайно хрупкий способ определения зависимостей. Знак «+» здесь означает «получить самую последнюю версию, доступную в репо». Если в репозитории опубликована более новая версия, и она нарушает сборку, то у всех, у кого есть этот плагин, свои проекты нарушаются. Это случилось сегодня. Выбранная версия повреждена com.android.tools.build:gradle:4.0.0. Это требует некоторых вещей Kotlin.

Именно поэтому вам ВСЕГДА нужно заморозить зависимости, чтобы надежно построить ваш проект. Никогда не доверяй новым вещам. Эта зависимость прекрасно компилируется так же, как и вчера:

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

Для тех, кто использует Cordova или Ionic, вы можете сделать быстрое исправление, чтобы иметь возможность построить проект путем замораживания зависимости в файле:

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

Это не окончательное решение, хотя. Если вы переустановите платформу Android через Cordova, ошибка снова появится. Сопровождающий проекта должен либо заморозить зависимость, либо исправить ее для поддержки gradle 4.0.0. А пока просто используйте фиксированный форк этого плагина.

29 голосов
/ 24 октября 2019

Вот решение.

Проблема была именно в хранилище maven ( здесь ), но проблема была в build.gradle из cordova-Плагин support-google-services , поэтому я добавил нужную строку, и теперь все в порядке, я уже создал запрос на извлечение к исходному репо ( здесь ). Но пока вы можете сделать то, что я сделал, просто замените в package.json текущую версию на мой репо:

До:

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

После:

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

после этого вам придется:

  • Удалить папки платформы и плагины
  • run npm install

Это временное решение, в то время как пул-запрос к главному репо принят и пакет npm обновлен

и все, теперь вы можетеСнова создайте свой проект.


Я использую Ionic 4, и для некоторых плагинов требуется cordova-support-google-services, если у вас его нет в пакете. Ошибка может быть связана с другим плагином,если это так, пожалуйста, добавьте package.json, чтобы мы могли выяснить, в чём проблема.


ОБНОВЛЕНИЕ 24 / ОКТЯБРЯ:

Я изменилРешение в моем репозитории, как многие из вас предложили, теперь решение состоит только в исправлении зависимости: от: com.android.tools.build: gradle: + до classpath com.android.tools.build: gradle: 3. + , это уже в моем репо, если вы хотите увидеть что изменилось

24 голосов
/ 24 октября 2019

РЕДАКТИРОВАНИЕ 28.10.19:

cordova-support-google-services была обновлена ​​до версии 1.3.2, которая изменяет путь к классам с classpath 'com.android.tools.build:gradle:+'

на

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

, который, кажется, исправляет ошибку kotlin

Оригинальный ответ

Я получил мой, чтобы успешно построить, выполнив следующие действия:

Iотредактировал платформы-> android-> cordova-support-google-services-> myAppName-build.gradle

и изменил

maventCentral()

на

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

Это решило ошибку kotlin, тогда я получил другую ошибку, которую я решил, изменив

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

на

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

Затем он был успешно собран.

7 голосов
/ 25 октября 2019

Решение для ionic v3 и cordova

@ Решение Mister Smith решило мою проблему

вам нужно перейти к файлу

platforms/android/cordova-support-google-services

затем

Заменить

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

на

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

@ Я нашел альтернативное решение для

setup kotlin in your system :)
5 голосов
/ 24 октября 2019

В качестве дополнительного временного исправления для продолжения предложения от @MisterSmith, используйте ловушку для повторного применения блокировки:

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

с этим чрезмерно многословным кодом bash:

#!/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
5 голосов
/ 24 октября 2019

в моем проекте я исправляю вот так (мой проект в 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' }
   }
}
1 голос
/ 14 ноября 2019

Мне пришлось добавить maven { url 'https://dl.bintray.com/kotlin/kotlin-eap' } как в build.gradle верхнего уровня, так и в модуль app build.gradle. В обоих случаях как в buildscripts.repositories, так и в allprojects.repositories

1 голос
/ 01 ноября 2019

Ничто из вышеперечисленного не сработало для меня. В итоге я удалил плагин google-services и добавил его.

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

...