【问题标题】:Android - FirebaseApp / Firebase-Initialization is not startingAndroid - FirebaseApp / Firebase-Initialization 未启动
【发布时间】:2016-10-10 00:51:29
【问题描述】:

我想在我的 Android 应用中实现 Firebase-Messaging 插件。 我从 github 的“quickstart-android-master/messaging”示例开始: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 插件没有启动! - 没有收到日志或令牌!

我还在“app”目录中的 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'

还有google-services插件在“根”目录下build.gradle:

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

问题可能是:

  • AndroidAnnotations、Proguard、产品风味......

【问题讨论】:

  • 您是否在 Firebase 控制台上创建了应用程序?
  • 你能显示你的gradle文件内容吗
  • 是的,我在 firebase 控制台上创建了它!而且我还在示例中使用了我的包名。
  • 您是简单地通过日志判断firebase初始化还是尝试在应用中获取实例?
  • 您会尝试从头开始创建应用程序吗?这是我为它做的tutorial

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


【解决方案1】:

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

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

tools:node="replace"

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

如果您在 tools:node 上使用 replace attr,它将替换您的 带有注释的优先级较低的声明(查看更多 here)。您应该使用 mergemerge only 属性 而是。

所以我到底做了什么:

这不起作用:

<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

【讨论】:

  • 目前我已经更新到 tools:replace="android:name" 而不是 tools:node="replace"。希望有所帮助
  • @ManuelSchmitzberger 嗨,Manuel,您能告诉我们这是什么“Manifest Merger”吗?我们在哪里可以找到这些行?
  • 我不明白,在 Manifest 中实际上需要添加什么?你能举出完整的例子吗??
  • 在哪里可以找到工具: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'

}

【讨论】:

  • 这对我没有帮助
【解决方案3】:

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

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

【讨论】:

    【解决方案4】:

    这为我解决了问题:

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

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

    【讨论】:

      【解决方案5】:

      在我的情况下,我缺少权限 &lt;uses-permission android:name="android.permission.INTERNET"/&gt; 然后重新安装应用程序

      【讨论】:

        【解决方案6】:

        另一个有问题的迹象是这样的 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 Device Verification、SafetyNet等,这些都不需要。

        【讨论】:

          猜你喜欢
          • 2021-07-11
          • 1970-01-01
          • 1970-01-01
          • 2021-12-11
          • 2018-11-21
          • 2017-03-02
          • 2013-12-19
          • 2021-07-17
          • 1970-01-01
          相关资源
          最近更新 更多