これは重大な問題です。
こんにちは、同じFirebaseアップデートが原因で他のエラーが発生しました。 私がタイプするとき:
cordova build android
コンソールで、次の出力が表示されます。
ビルドに失敗しました
合計時間:4.529秒
失敗:ビルドは例外で失敗しました。
私はウェブを通じて答えを探していましたが、見つけた解決策( solution1 、 solution2 、 solution3 )はうまくいきません。
このエラーは、 Playサービスのアップデートが原因のようです。 このプラグインを削除するまで、Androidアプリをビルドできません。
この重大な問題が解決され、プラグインを再度インストールできることを願っています。
これには一時的な修正があり、サービスとFirebaseのバージョンを11.8.0に強制します。
方法:
これを中に入れて
<hook src="fixFirebasePlugin.js" type="before_build" />
プロジェクトルートにJSファイルを作成します。
module.exports = function(context) {
var fs = require('fs');
var path = require('path');
var rootdir = context.opts.projectRoot;
var platformDir = 'platforms/android';
//change the path to your external gradle file
var srcFile = path.join(rootdir, 'src/android/build-extras.gradle');
var destFile = path.join(rootdir, platformDir, 'build-extras.gradle');
console.log("copying "+srcFile+" to "+destFile);
fs.createReadStream(srcFile).pipe(fs.createWriteStream(destFile));
}
srcフォルダー内にandroidfodlerを作成し、その中に次の内容のbuild-extras.gradleというファイルを作成します。
configurations.all {
resolutionStrategy {
force "com.google.android.gms:play-services-ads:11.8.0"
force "com.google.android.gms:play-services-base:11.8.0"
force "com.google.android.gms:play-services-gcm:11.8.0"
force "com.google.android.gms:play-services-analytics:11.8.0"
force "com.google.android.gms:play-services-location:11.8.0"
force "com.google.android.gms:play-services-basement:11.8.0"
force "com.google.android.gms:play-services-tagmanager:11.8.0"
force 'com.google.firebase:firebase-core:11.8.0'
force 'com.google.firebase:firebase-crash:11.8.0'
force 'com.google.firebase:firebase-auth:11.8.0'
force 'com.google.firebase:firebase-common:11.8.0'
force 'com.google.firebase:firebase-config:11.8.0'
force 'com.google.firebase:firebase-messaging:11.8.0'
}
}
プラットフォームを削除して再追加し(6.3.0でテスト済み)、cordovaビルドandroidを実行すると、修正されます。
その後、run / build --prod、好きなように。
@tryadelion 、私はあなたが言ったとおりにあなたの解決策を試しましたが、コンソールで同じエラーが発生しました:(
プラットフォームを削除し、android @ 6.3.0として再読み込みし、「〜:cordova build android」を実行しましたか?製品も実行もイオンもありませんか? それが私にとってのトリックでした!
はい、すべて(config.xml、fixFirebasePlugin.js、build-extras.gradle、platform [email protected])を実行しましたが、実行するすべての実行コマンドまたはビルドコマンドは同じ出力を生成します。
私のプロジェクトはイオン的なものではありません。これがこの問題にとって重要であるかどうかはわかりません。
これに対する以前の「ホットフィックス」を試しましたか? プラグインのXMLのバージョンを手動で変更するようなものですか? 私はそれのファイルを台無しにしたので、私はそれを削除して読む必要がありました。 これまでに3つの異なるプロジェクトで機能してきましたが、すべてイオン性ですが、フックシステムはコルドバを動力源とするものと同じです。
その前は、/ platforms / android / project.propertiesと/platforms/android/build.gradleのみを変更しましたが、その後、プラグイン(最初)とプラットフォーム[email protected]を削除して再度追加しました
失敗の原因が何であるかはわかりませんが、コンソールに次のように表示されるため、プロジェクトにはまだ12.0と11.8.0の両方のバージョンがあると思います。
12.0.0バージョンをどこに指定できるかわかりません。
node-modulesを削除し、platforms / androidを削除し、すべてのサービスを削除します-/ plugins、NPM iのプラグインを使用して、削除したすべてのプラグインを読み取り、プラットフォームandroidを追加して、再試行します。 それが私がすることです。
わかりました、私は持っているすべてのコンポーネントを再インストールしようとします。 手伝ってくれてありがとうございます!!
@tryadelion共有していただきありがとうございます。 私はcordova-plugin-firebaseとforceバージョンをフォークしようとしていました。 とにかく、私はあなたのソリューションを実装しました。
同様に機能している[email protected]を使用しています。
最後に、ファイル/platforms/android/build.gradleを次のように変更する問題を解決します。
allprojects {
repositories {
// Temp fix for com.google.android.gms.license
// Added from here
configurations.all {
resolutionStrategy {
// Put your gms packages here with 11.8.0 attached
force "com.google.android.gms:play-services-analytics:11.8.0"
force "com.google.android.gms:play-services-auth:11.8.0"
force "com.google.android.gms:play-services-gcm:11.8.0"
force "com.google.android.gms:play-services-location:11.8.0"
}
}
// until here
jcenter()
maven {
url "https://maven.google.com"
}
}
}
(https://github.com/facebook/react-native/issues/18479から読んだソリューション)
再度、感謝します!
Ionic v1.1.0
とcordova-plugin-firebase v0.1.25
このフックで問題が解決しました。
//before_build/010_add_gradle_extras.js
#!/usr/bin/env node
var fs = require('fs');
var path = require('path');
var rootdir = process.argv[2];
var platformDir = 'platforms/android';
var srcfile = path.join(rootdir, 'build-extras.gradle');
var destfile = path.join(rootdir, platformDir, 'build-extras.gradle');
var destdir = path.dirname(destfile);
if (fs.existsSync(srcfile) && fs.existsSync(destdir)) {
fs.createReadStream(srcfile).pipe(fs.createWriteStream(destfile));
process.stdout.write('Hook: build-extras.gradle added');
}
//build-extras.gradle
configurations.all {
resolutionStrategy {
force "com.google.android.gms:play-services-ads:11.8.0"
force "com.google.android.gms:play-services-base:11.8.0"
force "com.google.android.gms:play-services-gcm:11.8.0"
force "com.google.android.gms:play-services-analytics:11.8.0"
force "com.google.android.gms:play-services-location:11.8.0"
force "com.google.android.gms:play-services-basement:11.8.0"
force "com.google.android.gms:play-services-tagmanager:11.8.0"
force 'com.google.firebase:firebase-core:11.8.0'
force 'com.google.firebase:firebase-crash:11.8.0'
force 'com.google.firebase:firebase-auth:11.8.0'
force 'com.google.firebase:firebase-common:11.8.0'
force 'com.google.firebase:firebase-config:11.8.0'
force 'com.google.firebase:firebase-messaging:11.8.0'
}
}
新しいAndroidプラットフォームの削除と追加も重要な要素でした。
@tryadelion 、あなたのアプローチを試したときになぜこのエラーが発生するのか考えてみてください。
A problem occurred configuring root project 'android'.
> Could not resolve all dependencies for configuration ':_debugApkCopy'.
> Could not find com.google.gms:google-services:11.8.0.
Required by:
project :
joteferが言ったことを実行すると、ビルドが機能します。 ただし、リモート構成が機能しなくなりました。 何か案が?
フェッチが機能しないという問題に飛び込むと、フェッチを呼び出すときにスローされる次の例外が原因であることがわかりました。
原因:java.lang.ClassNotFoundException:パスにクラス「android.support.v4.util.ArraySet」が見つかりませんでした:DexPathList
何か案が?
@remisture別のgradleファイルがまだ12.Xを参照しているときにこの問題が発生しました。ビルドクリーニングを試してください。
platforms/android/build.gradle
更新して解決しました
前
allprojects {
repositories {
jcenter()
maven {
url "https://maven.google.com"
}
}
}
後:
allprojects {
repositories {
//start here
configurations.all {
resolutionStrategy.eachDependency { DependencyResolveDetails details ->
def requested = details.requested
if (requested.group == 'com.google.android.gms') {
details.useVersion '11.8.0'
}
if (requested.group == 'com.google.firebase') {
details.useVersion '11.8.0'
}
}
}
//end
jcenter()
maven {
url "https://maven.google.com"
}
}
}
[email protected]でテスト済み
以下は私のbuild.gradle全体です。 また、すべてのプロジェクトのコンパイルSDKを変更するための便利なビットが最後にあります
buildscript {
repositories {
jcenter()
google()
mavenLocal()
}
dependencies {
classpath 'com.android.tools.build:gradle:3.0.1'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
allprojects {
repositories {
configurations.all {
resolutionStrategy.eachDependency { DependencyResolveDetails details ->
def requested = details.requested
if (requested.group == 'com.google.android.gms') {
details.useVersion '12.0.1'
}
}
}
mavenLocal()
jcenter()
maven {
url "https://jitpack.io"
}
maven {
url 'https://maven.google.com'
}
maven {
// All of React Native (JS, Obj-C sources, Android binaries) is installed from npm
url "$rootDir/../node_modules/react-native/android"
}
}
}
subprojects {
afterEvaluate {project ->
if (project.hasProperty("android")) {
android {
compileSdkVersion 26
buildToolsVersion '26.0.2'
}
}
}
}
これは、 cordova-android-play-services-gradle-releaseをインストールすることで修正されたようです
おかげで動作する@ soumak77
最も参考になるコメント
platforms/android/build.gradle
更新して解決しました前
後:
[email protected]でテスト済み