应用程序从 Testflight 启动然后关闭

App launching and then closing from Testflight

我有一个应用程序 运行 在调试器 运行 时运行得非常好。上传到 TestFlight 时一切顺利,我可以使用 Testflight 应用程序下载。

但是,当我启动该应用程序时,它会在关闭前显示启动画面 20 秒左右。没有生成这样的崩溃报告,但能够从 CrashReporter 中额外添加一个“.ips.beta”文件,它看起来像这样:

Exception Type:  00000020
Exception Codes: 0x000000008badf00d
Exception Note:  SIMULATED (this is NOT a crash)
Highlighted by Thread:  0

Application Specific Information:
com.some.app failed to launch after 20.00s (launchIntent: foreground-interactive)

Elapsed total CPU time (seconds): 30.760 (user 30.760, system 0.000), 77% CPU 
Elapsed application CPU time (seconds): 0.080, 0% CPU

Filtered syslog:
None found

Thread 0 name:  Dispatch queue: com.apple.libdispatch-manager
Thread 0:
0   libsystem_kernel.dylib          0x3805e3c0 0x38048000 + 91072
1   libdispatch.dylib               0x37f749a6 0x37f64000 + 68006
2   libdispatch.dylib               0x37f66b2e 0x37f64000 + 11054

Thread 1 name:  Dispatch queue: com.apple.root.default-qos.overcommit
Thread 1:
0   libsystem_kernel.dylib          0x3805d54c 0x38048000 + 87372
1   libdispatch.dylib               0x37f727f0 0x37f64000 + 59376
2   libdispatch.dylib               0x37f727da 0x37f64000 + 59354

我可以看到它说“8 种糟糕的食物”并且它在能够初始化之前就关闭了 - 但是 - 它在控制台中没有产生任何语句,并且它 运行 在设备上绝对完美 运行 使用调试器,甚至当我安装临时副本时(从 Xcode 手动或使用 Fabric)。为什么它仅在来自 TestFlight 时才会失败?如果它工作正常,我该如何调试呢?它在每台设备上都失败了,否则它能够 运行 使用调试器。

我什至尝试在委托获得控制之前在 main() 方法中放置一个 NSLog 语句——这不会记录到控制台(我正在使用设备管理器查看原始设备日志)。此外,每次我启动该应用程序时,我都会在应用程序关闭前看到:

AppName[640]:侦听器连接收到虚假事件: { 计数 = 1,内容 = "XPCErrorDescription" => { 长度 = 18,内容 = "Connection invalid" }

这是什么意思?

原来是 TestFlight 应用程序瘦身错误,它正在破坏二进制文件:

https://forums.developer.apple.com/thread/17583