Ошибка: не удалось найти org.jetbrains.kotlin: kotlin-stdlib-jdk8: 1.3.60-eap-25 в Ionic 3


81

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

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

У нас есть одно решение из Android Studio здесь , но после того, как я сделал изменения в моей build.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
}

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


Вы на самом деле вставили ...и удалили другие репозитории, которые уже были там?
ianhanniballake

Нет, я только что изменил URL-адрес Maven.
Тапас Мукерджи

Так как же на самом деле выглядит ваш файл build.gradle, если он не тот, который вы опубликовали? Потому что ваше сообщение об ошибке говорит, что вы удалили хранилище, где gradle:3.0.1находится.
ianhanniballake

Пожалуйста, проверьте описание. Я добавил свой код build.gradle. Я только что заменил URL.
Тапас Мукерджи

Вы должны только добавлять новые строки, а не заменять существующие. Какую линию вы заменили?
Ианханнибаллейк

Ответы:


75

Проблема заключается в 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. А пока просто используйте фиксированный форк этого плагина.


Поскольку мы говорим о временном решении, это самое быстрое и объяснительное решение для меня. Спасибо
Тапас Мукерджи

У меня есть вопрос, хотя. Если мое приложение уже собрано и установлено в телефоне, можно ли использовать «+» в зависимости от приложения? В приложении много зависимостей, и сложно поддерживать их версию.
Тапас Мукерджи

1
Я компилирую свое приложение с помощью Phonegap Build; Я получаю ту же ошибку, хотя я не включил плагин 'cordova-support-google-services'. Какие-либо предложения? В частности, как я могу это исправить в моем файле config.xml?
peterk

1
@peterk здесь исправление для PhoneGap сборки community.adobe.com/t5/PhoneGap/...
r1si

3
Плагин cordova-support-google-services уже выпустил новую версию ^ 1.3.2, в которой он замораживает зависимости, устраняющие проблему. Ответы должны быть обновлены, чтобы отразить это.
le0diaz

30

ИЗМЕНИТЬ 10/28/19:

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

в

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

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

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

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

Я отредактировал платформы-> 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'

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


пришлось изменить << на doLast в платформах / android / app / build.gradle, согласно stackoverflow.com/a/55793096/2393822
umadesign

2
@JimBergman Я получил URL-адрес kotlin с официального сайта Android Studio: ссылка androidstudio.googleblog.com/2019/10/…
DanielRead

1
Прокрутите вниз до раздела «Известная проблема,
связанная с отсутствием

@DanielRead спасибо, я вижу это сейчас. Тем не менее, не думайте, что ссылки на файлы на bintray.com - это способ обойти проблему. Решение Мистера Смита выше намного лучше.
Джим Бергман

1
Чтобы обновить плагин, запустите: cordova plugin rm cordova-support-google-services --force && cordova plugin add cordova-support-google-services
Klemens Zleptnig

29

Вот решение.

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

Перед:

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

После:

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

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

  • Удалить папки платформ и плагинов
  • запустить npm install

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

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


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


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

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


Сколько времени обычно требуется, чтобы кто-то одобрил что-то в этом репо?
AndySousa

7

в моем проекте я исправляю вот так. (мой проект в котлине)

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

Раствор для ионных v3 и кордова

Решение @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 :)

Оно работает. Спасибо. Я думаю, что мы можем установить ту же версию на версию из файла build.gradle
Нгуен Тран

1
@NguyenTran Я думаю, что установка Kotlin в вашей системе с помощью android studio - это самое передовое и лучшее решение, если вы хотите использовать последнюю версию Gradle, в противном случае придерживайтесь старой версии gradle, поддерживаемой вашим проектом. или ищите лучшую поддержку gradle для ionic v3.
Сказал Мохд Али

5

В качестве дополнительного временного исправления, следуя предложению @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

1
Работал на меня после перехода app-build.gradleна %MY_APP_NAME%-build.gradle. Спасибо!
Александр Зинчук

3

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


2

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

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


Это единственный ответ, который на самом деле решил проблему. Удаление и добавление плагина исправляет все, что должно быть исправлено в файле build.gradle.
Фелипе Ферри
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.