在macOS守护程序上使用Crashlytics

时间:2018-08-17 13:51:57

标签: macos crashlytics google-fabric

我有一个与Crashlytics集成的macOS应用程序。如果我以代理身份运行它,那么一切似乎都可以正常工作。但是当我将其作为守护程序运行时,崩溃和错误不会显示在Web面板上。

我在想问题可能是crashlytics使用的不是守护程序安全的框架。 Apple documentation关于该主题的内容说:

  

如果守护程序使用的不是守护程序安全的框架,则可以运行   陷入各种各样的问题。

这真的是问题吗?有解决方法,我可以使它正常工作吗?

1 个答案:

答案 0 :(得分:2)

此处是Apple平台上Crashlytics SDK的前维护者。但是,我已经有一段时间没来公司了,所以我的信息可能已经过时了。您绝对应该向他们寻求帮助。但是,我仍然会尝试一下。

过去,其他许多人都要求这种功能,并且据我所知,已经成功地将Crashlytics集成到了非UI流程中。不过,有些事情需要提防。我也知道守护程序安全的问题,这可能是个问题。但是,我不确定它可能如何表现出来。

当您说代理vs守护程序时,您是在谈论按进程还是按用户启动的作业,还是其他?我可以肯定地说的一件事是,Crashlytics不支持同时运行相同bundle id的多个进程。如果可以同时运行多个副本,则无法进行此工作。即使它看起来有时确实可以工作,但最好情况下仍无法可靠地工作,甚至可能在最坏的情况下导致严重的问题(潜在的崩溃)。

正确运行绝对必要的一件事是主运行循环。如果没有一个,Crashlytics绝对无法正常工作。

Crashlytics还需要一个Info.plist。实际上,可以将其添加到独立的二进制文件中,但通常会使人绊倒。我猜你想通了。

在macOS上,Crashlytics integrates与AppKit一起使用,以改善异常报告。如果我没记错的话,有可能完全跳过此集成,如文档所述。

Crashlytics依赖的另一件事是标准用户文件系统主目录。标准内部结构必须存在一个~\Library目录。这对于启动的守护程序可能是有问题的,因为它们是作为root运行的。

记住这些事情,我很确定有可能使这项工作成为可能。可能有些事情我已经不记得了,因为已经有一段时间了。但是,我绝对不知道的一件事是这是一个灰色区域。它可行,但不是明确的设计目标。现在可能不受支持。在运送某些东西之前,您绝对应该与他们联系。