Ionic Android用の3つのアプリをビルドしているときに、次のエラーが突然表示されます。
Could not find org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.3.60-eap-25
Android Studio here )からの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
}
まだ同じエラー。
問題は cordova-support-google-services
Cordovaのプラグイン。
このプラグインの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
ただし、これは決定的な解決策ではありません。 AndroidプラットフォームをCordova経由で再インストールすると、エラーが再び表示されます。プロジェクトのメンテナーは、依存関係をフリーズするか、gradle 4.0.0をサポートするように修正する必要があります。当面は、固定フォークを使用してください。このプラグインの。
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'
_
その後、正常にビルドされました。
これが解決策です。
問題はまさにmavenリポジトリ( ここ )でしたが、問題はcordova-support-googleのbuild.gradleにありました-servicesプラグインなので、必要な行を追加し、すべて問題なく動作しました。元のリポジトリへのプルリクエストを作成しました( こちら =)。しかし、その間、私がしたことを行うことができます。現在のバージョンを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を追加して、どのプラグインが問題であるかを確認してください。
UPDATE 24/OCT:
私はあなたの多くが提案したように私のリポジトリのソリューションを変更しました、今のソリューションは依存関係を修正するだけで一貫しています:from:com.Android.tools.build:gradle:+からクラスパスcom.Android.tools.build:gradle:3.+へ、これは私のリポジトリに既にあります参照 変更内容
私のプロジェクトでは、このように修正します(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' }
}
}
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 :)
@MisterSmithの suggestion のフォローアップに対する一時的な修正として、フックを使用してロックを再適用します。
<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
追加しなければならなかったmaven { url 'https://dl.bintray.com/kotlin/kotlin-eap' }
両方をトップレベルにbuild.gradle
とapp
モジュールbuild.gradle
。どちらの場合も、buildscripts.repositories
およびallprojects.repositories
上記のどれも私にとってはうまくいきませんでした。 google-servicesプラグインを削除して追加しました。
cordova plugin rm cordova-support-google-services cordova plugin add cordova-support-google-services