Android - FirebaseApp / Firebase-Initialization无法启动

时间:2016-06-09 11:31:14

标签: android push-notification firebase google-cloud-messaging

我想在我的Android-App中实现Firebase-Messaging插件。 我已经开始使用" quickstart-android-master / messaging" -example from 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:火力的消息:9.0.2"进入我的应用程序,    FirebaseApp尚未初始化!所以FirebaseApp插件无法启动! - 没有收到日志或令牌!

我还在" app" -directory中添加了应用插件到build.gradle文件:

    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'

和#34; root"中的build.gradle google-services插件目录:

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

问题可能是:

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

6 个答案:

答案 0 :(得分:17)

我的问题是“清单合并”。 如果我使用

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

tools:node="replace"

在Manifest的Application Tag中,FirebaseApp将不会被初始化!

  

如果您在工具:节点上使用替换 attr,它将取代您的   带注释的低优先级声明(参见更多信息   here)。您应该使用合并仅合并属性   代替。

所以我完全做了什么:

这不起作用:

<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"-->
  

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

答案 1 :(得分:0)

在我的情况下,Android清单文件中缺少这些权限:

<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" />

答案 2 :(得分:0)

这为我解决了这个问题:

  • 实现'com.google.firebase:firebase-crash:16.2.1'

  • 实现'com.google.firebase:firebase-auth:16.1.0'

答案 3 :(得分:0)

就我而言,我缺少权限[Coredump] #Storage=external #Compress=yes ProcessSizeMax=20G ExternalSizeMax=20G #JournalSizeMax=767M #MaxUse= #KeepFree= 然后重新安装该应用

答案 4 :(得分:0)

有问题的另一个迹象是像这样的 logcat 行

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

检查 google-service.json,它应该有你的 apk sha1:

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"

删除firebase中的整个Android项目,再次添加并添加您的apk sha1。 如果您的 sha1 密钥更改(即新应用),请再次删除 Android 项目并重新开始。

以前一怒之下加了sha256,也试过设置Android设备验证、SafetyNet等,这些都不需要。

答案 5 :(得分:-1)

我遇到了同样的问题,请添加以下内容:

com.google.firebase:com.google.firebase之前的firebase-core:firebase-messaging

dependences {

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

}