ข้อผิดพลาด: ไม่พบ 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
Tapas Mukherjee

ดังนั้นไฟล์ build.gradle ของคุณจะมีลักษณะอย่างไรถ้าไม่ใช่สิ่งที่คุณโพสต์ เนื่องจากข้อความแสดงข้อผิดพลาดของคุณกำลังบอกว่าคุณลบที่เก็บซึ่งgradle:3.0.1ตั้งอยู่
ianhanniballake

กรุณาตรวจสอบรายละเอียด ฉันได้เพิ่มรหัส build.gradle ของฉัน ฉันเพิ่งเปลี่ยน URL
Tapas Mukherjee

คุณควรเพิ่มบรรทัดใหม่เท่านั้นไม่ควรแทนที่บรรทัดที่มีอยู่ คุณเปลี่ยนสายอะไร
ianhanniballake

คำตอบ:


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:+'

นั่นเป็นวิธีที่เปราะบางที่สุดในการระบุการพึ่งพา เครื่องหมาย '+' ที่นี่หมายถึง "ดึงข้อมูลเวอร์ชันล่าสุดที่มีอยู่ใน repo" หากมีการเผยแพร่เวอร์ชันที่ใหม่กว่าใน repo และทำลายการสร้างแล้วทุกคนที่มีปลั๊กอินนี้จะมีโปรเจ็กต์ของพวกเขาขาด สิ่งนี้เกิดขึ้นวันนี้ 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 ในระหว่างนี้เพียงใช้ส้อมที่คงที่ของปลั๊กอินนี้


ขณะที่เรากำลังพูดถึงวิธีแก้ปัญหาชั่วคราวนี่เป็นวิธีแก้ปัญหาที่เร็วและอธิบายสำหรับฉัน ขอบคุณ
Tapas Mukherjee

ฉันมีคำถามว่า หากแอพของฉันสร้างขึ้นมาแล้วและติดตั้งในโทรศัพท์สามารถใช้ '+' ในการพึ่งพาแอพที่แตกต่างกันได้หรือไม่? มีแอพพลิเคชั่นมากมายที่ต้องพึ่งพาและมันยากที่จะรักษาเวอร์ชันของแอพทั้งหมด
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

แก้ไข 10/28/19:

Cordova-support-google-services ได้รับการอัปเดตในวันนี้เป็นเวอร์ชั่น 1.3.2 ซึ่งเปลี่ยน classpath จาก 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'

มันสร้างเสร็จเรียบร้อยแล้ว


ต้องเปลี่ยน << เป็น do Last ในแพลตฟอร์ม / android / app / build.gradle ตามstackoverflow.com/a/55793096/2393822
umadesign

2
@JimBergman ฉันได้รับ URL kotlin จากเว็บไซต์ Android Studio อย่างเป็นทางการ: อ้างอิงandroidstudio.googleblog.com/2019/10//
DanielRead

1
เลื่อนลงไปที่ส่วนชื่อ "ปัญหาที่เป็นที่ทราบสำหรับ Missing Kotlin Maven repo"
DanielRead

@DanielRead ขอบคุณฉันเห็นว่าตอนนี้ ยังไม่คิดว่าไฟล์อ้างอิงใน bintray.com เป็นวิธีการแก้ปัญหา วิธีแก้ปัญหาของ Mister Smith ดีกว่ามาก
จิมเบิร์กแมน

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ดังนั้นฉันจึงเพิ่มบรรทัดที่ต้องการและทุกอย่างก็โอเคตอนนี้ฉันได้สร้างการดึงขึ้นมาแล้ว คำขอไปยัง repo ดั้งเดิม ( ที่นี่ ) แต่ในขณะเดียวกันคุณสามารถทำสิ่งที่ฉันทำเพียงแค่แทนที่package.jsonเวอร์ชั่นปัจจุบันด้วย repo ของฉัน:

ก่อน:

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

หลังจาก:

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

หลังจากนั้นคุณจะต้อง:

  • ลบแพลตฟอร์มและปลั๊กอินของโฟลเดอร์
  • วิ่ง npm install

นี่เป็นวิธีแก้ปัญหาชั่วคราวในขณะที่คำขอดึงข้อมูลไปยัง repo หลักได้รับการยอมรับและปรับปรุงแพคเกจ npm

และนั่นคือตอนนี้คุณสามารถสร้างโครงการของคุณอีกครั้ง


ฉันใช้ไอออนิก 4 และจำเป็นต้องใช้ปลั๊กอินบางอย่างcordova-support-google-servicesในกรณีที่คุณไม่มีใน package.json ข้อผิดพลาดอาจเป็นกับปลั๊กอินอื่นถ้าเป็นเช่นนั้นโปรดเพิ่ม package.json เพื่อที่เราจะได้รู้ว่าอันไหนเป็น ปัญหา.


อัปเดต 24 / ต.ค. :

ฉันได้เปลี่ยนวิธีแก้ปัญหาใน repo ของฉันเป็นจำนวนมากที่คุณแนะนำตอนนี้วิธีแก้ไขปัญหาในการแก้ไขการอ้างอิง: จาก: com.android.tools.build:gradle:+เป็น classpath com.android.tools.build:gradle: 3. +นี่มีอยู่แล้วใน repo ของฉันถ้าคุณต้องการดูว่ามีอะไรเปลี่ยนแปลง


ใช้เวลานานแค่ไหนสำหรับคนที่จะอนุมัติบางสิ่งบางอย่างใน repo นั้น
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

วิธีแก้ปัญหาสำหรับ 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 :)

มันได้ผล. ขอบคุณ. ฉันคิดว่าเราสามารถตั้งค่ารุ่นเดียวกันกับรุ่นจากไฟล์ build.gradle
เหงียน Tran

1
@ NguyenTran ฉันคิดว่าการติดตั้ง Kotlin ในระบบของคุณด้วย android studio เป็นทางออกที่ดีที่สุดและดีที่สุดหากคุณต้องการใช้ Gradle ล่าสุดไม่เช่นนั้นให้ยึดตาม gradle เวอร์ชั่นเก่าที่โครงการของคุณสนับสนุน หรือมองหาการสนับสนุน gradle ที่ดีที่สุดสำหรับ ionic v3
Sayed Mohd Ali

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ขอบคุณ!
Alexander Zinchuk

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
Felipe Ferri
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.