Kesalahan: Tidak dapat menemukan org.jetbrains.kotlin: kotlin-stdlib-jdk8: 1.3.60-eap-25 di Ionic 3

81

Saya mendapatkan kesalahan berikut tiba-tiba saat membangun aplikasi Ionic 3 untuk Android.

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

Kami memiliki satu solusi dari Android Studio di sini, tetapi setelah saya mengubah build.gradle saya dengan kode berikut, saya masih mendapatkan kesalahan.

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

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

File build.gradle saya terlihat seperti ini setelah saya memperbarui Cordova saya dan menambahkan solusi di atas.

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
}

Masih kesalahan yang sama.

Tapas Mukherjee
sumber
Apakah Anda benar-benar memasukkan ...dan menghapus repositori lain yang sudah ada di sana?
ianhanniballake
Tidak, aku baru saja mengubah url maven.
Tapas Mukherjee
Jadi seperti apa file build.gradle Anda sebenarnya jika bukan yang Anda posting? Karena pesan kesalahan Anda mengatakan Anda menghapus repositori di mana gradle:3.0.1berada.
ianhanniballake
Silakan periksa deskripsi. Saya telah menambahkan kode build.gradle saya. Saya baru saja mengganti url.
Tapas Mukherjee
Anda seharusnya hanya menambahkan baris baru, bukan mengganti baris yang ada. Baris apa yang Anda ganti?
ianhanniballake

Jawaban:

75

Masalahnya terletak pada cordova-support-google-servicesplugin untuk Cordova.

Pengaya ini build.gradleterlihat seperti ini mulai hari ini (24 Oktober 2019):

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

Lebih tepatnya masalahnya terletak pada ketergantungan ini:

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

Itu adalah cara yang sangat rapuh untuk menentukan dependensi. Tanda '+' di sini berarti "ambil versi terbaru yang tersedia di repo". Jika versi yang lebih baru diterbitkan dalam repo, dan itu merusak build, maka semua orang dengan plugin ini memiliki proyek mereka rusak. Ini terjadi hari ini. Versi rusak yang sedang diambil adalah com.android.tools.build:gradle:4.0.0. Itu membutuhkan beberapa hal Kotlin.

Itu sebabnya Anda perlu SELALU membekukan ketergantungan untuk membangun proyek Anda secara andal. Jangan pernah mempercayai hal-hal baru. Ketergantungan ini mengkompilasi dengan baik seperti yang terjadi kemarin:

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

Bagi mereka yang menggunakan Cordova atau Ionic, Anda dapat membuat perbaikan cepat untuk dapat membangun proyek dengan membekukan ketergantungan pada file:

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

Ini bukan solusi yang pasti. Jika Anda menginstal ulang platform android melalui Cordova kesalahan akan muncul lagi. Pengelola proyek harus membekukan ketergantungan atau memperbaikinya untuk mendukung gradle 4.0.0. Sementara itu hanya gunakan garpu tetap dari plugin ini.

Tuan Smith
sumber
Ketika kita berbicara tentang solusi sementara, ini adalah solusi tercepat dan jelas untuk saya. Terima kasih
Tapas Mukherjee
Saya punya pertanyaan. Jika aplikasi saya sudah dibuat dan diinstal di ponsel, dapatkah menggunakan '+' dalam dependensi efek aplikasi? Ada banyak dependensi dalam suatu aplikasi dan sulit untuk mempertahankan versi mereka semua.
Tapas Mukherjee
1
Saya mengkompilasi aplikasi saya menggunakan Phonegap Build; Saya mendapatkan kesalahan yang sama, meskipun saya belum memasukkan plugin 'cordova-support-google-services'. Ada saran? Secara khusus, bagaimana saya bisa memperbaikinya dalam file config.xml saya?
peterk
1
@peterk di sini perbaikan untuk phonegap build community.adobe.com/t5/PhoneGap/…
r1si
3
Plugin cordova-support-google-services telah merilis versi baru ^ 1.3.2, di mana ia membekukan dependensi yang memperbaiki masalah. Jawabannya harus diperbarui untuk mencerminkan hal ini.
le0diaz
30

EDIT 10/28/19:

cordova-support-google-services diperbarui hari ini ke versi 1.3.2 yang mengubah classpath dari classpath 'com.android.tools.build:gradle:+'

untuk

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

yang tampaknya memperbaiki kesalahan kotlin

Jawaban Asli

Saya mendapatkan properti saya untuk membangun dengan melakukan hal berikut:

Saya mengedit platform-> android-> cordova-support-google-services-> myAppName-build.gradle

dan berubah

maventCentral()

untuk

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

Itu memecahkan kesalahan kotlin maka saya mendapatkan kesalahan berbeda yang saya selesaikan dengan mengubah

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

untuk

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

Itu kemudian berhasil dibangun.

DanielRead
sumber
harus mengubah << ke doLast di platform / android / app / build.gradle, menurut stackoverflow.com/a/55793096/2393822
umadesign
2
@JimBergman Saya mendapat URL kotlin dari situs resmi Android Studio: referensi androidstudio.googleblog.com/2019/10/...
DanielRead
1
Gulir ke bawah ke bagian berjudul "Masalah yang diketahui untuk Repo Kotlin Maven yang Hilang"
DanielRead
@DanielRead, terima kasih, saya melihatnya sekarang. Masih tidak berpikir referensi file di bintray.com adalah cara untuk menyelesaikan masalah. Solusi oleh Mister Smith di atas jauh lebih baik.
Jim Bergman
1
Untuk memperbarui plugin, jalankan: cordova plugin rm cordova-support-google-services --force && cordova plugin add cordova-support-google-services
Klemens Zleptnig
29

Ini solusinya.

Masalahnya persis repositori pakar (di sini ), tetapi masalahnya adalah dengan build.gradle dari plugin cordova-support-google-services , jadi saya menambahkan baris yang diperlukan dan semuanya baik-baik saja sekarang, saya sudah membuat tarikan meminta ke repo asli (di sini ). Tetapi sementara itu Anda dapat melakukan apa yang saya lakukan, cukup ganti dalam package.json versión saat ini dengan repo saya:

Sebelum:

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

Setelah:

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

setelah itu Anda harus:

  • Hapus platform folder dan plugin
  • Lari npm install

Ini adalah solusi sementara sementara permintaan tarikan ke repo utama diterima dan paket npm diperbarui

dan hanya itu, sekarang Anda dapat membangun proyek Anda lagi.


Saya menggunakan Ionic 4, dan beberapa plugin memerlukan cordova-support-google-services, jika Anda tidak memilikinya di package.json kesalahannya bisa dengan plugin lain, jika demikian silakan tambahkan package.json sehingga kita bisa mengetahui mana yang merupakan masalah.


PEMBARUAN 24 / OKT:

Saya telah mengubah solusi di repo saya seperti yang disarankan oleh banyak dari Anda, sekarang solusinya hanya dalam memperbaiki ketergantungan: dari: com.android.tools.build:gradle:+ ke classpath com.android.tools.build:gradle: 3. + , ini sudah ada di repo saya jika Anda ingin melihat apa yang berubah

Luis Gonzalez
sumber
Berapa lama biasanya bagi seseorang untuk menyetujui sesuatu pada repo itu?
AndySousa
7

dalam proyek saya, saya memperbaiki seperti ini. (proyek saya di 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' }
   }
}
Yang Mulia
sumber
6

Solusi untuk ionic v3 dan cordova

Solusi @Mister Smith memecahkan masalah saya

Anda harus pergi ke file

platforms/android/cordova-support-google-services

kemudian

Menggantikan

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

oleh

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

@Alternatif solusi yang saya temukan adalah untuk

setup kotlin in your system :)
Sayed Mohd Ali
sumber
Berhasil. Terima kasih. Saya pikir kita dapat mengatur versi yang sama dengan versi dari file build.gradle
Nguyen Tran
1
@NguyenTran Saya pikir pengaturan Kotlin di sistem Anda dengan studio android adalah solusi paling canggih dan terbaik jika Anda ingin menggunakan Gradle terbaru, jika tidak, tetap gunakan gradle versi lama yang didukung oleh proyek Anda. atau cari dukungan gradle terbaik untuk ionic v3.
Sayed Mohd Ali
5

Sebagai perbaikan sementara lebih lanjut untuk menindaklanjuti saran dari @MisterSmith, gunakan kail untuk menerapkan kembali kunci:

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

dengan kode bash yang terlalu bertele-tele ini:

#!/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
sumber
1
Bekerja untuk saya setelah berubah app-build.gradlemenjadi %MY_APP_NAME%-build.gradle. Terima kasih!
Alexander Zinchuk
3

Saya harus menambahkan maven { url 'https://dl.bintray.com/kotlin/kotlin-eap' }keduanya ke tingkat atas build.gradledan ke dalamapp modul build.gradle. Dalam kedua kasus baik ke dalam buildscripts.repositoriesdan dalamallprojects.repositories

Alexander Kulyakhtin
sumber
2

Tak satu pun dari yang di atas bekerja untuk saya. Saya akhirnya menghapus plugin google-services dan menambahkannya.

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

Man Called Haney
sumber
Ini adalah satu-satunya jawaban yang benar-benar menyelesaikan masalah. Menghapus dan menambahkan plugin mengoreksi semua yang harus diperbaiki pada file build.gradle.
Felipe Ferri