【问题标题】:Firebase Crashlytics not reporting crashes after Fabric Migration结构迁移后 Firebase Crashlytics 未报告崩溃
【发布时间】:2021-06-10 18:34:16
【问题描述】:

最近,我们将应用从 Fabric 迁移到了 Firebase Crashlytics 和 Firebase Analytics。在 android 中,在遵循 Google 文档之后,一切都像魅力一样。问题是,在 iOS 中,在遵循相同的文档之后,我们没有收到有关 Firebase Crashlytics 的报告(在 Firebase Analytics 上完美运行)。

路径:

Dev Google 服务信息列表: Supporting Files > Firebase > Dev > GoogleService-Info-Dev.plist

Prod Google 服务信息列表: Supporting Files > Firebase > Prod > GoogleService-Info-Prod.plist

空列表: Supporting Files > GoogleService-Info.plist

构建阶段:

运行脚本(GoogleService-Info.plist 赋值)

if [ "${CONFIGURATION}" = "Release" ]; then
    GOOGLE_SERVICE_INFO_PLIST_FROM="${PROJECT_DIR}/Supporting Files/Firebase/Prod/GoogleService-Info-Prod.plist"
else
    GOOGLE_SERVICE_INFO_PLIST_FROM="${PROJECT_DIR}/Supporting Files/Firebase/Dev/GoogleService-Info-Dev.plist"
fi

GOOGLE_SERVICE_INFO_PLIST_TO="${PROJECT_DIR}/Supporting Files/GoogleService-Info.plist" 
cp "${GOOGLE_SERVICE_INFO_PLIST_FROM}" "${GOOGLE_SERVICE_INFO_PLIST_TO}" 

运行脚本(Firebase Crashlytics 运行)

# Run Firebase Crashlytics

"${PODS_ROOT}/FirebaseCrashlytics/run" -gsp "${PROJECT_DIR}/Supporting\ Files/GoogleService-Info.plist" 

AppDelegate:

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
       
   // Set Google -Info.plist for enviroment
       let filePath = Bundle.main.path(forResource: ULima.getInfoPlist(buildType: ULima.buildType), ofType: "plist")
   if let fileopts = FirebaseOptions(contentsOfFile: filePath!) {
       // Use Firebase library to configure APIs and Crashlytics
       FirebaseApp.configure(options: fileopts)
   }
  [...]
}
       

Crashlytics 控制台:

我已经尝试过的:

  • 检查项目和 Firebase 控制台中的捆绑包 ID 是否匹配
  • 检查 bundle id 是否有空空间
  • 运行项目,按停止,在模拟器中打开应用程序(这样调试器就不会干扰 crashlytics)并强制崩溃
  • 等了超过 2 天,崩溃才出现
  • 使用 dSYM 文件将调试信息格式设置为 DWARF。
  • 只运行"${PODS_ROOT}/FirebaseCrashlytics/run"
  • 检查Crashlytics.crashlytics().didCrashDuringPreviousExecution()
  • 将此添加到AppDelegate
        Crashlytics.crashlytics().setCrashlyticsCollectionEnabled(false)

        Crashlytics.crashlytics().checkForUnsentReports { _ in
            Crashlytics.crashlytics().sendUnsentReports()
        }

【问题讨论】:

  • 你如何测试这个?通常对于 iOS,您需要构建/运行应用程序,然后停止 Xcode。然后直接在设备中打开应用程序并使其崩溃然后重新运行它。 Xcode 的调试器阻止 Crashlytics 收集崩溃数据。
  • 我已经这样做了,请检查我尝试过的内容:D
  • 大声笑没有看到那部分。我能想到的另一件事是正在使用的 Crashlytics 版本。在 Podfile.lock 文件中,Crashlytics 版本是什么?如果可能,请将此标志添加到场景中:firebase.google.com/docs/crashlytics/… 执行我上面提到的相同步骤,但从 Xcode 重新运行应用程序,以便您可以看到调试日志。

标签: ios swift firebase crashlytics


【解决方案1】:

运行脚本对我来说看起来不太好。应该有一个或两个单独的命令:

  1. 运行(启动)Firebase Crashlytics: "${PODS_ROOT}/FirebaseCrashlytics/run"(见docs
  2. 如果 Firebase Crashlytics 无法自行处理 dSYM 文件,您应该将 dSYM 文件上传到 Firebase 以获取经过去混淆处理的崩溃报告(请参阅 docs

所以我建议您编辑您的 Firebase Crashlytics 运行脚本,以运行 Crashlytics(不上传任何 dSYM 文件)。如果它有帮助并且您可以在控制台中看到崩溃,那么您可以检查 dSYM 文件是否丢失(因此需要另一个用于上传 dSYM 的脚本)。

【讨论】:

  • 嗨,我已经尝试不使用 -gsp 命令,并使用 dSYM 文件将调试信息格式设置为 DWARF。我在控制台中对 Crashlytics 一无所知,没有错误,没有日志,什么都没有。
猜你喜欢
  • 2019-04-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多