Android - FirebaseApp/Firebase-Initialization не запускается

Я хочу реализовать плагин Firebase-Messaging в своем Android-приложении. Я начал с "quickstart-android-master/messaging" -example из 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

Но если я хочу реализовать плагин "com.google.firebase: firebase-messaging: 9.0.2" в мое приложение, FirebaseApp не инициализируется! Поэтому плагин FirebaseApp не запускается! - Нет регистрации или маркера!

Я также добавил применить плагин для сборки файла .gradle в "app" -directory:

    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'

И плагин google-services для сборки .gradle в корневом каталоге:

buildscript {
    // ...
    dependencies {
        // ...
        classpath 'com.google.gms:google-services:3.0.0'
    }
}

Проблемы могут быть:

  • AndroidAnnotations, Proguard, Product flavors...

Ответ 1

Проблема заключается в "Manifest Merger" для Android. Если я использую

xmlns:tools="http://schemas.android.com/tools"

и

tools:node="replace"

в теге приложения манифеста, FirebaseApp не будет инициализирован!

Резюме: если вы используете заменить attr на инструментах: node, он заменит ваше объявление с более низким приоритетом аннотированным (подробнее здесь). Вместо этого следует использовать слияние или только слияния.

Итак, что я точно сделал:

Это не работает:

<application
            android:name="xxx"
            android:icon="@mipmap/ic_launcher"
            android:label="@string/application_name"
            android:theme="@style/Theme.TemplateStyle"
            tools:node="replace">

это работает:

<application
            android:name="xxx"
            android:icon="@mipmap/ic_launcher"
            android:label="@string/application_name"
            android:theme="@style/Theme.TemplateStyle">
            <!-- tools:node="replace"-->

Ответ 2

У меня была та же проблема, добавьте следующее:

com.google.firebase: firebase-core перед com.google.firebase: firebase-messaging

dependences {

    compile 'com.google.firebase:firebase-core:9.4.0'
    compile 'com.google.firebase:firebase-messaging:9.4.0'

}