【发布时间】: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