相关疑难解决方法(0)

如何防止iOS崩溃记者崩溃MonoTouch应用程序?

iOS中有很多iOS崩溃报告库,包括TestFlightHockeyApp.如果您不想依赖服务,您仍然可以使用PLCrashReporter之类的.绑定这些库是相当简单的,因为它们的公共API通常由几个具有多个初始化方法的类组成.

但是,在我们的应用程序中尝试使用TestFlight和更高版本的HockeyApp时,我们的应用程序开始随机崩溃.事实证明,这一个已知的问题报道的 若干 ,但Xamarin不发出警告,它是相对模糊的,我们发现它的艰辛的道路.

我们了解到所有iOS崩溃记录器都阻止Mono捕获空引用异常:

try {
    object o = null;
    o.GetHashCode ();
} catch {
    // Catch block isn't called with crash reporting enabled.
    // Instead, the app will crash.
}
Run Code Online (Sandbox Code Playgroud)

为什么会这样?引用Xamarin开发人员Rolf,

空引用异常实际上是SIGSEGV信号.通常单声道运行时处理它并将其转换为空引用异常,允许继续执行.问题是在ObjC应用程序中SIGSEGV信号是一件非常糟糕的事情(当它发生在托管代码之外时),因此任何崩溃报告解决方案都会将其报告为崩溃(并杀死应用程序) - 这在MonoTouch获得机会之前发生处理SIGSEGV,因此MonoTouch无法做到这一点.

我相信很多人在MonoTouch应用程序中使用TestFlight而不知道它会导致崩溃.
这不具讽刺意味吗?

如何使崩溃报告库不会崩溃MonoTouch应用程序?

c# crash-reports xamarin.ios ios testflight

50
推荐指数
1
解决办法
7472
查看次数

标签 统计

c# ×1

crash-reports ×1

ios ×1

testflight ×1

xamarin.ios ×1