Cordova-plugin-firebase: 自 3 月 20 日 firebase 更新以来出现错误。 你会设置firebase sdk版本吗?

创建于 2018-03-22  ·  21评论  ·  资料来源: arnesson/cordova-plugin-firebase

自: https :

错误

AndroidRuntime:java.lang.NoSuchMethodError:没有静态方法zza(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; 在类 Lcom/google/android/gms/common/internal/zzbq; 或其超类('com.google.android.gms.common.internal.zzbq'的声明

最有用的评论

我通过更新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]测试

所有21条评论

这是一个关键问题。

嗨,由于相同的 firebase 更新,我还有其他错误。 当我输入:

cordova build android

在控制台中,我得到以下输出:

构建失败

总时间:4.529 秒
FAILURE:构建失败,出现异常。

  • 什么地方出了错:
    任务“:processDebugResources”执行失败。
    >错误:包名称为“com.google.android.gms.license”的库不止一个`

我一直在通过网络寻找答案,但我找到的解决方案解决方案 1解决方案 2解决方案 3对我不起作用

该错误似乎是由于Play Services 更新造成的。 在删除此插件之前,我无法构建我的 android 应用程序。

我希望这个关键问题可以解决重新安装插件。

对此有一个临时修复,将服务和 Firebase 版本强制为 11.8.0。

如何:
把这个放在里面带有内容的 config.xml 标签:

<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 文件夹中创建一个 android fodler 并在其中创建一个名为 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 build android,并且已修复。

之后,运行/构建 --prod,无论你想要什么。

@tryadelion ,我已经完全按照你提到的方式尝试了你的解决方案,但我在控制台中遇到了同样的错误:(

您是否删除了平台,读取为[email protected]并执行了“~:cordova build android”,没有 prod,没有 run,没有 ionic? 这就是我的诀窍!

是的,我做了所有事情(config.xml、fixFirebasePlugin.js、build-extras.gradle、平台 [email protected]),但是我执行的每个运行或构建命令都会产生相同的输出:

firebase-build-failed

我的项目不是离子项目,我不知道这对这个问题是否重要。

您是否尝试过任何先前的“修补程序”? 喜欢手动更改插件 XML 上的版本? 我不得不删除并阅读它,因为我弄乱了它的文件。 到目前为止,它已经在 3 个不同的项目上工作,虽然都是离子,但钩子系统与它的cordova 驱动相同。

在此之前,我只更改了 /platforms/android/project.properties 和 /platforms/android/build.gradle,但之后我删除并重新添加了插件(第一个)和平台[email protected] (后)。

我不知道失败的原因是什么,但我认为我的项目仍然有两个版本:12.0 和 11.8.0 因为在控制台中我看到了这个:

firebase-build-failed-2

我不知道在哪里可以指定 12.0.0 版本。

删除节点模块,删除平台/android,删除 /plugins 中的每个服务使用插件,NPM i,阅读您删除的每个插件,添加平台 android,然后重试。 这就是我会做的。

好的,我会尝试重新安装我拥有的每个组件。 非常感谢您的帮助!!

@tryadelion感谢分享。 我正要分叉 cordova-plugin-firebase 和 force 版本。 无论如何,我实施了您的解决方案。

我们正在使用同样有效的

最后我通过这种方式解决了修改文件 /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.0cordova-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 所说的,它使构建工作。 但是,远程配置停止工作。 任何的想法?

深入研究 fetch 不起作用的问题,我发现这是因为调用 fetch 时抛出以下异常:

引起: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'
            }
        }
    }
}

@soumak77有效,谢谢

此页面是否有帮助?
0 / 5 - 0 等级

相关问题

merbin2012 picture merbin2012  ·  4评论

LKruglov picture LKruglov  ·  4评论

Zrnik picture Zrnik  ·  3评论

JonSmart picture JonSmart  ·  3评论

rolinger picture rolinger  ·  5评论