Android - FirebaseApp/Firebase-Initialization无法启动

Man*_*ger 13 android push-notification firebase google-cloud-messaging

我想在我的Android-App中实现Firebase-Messaging插件.我开始使用"quickstart-android-master/messaging" - 来自github的示例:https://github.com/firebase/quickstart-android/tree/master/messaging

这适合我!对数输出:

D/FirebaseApp? com.google.firebase.auth.FirebaseAuth is not linked. Skipping initialization.
D/FirebaseApp? Initialized class com.google.firebase.iid.FirebaseInstanceId.
D/FirebaseApp? com.google.firebase.crash.FirebaseCrash is not linked. Skipping initialization
D/FirebaseApp? Initialized class com.google.android.gms.measurement.AppMeasurement.
I/FirebaseInitProvider? FirebaseApp initialization successful
Run Code Online (Sandbox Code Playgroud)

但是,如果我想在我的应用中实施插件"com.google.firebase:firebase-messaging:9.0.2",则 FirebaseApp不会初始化!所以FirebaseApp插件没有启动! - 没有收到日志或令牌!

我还在"app"-directory中为build.gradle文件添加了apply plugin:

    apply plugin: 'com.android.application'

android {
  // ...
}

dependencies {
  // ...
  compile 'com.google.firebase:firebase-messaging:9.0.2'
}

// ADD THIS AT THE BOTTOM
apply plugin: 'com.google.gms.google-services'
Run Code Online (Sandbox Code Playgroud)

以及在"root"目录中build.gradle的google-services插件:

buildscript {
    // ...
    dependencies {
        // ...
        classpath 'com.google.gms:google-services:3.0.0'
    }
}
Run Code Online (Sandbox Code Playgroud)

问题可能是:

  • AndroidAnnotations,Proguard,产品口味......

Man*_*ger 18

我的问题是"清单合并".如果我用的话

xmlns:tools="http://schemas.android.com/tools"
Run Code Online (Sandbox Code Playgroud)

tools:node="replace"
Run Code Online (Sandbox Code Playgroud)

在Manifest的应用程序标记中,FirebaseApp将不会被初始化!

如果你在工具上使用replace attr :node它将用带注释的一个替换你的低优先级声明(详见 这里).您应该使用合并合并属性.

所以我做了什么:

这不起作用:

<application
            android:name="xxx"
            android:icon="@mipmap/ic_launcher"
            android:label="@string/application_name"
            android:theme="@style/Theme.TemplateStyle"
            tools:node="replace">
Run Code Online (Sandbox Code Playgroud)

这工作:

<application
            android:name="xxx"
            android:icon="@mipmap/ic_launcher"
            android:label="@string/application_name"
            android:theme="@style/Theme.TemplateStyle">
            <!-- tools:node="replace"-->
Run Code Online (Sandbox Code Playgroud)

如果要覆盖或替换某些属性,请tools:replace改用!

  • 我不明白,在Manifest中实际需要添加什么?你能举出完整的例子吗? (2认同)
  • 是的,您是对的,我已经通过重新安装应用程序解决了这个问题:) (2认同)