16

I want to implement the Firebase-Messaging plugin into my Android-App. I've started with the "quickstart-android-master/messaging"-example from github: https://github.com/firebase/quickstart-android/tree/master/messaging

This works for me! Log-Output:

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

But if I want to implement the Plugin "com.google.firebase:firebase-messaging:9.0.2" into my app, the FirebaseApp isn't initialized! So the FirebaseApp plugin isn't starting! - No Log or token received!

I've also added apply plugin to build.gradle file in "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'

And the google-services plugin to build.gradle in the "root" directory:

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

Problems could be:

  • AndroidAnnotations, Proguard, Product flavors...
Manuel Schmitzberger
  • 5,162
  • 3
  • 36
  • 45

6 Answers6

20

My problem was the "Manifest Merger". If I use the

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

and

tools:node="replace"

in the Application Tag of the Manifest, the FirebaseApp will not be initialized!

If you use replace attr on tools:node it will replace your lower priority declaration with the annotated one (see more here). You should use merge or merge only attributes instead.

So what I've exactly done:

This doesn't work:

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

this works:

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

If you want to overwrite or replace some attributes, use tools:replace instead!

Manuel Schmitzberger
  • 5,162
  • 3
  • 36
  • 45
0

In my case these permissions were missing in Android Manifest file:

<permission
        android:name="com.app.appname.permission.C2D_MESSAGE"
        android:protectionLevel="signature" />

   <uses-permission android:name="com.app.appname.permission.C2D_MESSAGE" />
    <uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
Srihari Karanth
  • 2,067
  • 2
  • 24
  • 34
0

This close the issue for me:

  • implementation 'com.google.firebase:firebase-crash:16.2.1'

  • implementation 'com.google.firebase:firebase-auth:16.1.0'

Ashot
  • 399
  • 4
  • 7
0

In my case I was missing permission <uses-permission android:name="android.permission.INTERNET"/> then reinstall the app

NullPointerException
  • 3,978
  • 4
  • 34
  • 52
0

Another sign there are problems are logcat lines like this

FirebaseAuth: [GetAuthDomainTask] Error getting project config. Failed with INVALID_CERT_HASH 400
FirebaseAuth: [SmsRetrieverHelper] SMS verification code request failed: unknown status code: 17093 null

Check google-service.json, it should have your apk sha1 in it:

apk: sha1

SHA1: 4E:AA:54:E0:08:93:C6:CB:7B:8C:74:1E:2A:55:E7:60:XX:XX:XX:XX

google-service.json:

            "certificate_hash": "4eaa54e00893c6cb7b8c741e2a55e760a5XXXXXX"

Delete the whole Android project in firebase, add it again and add your apk sha1. If your sha1 key changes (ie new app) delete the Android project again and start fresh.

In the past, in anger, I added sha256 and also tried setting up Android Device Verification, SafetyNet etc, none of these are needed.

Gary Davies
  • 920
  • 15
  • 12
-1

I had the same problem, add the following:

com.google.firebase:firebase-core before com.google.firebase:firebase-messaging

dependences {

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

}
DanielBarbarian
  • 5,093
  • 12
  • 35
  • 44
tehuelche
  • 31
  • 2