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

应用双进程场景下Firebase Crashlytics无法上报子进程前台服务崩溃

问题根因

Android 系统中每个独立进程都会创建独立的应用上下文实例,Firebase Crashlytics 默认仅在主进程启动时自动完成初始化,子进程不会触发默认初始化流程,因此子进程内产生的崩溃无法被捕获、上报到控制台。

修复步骤
  • 第一步:关闭Firebase Crashlytics自动初始化开关,在项目AndroidManifest.xml的<application>标签下添加如下配置:
<meta-data
    android:name="firebase_crashlytics_collection_enabled"
    android:value="false" />
  • 第二步:在自定义Application类的onCreate方法中手动初始化Crashlytics,所有进程启动时都会触发该方法回调,无需额外判断进程归属:
import com.google.firebase.crashlytics.FirebaseCrashlytics
import android.app.Application

class CustomApplication : Application() {
    override fun onCreate() {
        super.onCreate()
        // 所有进程统一初始化Crashlytics
        FirebaseCrashlytics.getInstance().setCrashlyticsCollectionEnabled(true)
    }
}

Java版本参考实现:

import android.app.Application;
import com.google.firebase.crashlytics.FirebaseCrashlytics;

public class CustomApplication extends Application {
    @Override
    public void onCreate() {
        super.onCreate();
        FirebaseCrashlytics.getInstance().setCrashlyticsCollectionEnabled(true);
    }
}
  • 第三步:验证修复效果,在前台服务的业务逻辑中添加测试崩溃代码,触发后检查Crashlytics控制台是否收到对应上报:
// 子进程前台服务测试代码
throw RuntimeException("test child process crash")
注意事项
  • 若应用中还接入了其他Firebase组件,可参考同样的逻辑在Application.onCreate中统一初始化,避免其他子进程数据上报异常
  • 不要仅在主进程的专属初始化逻辑中初始化Crashlytics,会导致子进程初始化遗漏

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 06:09:05