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'
}