我正在通过按钮强制崩溃,而Firebase / Crashlytics似乎没有解决问题。
我的应用程序中有一些背景。
我的应用程序有两个App ID,一个ID供企业内部使用,另一个ID供应用商店使用。触发构建时会触发脚本,以便将正确的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,但仍然说我需要上载它。
更新:
Mike注意到带有
的日志[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
它说虽然我没有启用日志记录。很奇怪,但是没什么大不了的。
不幸的是,控制台仍然没有崩溃,现在我回到dSYM,以前只有2个条目时有4个条目。
注意:无崩溃用户的统计信息已更改,在缺少的dSYM下显示崩溃,但没有出现问题。
答案 0 :(得分:4)
我为解决此问题所做的事情
删除此行
Fabric.with([Crashlytics.self])
如果您在控制台中看到此消息
[Fabric] [Fabric +with] called multiple times. Only the first call is honored, please pass all kits you wish to initialize
最后,如果没有出现崩溃/ dSYM,则在构建阶段将其添加为运行脚本阶段。我将阶段命名为“ Uplaod dSYM”
"${PODS_ROOT}/Fabric/upload-symbols" -gsp "${PROJECT_DIR}/GoogleService-Info.plist" -p ios "${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}"
我通过转到构建日志来确认上传成功,找到“运行自定义Shell脚本'Upload 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
答案 1 :(得分:3)
什么不起作用
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并添加崩溃按钮的示例。我以为添加用户界面是一件微不足道的事情。但是,似乎Crashlytics直到func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool
之后才完全初始化,这在文档中还不清楚。
我将强制发生崩溃的行移到了主视图控制器的viewDidLoad()
中,崩溃几乎立即显示在Crashlytics仪表板中。
答案 2 :(得分:0)
Crashlytics发生故障,请参阅此处的Status。