如何解决架构迁移后 Firebase Crashlytics 未报告崩溃
最近,我们将应用从 Fabric 迁移到 Firebase Crashlytics 和 Firebase Analytics。在 android 中,遵循 Google 文档后,一切都像魅力一样。问题是在 iOS 中,我们在遵循相同的文档后没有得到关于 Firebase Crashlytics(在 Firebase Analytics 上完美运行)的报告。
路径:
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()
}
解决方法
运行脚本对我来说不太好。应该有一两个单独的命令:
- 运行(启动)Firebase Crashlytics:
"${PODS_ROOT}/FirebaseCrashlytics/run"
(见docs) - 如果 Firebase Crashlytics 本身无法处理 dSYM 文件,您应该将 dSYM 文件上传到 Firebase 以获取反混淆的崩溃报告(请参阅docs)
所以我建议您编辑 Firebase Crashlytics Run Script 以运行 Crashlytics(无需上传任何 dSYM 文件)。如果它有帮助并且您可以在控制台中看到崩溃,那么您可以检查 dSYM 文件是否丢失(因此需要另一个用于上传 dSYM 的脚本)。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。