You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android应用启动崩溃:Default FirebaseApp未初始化问题修复

问题根因

这个崩溃本质是调用Firebase相关接口时,默认Firebase实例还未完成初始化,常见触发原因如下:

  • 调用时序错误:在StartActivity的onCreate里直接执行refreshTokenDevice获取Firebase实例,如果手动写的FirebaseApp.initializeApp执行时机晚于这个调用,就会直接抛错;如果应用配置了多进程,非主进程启动时不会触发Firebase默认自动初始化,也会出现这个问题。
  • 配置文件异常:app模块下没有存放对应包名com.paradigma.SIGEPedidos的google-services.json,或者文件内包名配置和实际应用包名不匹配,会导致Firebase初始化流程直接失败,哪怕手动调用初始化方法也不会生效。
  • Gradle配置缺失:根目录build.gradle没配置google-services插件依赖,或者app模块build.gradle没有在文件末尾应用com.google.gms.google-services插件,Firebase自动初始化逻辑不会注入,相关资源也不会被打包进APK。
  • 依赖兼容问题:2022年后发布的新版Firebase已经废弃了FirebaseInstanceId相关API,如果你升级依赖后还在调用旧接口,会和新版初始化逻辑产生冲突。
修复步骤

按顺序操作,每完成一步可以编译验证是否解决崩溃:

  1. 校验配置文件
    确认google-services.json文件放在app模块根目录(和app模块build.gradle同级),打开文件检查client数组下对应条目的android_client_info -> package_name字段值,必须和应用包名com.paradigma.SIGEPedidos完全一致,不能有拼写错误、多余空格。
  2. 修正Gradle配置
  • 打开项目根目录的build.gradle,在buildscript -> dependencies节点下添加google-services插件依赖,版本选4.3.15以上的稳定版即可,和你当前的Android Gradle插件版本匹配:
buildscript {
    dependencies {
        classpath 'com.google.gms:google-services:4.4.0'
    }
}
  • 打开app模块的build.gradle,在文件最底部(不要放在文件头部、android节点或者dependencies节点内部)添加插件应用语句:
apply plugin: 'com.google.gms.google-services'
  • 替换废弃依赖,如果你用BoM管理Firebase版本,直接移除旧的firebase-iid依赖,换成稳定的messaging依赖:
dependencies {
    implementation platform('com.google.firebase:firebase-bom:32.7.0')
    implementation 'com.google.firebase:firebase-messaging'
}
  1. 调整初始化与调用逻辑
    删掉之前零散添加的初始化代码,按以下方式调整保证时序正确:
  • 新建自定义Application类,在AndroidManifest.xml的application节点配置android:name属性指向这个类,同时增加主进程判断避免多进程初始化异常:
class MyApp : Application() {
    override fun onCreate() {
        super.onCreate()
        if (FirebaseApp.getApps(this).isEmpty()) {
            FirebaseApp.initializeApp(this)
        }
    }
}
  • 替换refreshTokenDevice里已经废弃的FirebaseInstanceId调用逻辑,用新版Firebase Messaging的API获取设备token:
private fun refreshTokenDevice() {
    FirebaseMessaging.getInstance().token.addOnCompleteListener { task ->
        if (!task.isSuccessful) {
            Log.w("SIGEP", "get fcm token failed", task.exception)
            return@addOnCompleteListener
        }
        val deviceToken = task.result
        // 后续token上报逻辑
    }
}
  • 调整refreshTokenDevice的调用时机,不要在StartActivity的onCreate里直接调用,可以挪到onResume生命周期里触发,避免初始化还没完成就调用接口。
  1. 清理缓存重编译
    配置修改完成后,依次执行Android Studio菜单栏的Build -> Clean Project、Build -> Rebuild Project,卸载设备上已经安装的旧版APK,重新安装运行测试。
额外排查点

如果以上操作后还是崩溃,检查两个特殊场景:

  • 如果你做了启动优化把Firebase初始化放到了子线程延迟执行,必须加初始化完成的回调,等初始化结束后再执行token获取逻辑。
  • 检查AndroidManifest.xml里是否给StartActivity或者Application节点配置了android:process属性指定运行在非主进程,非主进程启动时需要单独执行Firebase初始化逻辑。

内容的提问来源于stack exchange,提问作者ModeOff

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 13:54:23