Lỗi: Không thể tìm thấy org.jetbrains.kotlin: kotlin-stdlib-jdk8: 1.3.60-eap-25 trong Ionic 3


81

Tôi đang gặp lỗi sau đây đột ngột khi xây dựng ứng dụng Ionic 3 cho Android.

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

Chúng tôi có một giải pháp từ Android Studio ở đây nhưng sau khi tôi thay đổi bản dựng. Nâng cấp với mã sau đây tôi vẫn nhận được lỗi.

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

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

Tệp build.gradle của tôi trông như thế này sau khi tôi cập nhật Cordova và thêm giải pháp trên.

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
}

Vẫn cùng một lỗi.


Bạn đã thực sự đưa vào ...và xóa các kho lưu trữ khác đã có ở đó?
ianhanniballake

Không. Tôi chỉ thay đổi url maven.
Tapas Mukherjee

Vì vậy, tập tin build.gradle của bạn thực sự trông như thế nào nếu nó không phải là những gì bạn đã đăng? Bởi vì thông báo lỗi của bạn nói rằng bạn đã xóa kho lưu trữ gradle:3.0.1nằm ở đâu.
ianhanniballake

Vui lòng kiểm tra mô tả. Tôi đã thêm mã build.gradle của mình. Tôi chỉ thay thế url.
Tapas Mukherjee

Bạn chỉ nên thêm các dòng mới, không thay thế bất kỳ dòng hiện có. Bạn đã thay thế dòng nào?
ianhanniballake

Câu trả lời:


75

Vấn đề nằm ở cordova-support-google-servicesplugin cho Cordova.

Plugin này build.gradletrông giống như ngày hôm nay (24 tháng 10 năm 2019):

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

Chính xác hơn vấn đề nằm ở sự phụ thuộc này:

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

Đó là một cách cực kỳ dễ vỡ để chỉ định phụ thuộc. Dấu '+' ở đây có nghĩa là "tìm nạp phiên bản mới nhất có sẵn trong repo". Nếu một phiên bản mới hơn được xuất bản trong repo và nó phá vỡ bản dựng, thì tất cả mọi người với plugin này đều bị hỏng dự án của họ. Điều này đã xảy ra ngày hôm nay. Phiên bản bị hỏng đang được tìm nạp là com.android.tools.build:gradle:4.0.0. Nó đòi hỏi một số công cụ Kotlin.

Đó là lý do tại sao bạn cần LUÔN đóng băng các phụ thuộc để xây dựng dự án của mình một cách đáng tin cậy. Không bao giờ tin tưởng những thứ mới hơn. Sự phụ thuộc này biên dịch tốt như nó đã làm ngày hôm qua:

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

Đối với những người sử dụng Cordova hoặc Ionic, bạn có thể khắc phục nhanh để có thể xây dựng dự án bằng cách đóng băng sự phụ thuộc trong tệp:

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

Đây không phải là một giải pháp dứt khoát mặc dù. Nếu bạn cài đặt lại nền tảng Android qua Cordova, lỗi sẽ xuất hiện lại. Người bảo trì dự án nên đóng băng sự phụ thuộc hoặc sửa nó để hỗ trợ lớp 4.0.0. Trong khi chờ đợi, chỉ cần sử dụng một ngã ba cố định của plugin này.


Như chúng ta đang nói về một giải pháp tạm thời, đây là giải pháp nhanh nhất và giải thích cho tôi. Cảm ơn
Tapas Mukherjee

Tôi có một câu hỏi mặc dù. Nếu ứng dụng của tôi đã được xây dựng và nó được cài đặt trong điện thoại, có thể sử dụng '+' trong phần phụ thuộc của ứng dụng không? Có rất nhiều phụ thuộc trong một ứng dụng và rất khó để duy trì phiên bản của tất cả chúng.
Tapas Mukherjee

1
Tôi biên dịch ứng dụng của mình bằng Phonegap Build; Tôi cũng gặp lỗi tương tự, mặc dù tôi không bao gồm plugin 'cordova-support-google-services'. Bất kỳ đề xuất? Cụ thể, làm cách nào tôi có thể sửa lỗi này trong tệp config.xml của mình?
peterk

1
@peterk đây là bản sửa lỗi cho cộng đồng
phonegap.adobe.com/t5/PhoneGap/,

3
Plugin cordova-support-google-services đã phát hành phiên bản mới ^ 1.3.2, trong đó anh ta đóng băng các phụ thuộc khắc phục sự cố. Các câu trả lời nên được cập nhật để phản ánh điều này.
le0diaz

30

EDIT 10/11/19:

cordova-support-google-services đã được cập nhật hôm nay lên phiên bản 1.3.2, thay đổi đường dẫn lớp từ classpath 'com.android.tools.build:gradle:+'

đến

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

có vẻ như đã sửa lỗi kotlin

Câu trả lời gốc

Tôi có của tôi để xây dựng thành công bằng cách làm như sau:

Tôi đã chỉnh sửa nền tảng-> android-> cordova-support-google-services-> myAppName-build.gradle

và thay đổi

maventCentral()

đến

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

Điều đó đã giải quyết lỗi kotlin sau đó tôi đã nhận được một lỗi khác mà tôi đã khắc phục bằng cách thay đổi

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

đến

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

Sau đó, nó được xây dựng thành công.


đã phải thay đổi << thành doLast trong nền tảng / android / app / build.gradle, theo stackoverflow.com/a/55793096/2393822
umadesign

2
@JimBergman Tôi đã nhận được URL kotlin từ trang web chính thức của Android Studio: tham khảo androidstudio.googleblog.com/2019/10/ chủ
DanielRead

1
Cuộn xuống phần có tiêu đề "Vấn đề đã biết khi thiếu repo Kotlin Maven"
DanielRead

@DanielRead cảm ơn tôi thấy điều đó bây giờ. Vẫn không nghĩ rằng các tệp tham chiếu trong bintray.com là cách giải quyết vấn đề. Giải pháp của Mister Smith ở trên tốt hơn nhiều.
Jim Bergman

1
Để cập nhật plugin, hãy chạy: cordova plugin rm cordova-support-google-services --force && cordova plugin add cordova-support-google-services
Klemens Zleptnig

29

Đây là giải pháp.

Vấn đề chính xác là kho lưu trữ maven ( ở đây ), nhưng vấn đề là do build.gradle từ plugin cordova-support-google-services , vì vậy tôi đã thêm dòng yêu cầu và mọi thứ đều ổn, tôi đã tạo ra một pull yêu cầu repo gốc ( ở đây ). Nhưng trong thời gian chờ đợi, bạn có thể làm những gì tôi đã làm, chỉ cần thay thế trong gói.json phiên bản hiện tại bằng repo của tôi:

Trước:

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

Sau:

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

sau đó bạn sẽ phải:

  • Xóa các nền tảng thư mục và plugin
  • chạy npm install

Đây là một giải pháp tạm thời trong khi yêu cầu kéo tới repo chính được chấp nhận và gói npm được cập nhật

và đó là nó, bây giờ bạn có thể xây dựng lại dự án của bạn.


Tôi đang sử dụng Ionic 4 và một số plugin yêu cầu cordova-support-google-services, trong trường hợp bạn không có nó trong gói.json thì lỗi có thể xảy ra với một plugin khác, nếu vậy, vui lòng thêm gói.json để chúng tôi có thể tìm ra cái nào là vấn đề.


CẬP NHẬT 24 / THÁNG 10:

Tôi đã thay đổi giải pháp trong repo của mình như nhiều bạn đề xuất, bây giờ giải pháp chỉ là sửa lỗi phụ thuộc: từ: com.android.tools.build:gradle:+ thành classpath com.android.tools.build:gradle: 3. + , cái này đã có trong repo của tôi nếu bạn muốn xem những gì đã thay đổi


Mất bao lâu để ai đó chấp thuận một cái gì đó trên repo đó?
AndySousa

7

trong dự án của tôi, tôi sửa như thế này. (dự án của tôi ở 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

Giải pháp cho ion v3 và cordova

Giải pháp @Mister Smith đã giải quyết vấn đề của tôi

bạn phải đi đến tập tin

platforms/android/cordova-support-google-services

sau đó

Thay thế

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

bởi

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

@ Giải pháp bên ngoài tôi đã tìm thấy là

setup kotlin in your system :)

Nó hoạt động. Cảm ơn bạn. Tôi nghĩ rằng chúng ta có thể đặt phiên bản giống với phiên bản từ tệp build.gradle
Nguyễn Trần

1
@NguyenTran Tôi nghĩ rằng thiết lập Kotlin trong hệ thống của bạn với studio android là giải pháp tiên tiến nhất và tốt nhất nếu bạn muốn sử dụng Gradle mới nhất, nếu không, hãy sử dụng lớp phiên bản cũ hơn được hỗ trợ bởi dự án của bạn. hoặc tìm kiếm sự hỗ trợ lớp tốt nhất cho ion v3.
Nói Mohd Ali

5

Là cách khắc phục tạm thời để theo dõi đề xuất từ @MisterSmith, hãy sử dụng móc để áp dụng lại khóa:

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

với mã bash quá dài này:

#!/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
Làm việc cho tôi sau khi thay đổi app-build.gradleđể %MY_APP_NAME%-build.gradle. Cảm ơn!
Alexander Zinchuk

3

Tôi đã phải thêm maven { url 'https://dl.bintray.com/kotlin/kotlin-eap' }cả hai vào cấp cao nhất build.gradlevà vào appmô-đun build.gradle. Trong cả hai trường hợp cả vào buildscripts.repositoriesvà trongallprojects.repositories


2

Không ai ở trên làm việc cho tôi. Tôi đã kết thúc việc gỡ bỏ các plugin dịch vụ google và thêm nó.

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


Đây là câu trả lời duy nhất thực sự giải quyết vấn đề. Xóa và thêm plugin sẽ sửa mọi thứ cần được sửa trong tệp build.gradle.
Felipe Ferri
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.