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

升级Firebase SDK后切换环境时遭遇多DataStore实例冲突错误的技术咨询

升级Firebase SDK后切换环境时遭遇多DataStore实例冲突错误的技术咨询

问题背景

我维护着一个运行时环境切换器,原本的逻辑是删除并重新初始化Firebase默认App,以此来指向对应环境的Firebase项目——这样就能让同一个App在不同环境下拥有独立的Analytics和Crashlytics数据。

但几天前升级到最新版Firebase SDK后,这个切换器开始崩溃,抛出以下错误:

java.lang.IllegalStateException: There are multiple DataStores active for the same file: files/datastore/aqs/sessionConfigsDataStore.data. You should either maintain your DataStore as a singleton or confirm that there is no two DataStore's active on the same file (by confirming that the scope is cancelled).

当前Firebase初始化代码

我的核心初始化逻辑如下:

suspend fun reset() {
    FirebaseApp.getApps(context).forEach { it.delete() }
    init()
}

suspend fun init() {
    val environment = environmentRepository.getEnvironment()
    val configFileName = environment.configFileName
    val inputStream = context.assets.open(configFileName)
    val jsonString = inputStream.bufferedReader().use { it.readText() }
    val firebaseOptionsJsonFile = gson.fromJson(jsonString, FirebaseJsonFileOptions::class.java)
    val firebaseOptions = firebaseOptionsJsonFile.mapToFirebaseOptions()

    val isNotAlreadyInitialized = FirebaseApp.getApps(context).none { it.name == DEFAULT_APP_NAME }
    if (isNotAlreadyInitialized) {
        FirebaseApp.initializeApp(context, firebaseOptions)
        Timber.d("$TAG: Firebase initialized with environment: $environment")
    } else {
        Timber.d("$TAG: FirebaseApp already initialized with environment: $environment")
    }
}

已尝试的方案及遇到的限制

我试过创建多个Firebase App实例,而不是删除重建默认App,但遇到了平台硬限制:

Note: On Android and Apple platforms, Analytics are only logged for the default app.

因为我们需要每个环境都能正常上报Analytics数据,所以多App的方案完全不可行。

我的诉求

我觉得应该有更优雅的方式来修改Firebase默认App的配置,而不是通过删除重建的方式切换环境——这样就能从根源上避免DataStore冲突崩溃的问题。希望能得到社区的建议,解决DataStore冲突的同时,保留默认App的Analytics功能。

内容来源于stack exchange

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.07 09:04:35