我正在通过一个按钮强制崩溃,而Firebase / Crashlytics似乎没有拍照。
我的应用程序的一些背景。
我的应用程序有两个App ID,一个用于企业内部使用,另一个用于app store。触发构建时会触发脚本,以便正确使用正确的GoogleService-Info.plist进行构建。企业版工作正常,收到dsyms上传和崩溃。应用程序商店缺少dsym,崩溃不会通过。
我进行构建,停止调试器,在4G上运行应用程序,以切断可能有防火墙阻止请求的公司wifi
[Crashlytics] Version 3.10.5 (130)
[Fabric] [Fabric +with] called multiple times. Only the first call is honored, please pass all kits you wish to initialize
[Crashlytics:Crash:Reports] Packaged report with id '18357d12a8ce415584520b8f889d2776' for submission
[Crashlytics:Crash:Reports] Submitting report
...
[Crashlytics:Crash:Reports] completed submission of /path/to/app/file.multipartmime
[Crashlytics:Crash] report submission successful
顺便说一句,它说我错过了dSYM,我上传了dsym,它仍然说我需要加载它。
更新:
迈克注意到了日志
[Fabric] [Fabric +with] called multiple times. Only the first call is honored, please pass all kits you wish to initialize
看起来很麻烦
FirebaseApp.configure()
FirebaseConfiguration.shared.setLoggerLevel(.min)
Fabric.sharedSDK().debug = false
//Fabric.with([Crashlytics.self]) // this was causing that line to appear
所以这是我在崩溃后插入调试器后的日志状态。
注意:我将日志记录的设置更改为.notice,并将fabric debug设置为true,并将参数FIRAnalyticsDebugEnabled设置为YES
[Crashlytics] Version 3.10.5 (130)
[Crashlytics:Crash:Reports] Packaged report with id 'cdece9d5d08e4caea8fcb1b1aa0e87da' for submission
[Crashlytics:Crash:Reports] Submitting report
[Crashlytics:Crash:Reports] Submitting async /path.multipartmime
[Crashlytics:Crash:Reports:Event] Sending event.
[Crashlytics:Crash] Unable to read identifier at path /path
[Crashlytics:Crash:Reports] Unable to remove a processing item
[Crashlytics:Crash:Reports] Packaged report with id '(null)' for submission
[Crashlytics:Crash:Reports] Submitting report
[Crashlytics:Crash:Reports] Submitting async path.multipartmime
4.8.1 - [Firebase/Analytics][I-ACS023007] Firebase Analytics v.40009000 started
4.8.1 - [Firebase/Analytics][I-ACS023008] To enable debug logging set the following application argument: -FIRAnalyticsDebugEnabled (see URL to some place)
[Fabric] settings downloaded successfully
[Fabric] Settings are available for consumption
[Crashlytics:Crash:Reports] completed submission of /path/770D4E72-67E0-4763-9FAA-687C0701A445.multipartmime
[Crashlytics:Crash] report submission successful
[Crashlytics:Crash:Reports] completed submission of /path.multipartmime
[Crashlytics:Crash] report submission successful
它说虽然我没有启用日志记录。很奇怪,但没什么大不了的。
不幸的是,控制台仍然没有收到崩溃,现在我回到dSYMs有4个条目,之前只有2个。
注意:崩溃免费用户统计信息已更改,在缺少的dSYM下,它显示崩溃,但没有出现问题。
我为解决这个问题所做的事情
Fabric.with([Crashlytics.self])
如果你在控制台中看到这个
[Fabric] [Fabric +with] called multiple times. Only the first call is honored, please pass all kits you wish to initialize
"${PODS_ROOT}/Fabric/upload-symbols" -gsp "${PROJECT_DIR}/GoogleService-Info.plist" -p ios "${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}"
我通过转到构建日志确认上传成功,找到“运行自定义shell脚本'上传dSYM'扩展它以显示状态。它应该为您正在构建的每个架构说出类似的内容。
2018-07-19 18:38:15.630 upload-symbols[42776:1122351] Successfully submitted symbols for architecture arm64 with UUID 011bb8b8c270398292fac15e0fa117ed in dSYM: /path/YourApp.app.dSYM
什么都行不通
xCode 9.4.1 | iOS 11 |斯威夫特4
尽管我尝试了一些不起作用的东西,但我并没有崩溃:
Crashlytics.sharedInstance().crash()
初始化Crashlytics后,通过func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool
强制崩溃"${PODS_ROOT}/Fabric/upload-symbols" -gsp "${PROJECT_DIR}/GoogleService-Info.plist" -p ios "${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}"
中提到的脚本我可以在控制台中看到这个......
2018-09-13 17:58:01.893028-0500 Diem[8715:8252505] [Crashlytics] Version 3.10.7 (130)
......所以似乎Crashlytics正在初始化,但仍然没有出现在FB Crashlytics控制台中。
什么修复它
在Firebase文档中,它显示了创建UI的示例,添加了崩溃按钮。我假设添加UI是一个微不足道的部分,它是。然而,似乎Crashlytics没有完全初始化,直到func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool
之后的某个点,这在文档中并不清楚。
我将强制崩溃的线移动到我的主视图控制器的viewDidLoad()
中,崩溃几乎立即出现在Crashlytics仪表板中。
Crashlytics正在停运,请参阅Status。