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

Android应用多Firebase项目配置问询:调整Crashlytics等扩展归属

多Firebase项目下切换Crashlytics和Performance到指定项目的解决方案

我明白你现在的需求:已经通过代码初始化了一个Firebase项目给Auth用,现在想把Crashlytics和Performance也切换到这个项目,同时让Messaging继续用原来的配置文件项目。其实核心就是让Crashlytics和Performance关联到你手动初始化的那个FirebaseApp实例,而不是默认的那个。

第一步:确保你能拿到Auth对应的FirebaseApp实例

你已经写了获取/初始化Auth项目FirebaseApp的代码,先把这段代码整理成可复用的方法:

private FirebaseApp getAuthFirebaseApp(Context context) {
    // credentials for auth project on Firebase
    final String authAppName = BuildConfig.AUTH_APP_NAME;
    final String authAppApplicationId = BuildConfig.AUTH_APPLICATION_ID;
    final String authAppApiKey = BuildConfig.AUTH_APPLICATION_KEY;
    
    List<FirebaseApp> listOfActiveApps = FirebaseApp.getApps(context);
    if (!listOfActiveApps.isEmpty()) {
        for (FirebaseApp app : listOfActiveApps) {
            if (authAppApiKey.equals(app.getOptions().getApiKey())) {
                return app;
            }
        }
    }
    
    FirebaseOptions options = new FirebaseOptions.Builder()
            .setApplicationId(authAppApplicationId)
            .setApiKey(authAppApiKey)
            // 如果你的Auth项目需要其他配置(比如数据库URL、存储桶等),可以在这里补充
            .build();
    return FirebaseApp.initializeApp(context, options, authAppName);
}

第二步:将Crashlytics关联到Auth的FirebaseApp

默认情况下Crashlytics会自动使用默认的FirebaseApp,所以我们需要手动指定它使用你初始化的Auth项目实例:

// 在Application的onCreate()或者合适的初始化时机调用
FirebaseApp authFirebaseApp = getAuthFirebaseApp(getApplicationContext());

// 获取关联到Auth项目的Crashlytics实例
FirebaseCrashlytics authCrashlytics = FirebaseCrashlytics.getInstance(authFirebaseApp);

// 可选:配置Crashlytics的收集开关(比如Debug模式下关闭)
if (BuildConfig.DEBUG) {
    authCrashlytics.setCrashlyticsCollectionEnabled(false);
} else {
    authCrashlytics.setCrashlyticsCollectionEnabled(true);
}

这样之后,所有的崩溃报告都会发送到Auth对应的Firebase项目的Crashlytics控制台了。

第三步:将Performance关联到Auth的FirebaseApp

Performance的配置逻辑和Crashlytics类似,同样需要手动指定FirebaseApp实例:

// 同样在初始化时机调用
FirebasePerformance authPerformance = FirebasePerformance.getInstance(authFirebaseApp);

// 可选:配置Performance的收集开关
authPerformance.setPerformanceCollectionEnabled(!BuildConfig.DEBUG);

完成这一步后,性能监控数据就会上传到Auth对应的Firebase项目的Performance控制台。

关键注意点

  • 保持Messaging的原有配置:因为你希望Messaging继续使用原来的项目,所以不要改动它的初始化逻辑,直接使用默认的FirebaseMessaging.getInstance()即可,它会自动关联到通过配置文件初始化的默认FirebaseApp。
  • SDK版本要求:确保你的项目中使用的Firebase Crashlytics和Performance SDK是较新的稳定版本,早期版本可能不支持通过指定FirebaseApp实例来获取对应的服务实例。建议在build.gradle中使用最新的依赖版本。
  • 初始化时机:建议在自定义Application类的onCreate()方法中完成所有这些初始化操作,确保在App启动初期就完成配置,避免后续功能出现异常。

验证方法

  • 对于Crashlytics:可以在Debug模式下临时开启收集,然后故意触发一个崩溃(比如throw new RuntimeException("Test Crash")),之后去Auth项目的Firebase控制台查看是否收到崩溃报告。
  • 对于Performance:启动App后,正常操作一段时间,然后去Auth项目的Performance控制台查看是否有性能数据生成。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 07:22:32