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

Flutter中Firebase iOS Crashlytics崩溃未上报,Android正常

Flutter Firebase Crashlytics iOS端崩溃日志无法上报解决指南

问题描述

Android端Firebase Crashlytics崩溃日志可正常上报,但iOS端无法上报,捕获到的错误信息如下:

======== Exception caught by Flutter framework =
抛出以下消息:
测试第一次上传ios1111

===================================================================================================
10.20.0 - [FirebaseCrashlytics][I-CLS000000] Submitted an on-demand exception, starting delay 6.00000000000000000000
10.20.0 - [FirebaseCrashlytics][I-CLS000000] Crashlytics skipped rotating the Install ID during urgent mode because it is run on the main thread, which can't succeed. This can happen if the app crashed the last run and Crashlytics is uploading urgently.

当前配置

Flutter依赖

firebase_core: ^2.23.0
firebase_crashlytics: ^3.4.5
firebase_analytics: ^10.8.4

Podfile配置

pod 'FirebaseAnalytics'
pod 'FirebaseCrashlytics'
pod 'FirebaseCore'

相关截图

Flutter配置界面
无内容截图

解决步骤

1. 修正iOS端初始化逻辑

确保在iOS项目入口文件(AppDelegate.swift或Runner.swift)中正确初始化Firebase和Crashlytics,避免主线程阻塞问题:

import Firebase
import FirebaseCrashlytics

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
    FirebaseApp.configure()
    // 后台线程初始化Crashlytics,规避主线程ID旋转失败问题
    DispatchQueue.global().async {
        Crashlytics.crashlytics().setCrashlyticsCollectionEnabled(true)
    }
    return true
}

2. 优化Pod依赖管理

Flutter的Firebase插件会自动关联对应原生Pod依赖,无需手动指定,修改Podfile如下:

platform :ios, '11.0'
use_frameworks!
use_modular_headers!

flutter_install_all_ios_pods File.dirname(File.realpath(__FILE__))

执行以下命令重新安装依赖:

pod deintegrate
pod install

3. 检查Xcode构建脚本

在Xcode的Build Phases中添加Crashlytics的Run Script:

  • 脚本内容:"${PODS_ROOT}/FirebaseCrashlytics/run"
  • 添加Input Files:
    • ${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}/Contents/Resources/DWARF/${TARGET_NAME}
    • ${SRCROOT}/$(BUILT_PRODUCTS_DIR)/$(INFOPLIST_PATH)

4. 验证上报有效性

  • 手动触发原生崩溃测试:在iOS代码中添加触发崩溃的逻辑,比如按钮点击事件里调用Crashlytics.crashlytics().crash()
  • 重启App后等待1-2分钟,查看Firebase控制台是否收到崩溃日志
  • 确保测试设备网络正常,Crashlytics上报需要联网环境

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 16:12:37