오류 : Ionic 3에서 org.jetbrains.kotlin : kotlin-stdlib-jdk8 : 1.3.60-eap-25를 찾을 수 없습니다


81

Android 용 Ionic 3 앱을 빌드하는 중에 갑자기 다음과 같은 오류가 발생합니다.

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' }
    }
}

내 Cordova를 업데이트하고 위의 솔루션을 추가 한 후 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

아니요. 방금 maven URL을 변경했습니다.
Tapas Mukherjee

그렇다면 build.gradle 파일이 게시 한 파일이 아닌 경우 실제로 어떻게 생겼습니까? 오류 메시지가있는 저장소를 삭제했다는 메시지가 표시됩니다 gradle:3.0.1.
ianhanniballake

설명을 확인하십시오. build.gradle 코드를 추가했습니다. 방금 URL을 바꿨습니다.
Tapas Mukherjee

기존 줄을 바꾸지 않고 새 줄만 추가 해야합니다 . 어떤 라인을 대체 했습니까?
ianhanniballake

답변:


75

문제는 cordova-support-google-servicesCordova 의 플러그인에 있습니다.

이 플러그인 build.gradle은 오늘 (2019 년 10 월 24 일) 다음과 같습니다.

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

그러나 이것은 확실한 해결책이 아닙니다. Cordova를 통해 Android 플랫폼을 다시 설치하면 오류가 다시 나타납니다. 프로젝트 관리자는 의존성을 멈추거나 gradle 4.0.0을 지원하도록 수정해야합니다. 그동안이 플러그인의 고정 포크를 사용하십시오.


우리가 임시 해결책에 대해 이야기 할 때, 이것은 저에게 가장 빠르고 설명적인 해결책입니다. 감사합니다
Tapas Mukherjee

그래도 질문이 있습니다. 내 앱이 이미 빌드되어 있고 휴대 전화에 설치된 경우 종속성에서 '+'를 사용하면 앱이 중단 될 수 있습니까? 앱에는 많은 종속성이 있으며 모든 버전을 유지 관리하기가 어렵습니다.
Tapas Mukherjee

1
Phonegap Build를 사용하여 앱을 컴파일합니다. 플러그인 'cordova-support-google-services'를 포함하지 않았지만 동일한 오류가 발생합니다. 어떤 제안? 특히, config.xml 파일에서이 문제를 어떻게 해결할 수 있습니까?
peterk

1
폰갭 빌드 여기 수정을 @peterk 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'

그런 다음 성공적으로 구축되었습니다.


따라서, 플랫폼 / 안드로이드 / 응용 프로그램 / build.gradle에서 doLast로 변경 <<에 한에 stackoverflow.com/a/55793096/2393822
umadesign

2
@JimBergman 나는 공식 안드로이드 스튜디오 웹 사이트에서 코 틀린 URL을 가지고 : 참조 androidstudio.googleblog.com/2019/10/...
DanielRead

1
스크롤이라는 제목의 섹션으로 "코 틀린 메이븐을 누락 알려진 문제 REPO"
DanielRead

@DanielRead 감사합니다. 여전히 bintray.com에서 파일을 참조하는 것이 문제를 해결하는 방법이라고 생각하지 않습니다. 위의 Mister Smith의 솔루션이 훨씬 좋습니다.
Jim Bergman

1
플러그인을 업데이트하려면 다음을 실행하십시오. cordova plugin rm cordova-support-google-services --force && cordova plugin add cordova-support-google-services
Klemens Zleptnig

29

해결책은 다음과 같습니다.

문제는 정확히 maven 저장소 ( here ) 였지만 문제는 cordova-support-google-services 플러그인 의 build.gradle 관련 문제 이므로 필요한 줄을 추가하고 모든 것이 정상입니다. 이미 풀을 만들었습니다. 원래 리포지토리에 요청 하십시오 ( here ). 그러나 그 동안 내가 한 일을 할 수 있습니다. 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-servicespackage.json에없는 경우 일부 플러그인이 필요합니다 . 다른 플러그인에 오류가있을 수 있으므로 package.json을 추가하십시오. 문제.


24 / OCT 업데이트 :

에서 : 난 그냥 종속성 고정, 당신의 많은으로 내 REPO 이제 솔루션 consinst을 제안 된 해결 방법 변경했습니다 com.android.tools.build:gradle:+ 클래스 경로에 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 최신 Gradle을 사용하려면 Android 스튜디오를 사용하여 시스템에서 Kotlin을 설정하는 것이 가장 진보되고 최상의 솔루션이라고 생각합니다. 그렇지 않으면 프로젝트에서 지원하는 이전 버전 gradle을 고수하십시오. 또는 ionic v3에 대한 최상의 gradle 지원을 찾으십시오.
Mohd Ali라고

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. 감사!
Alexander Zinchuk

3

maven { url 'https://dl.bintray.com/kotlin/kotlin-eap' }최상위 build.gradleapp모듈 모두에 추가해야했습니다 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.