Помилка: не вдалося знайти 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 виглядає так після того, як я оновив Кордову і додав вищевказане рішення.

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-адресу.
Тапас Мукерджі

Вам слід лише додавати нові рядки, не замінюючи жодних існуючих рядків. Яку лінію ви замінили?
ianhanniballake

Відповіді:


75

Проблема полягає в cordova-support-google-servicesплагіні для Кордови.

Цей плагін 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:+'

Це надзвичайно крихкий спосіб визначення залежностей. Знак "+" тут означає "отримати останню версію, доступну в репо". Якщо в repo публікується новіша версія, і вона порушує збірку, то у кожного із цим плагіном свої проекти порушені. Це сталося сьогодні. Зламана версія, яка видобувається, є com.android.tools.build:gradle:4.0.0. Для цього потрібні деякі речі Котліна.

Ось чому вам потрібно ЗАВЖДИ заморозити залежності, щоб надійно побудувати свій проект. Ніколи не довіряйте новішим речам. Ця залежність складається добре, як і вчора:

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

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

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

Це, однак, не є остаточним рішенням. Якщо ви перевстановите платформу Android через Кордову, помилка з’явиться знову. Керівник проекту повинен або заморозити залежність, або виправити її для підтримки gradle 4.0.0. Тим часом просто використовуйте фіксовану вилку цього плагіна.


Оскільки ми говоримо про тимчасове рішення, для мене це найшвидше та роз’яснювальне рішення. Спасибі
Тапас Мукерджі

У мене все ж питання. Якщо мій додаток уже вбудований і він встановлений у телефоні, чи може застосувати додаток "+" в залежності від залежності додаток? У додатку дуже багато залежностей, і важко підтримувати версію всіх.
Tapas Mukherjee

1
Я складаю додаток за допомогою програми Phonegap Build; Я отримую ту ж помилку, хоча я не включив плагін "cordova-support-google-services". Будь-які пропозиції? Зокрема, як я можу це виправити у своєму файлі config.xml?
peterk

1
@peterk тут виправлення для phonegap build community.adobe.com/t5/PhoneGap/…
r1si

3
Плагін cordova-support-google-services вже випустив нову версію ^ 1.3.2, де він заморожує залежності, що вирішують проблему. Відповіді повинні бути оновлені, щоб відобразити це.
le0diaz

30

EDIT 28.10.19:

Сервіси cordova-support-google оновлено сьогодні до версії 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 / додаток / build.gradle, згідно stackoverflow.com/a/55793096/2393822
umadesign

2
@JimBergman я отримав Котлин URL з офіційного сайту Android Студія: еталонні 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 , тому я додав потрібний рядок, і все нормально, я вже створив витяг запит до оригінального репо ( тут ). Але тим часом ви можете робити те, що я зробив, просто замініть в 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, якщо у вас його немає у вашому пакеті.json, помилка могла бути з іншим плагіном, якщо так, будь ласка, додайте package.json, щоб ми могли дізнатися, який із них проблема.


ОНОВЛЕННЯ 24 / ОКТ:

Я змінив рішення в моїй репо, як багато хто з вас запропонував, тепер це рішення полягає лише у виправлення залежності: від: com.android.tools.build:gradle:+ до classpath com.android.tools.build:gradle: 3. + , це вже в моїй репо, якщо ви хочете побачити, що змінилося


Скільки часу зазвичай потрібно, щоб хтось схвалив щось на цьому репо?
AndySousa

7

у своєму проекті я виправляю так (мій проект у 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

Рішення для іонної v3 та кордової

@Містер Сміт вирішив мою проблему

ви повинні перейти до файлу

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
Nguyen Tran

1
@ NguyenTran Я думаю, що налаштування Kotlin у вашій системі за допомогою андроїд-студії - це найдосконаліше і найкраще рішення, якщо ви хочете використовувати останню Gradle, інакше дотримуйтесь старішої версії gradle, підтримуваної вашим проектом. або шукайте найкращу підтримку gradle для ionic v3.
Сказав Мохд Алі

5

Для подальшого тимчасового виправлення подальших пропозицій від @MisterSmith використовуйте гачок, щоб повторно застосувати замок:

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

з цим надмірно багатомовним баш-кодом:

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