エラー: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のソリューションが1つありますが、次のコードで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を変更しました。
タパスムカジー

では、build.gradleファイルが実際に投稿したものと異なる場合、実際にはどのように見えますか?エラーメッセージは、gradle:3.0.1が置かれているリポジトリを削除したことを示しているためです。
ianhanniballake

説明をご確認ください。build.gradleコードを追加しました。URLを置き換えたところです。
タパスムカジー

新しい行を追加するだけで、既存の行は置き換えないでください。どの行を置き換えましたか?
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

でも質問があります。アプリが既にビルドされており、電話にインストールされている場合、依存関係の「+」を使用してアプリをブレイクできますか?アプリには多くの依存関係があり、それらすべてのバージョンを維持することは困難です。
タパスムカージー

1
Phonegap Buildを使用してアプリをコンパイルします。プラグイン「cordova-support-google-services」を含めていませんが、同じエラーが発生します。助言がありますか?特に、config.xmlファイルでこれをどのように修正できますか?
peterk '26 / 10/26

1
@peterkはここでphonegapビルドの修正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エラーを修正するようです

元の回答

私は次のようにしてうまくビルドすることができました:

私はplatforms-> 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'

その後、正常にビルドされました。



2
参照:@JimBergman私は、公式のAndroid StudioのWebサイトからkotlin URLまし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
クレメンスZleptnig

29

これが解決策です。

問題はまさにmavenリポジトリ(ここ)でしたが、問題はcordova-support-google-servicesプラグインのbuild.gradle にあったため、必要な行を追加しましたが、すべて正常になりました。すでにプルを作成しました。元のリポジトリへのリクエスト(こちら)。しかし、その間、あなたは私がしたことを行うことができます、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ていますが、package.jsonに含まれていない場合は、一部のプラグインでが必要です。別のプラグインでエラーが発生している可能性があります。その場合は、package.jsonを追加して、どれが問題。


10月24日更新:

私はあなたの多くが提案したように私のリポジトリのソリューションを変更しました、今のソリューションは依存関係を修正するだけで一貫しています:から: 一貫してい com.android.tools.build gradle + to 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

Ionic v3とCordovaのソリューション

@ミスター・スミスのソリューションで問題が解決しました

ファイルに移動する必要があります

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 Studioを使用してシステムにKotlinを設定することが最も高度で最良の解決策だと思います。それ以外の場合は、プロジェクトでサポートされている古いバージョンのGradleを使用してください。または、Ionic v3に最適なGradleサポートを探します。
Sayed 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.repositoriesallprojects.repositories


2

上記のどれも私にとってはうまくいきませんでした。google-servicesプラグインを削除して追加しました。

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


これが実際に問題を解決した唯一の答えです。プラグインを削除して追加すると、build.gradleファイルで修正する必要があるすべてが修正されます。
フェリペフェリ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.