11

我们有一个使用静态库构建的应用程序,我们也在构建用于分发。App 和 Lib 在 Xcode 调试器中或通过 Xcode 调试会话加载到设备时运行良好。一旦我们将 Ad Hoc Archive 构建到设备上,应用程序总是会崩溃。控制台日志语句表明它在 Lib 代码中崩溃,但崩溃报告不代表 Lib 代码。

  • 无法在 Xcode 模拟器中重现。
  • Guard malloc,Guard Edges 什么都不显示(但这些只在模拟器中运行)。
  • 无泄漏
  • 使用 Xcode 4.3.2
  • 应用面向 4.3 或更高版本。
  • Lib 针对 3.0 或更高版本。
  • 其他链接器标志 = -ObjC
  • Lib 在目标“将二进制文件与库链接”中设置为“可选”
  • 拇指支持关闭(使用 LLVM)

在控制台上看到 2 个可能有用的异常,但到目前为止没有在网上打开任何对此有很大帮助的东西:

Application 'x' exited abnormally with signal 12: Bad system call: 12 (mostly)
Application 'x' exited abnormally with signal 12: Bad system call: 11 (rarely)

我们在其他地方看到了带有递归的静态库有问题的评论。但是我们的 Lib 中没有任何递归。

难倒,需要更多的想法。

4

4 回答 4

14

弄清楚了!!在桌子上敲了 4 天之后。我们不确切知道它为什么起作用,但确实如此。如果它对其他人有帮助,这里是为我们解决它的设置。在静态库项目的构建设置的“部署”部分中设置这些:

SET "STRIP LINKED PRODUCT" (STRIP_INSTALLED_PRODUCT) = NO
SET "STRIP STYLE" = DEBUGGING SYMBOLS.

我们通过反复试验发现了这一点,但现在注意到一些在线讨论重新设置用于构建 iOS 静态库的 Xcode 项目使用此设置。没有讨论为什么,但确实如此。

如果有人对为什么这些 lib 设置修复它有任何想法,您可能想在此处发表评论。

于 2012-04-24T16:26:38.520 回答
1

我遇到了类似的问题并尝试更改项目构建设置,但它对我不起作用。最终通过更改版本的编译器优化级别设置解决了我的问题:

在构建设置中,转到 LLVM 编译器 4.2 - 代码生成部分,查找优化级别选项并将发布设置从最快、最小 [-Os] 更改为无 [-O0]。

希望这可以帮助!

于 2013-02-06T12:24:09.417 回答
0

AdHoc (Release) 和 Debug 之间的构建设置不同的可能性非常高。您是否仔细检查了所有构建设置值?尤其是看看 ​​ARC(自动引用计数)设置。

于 2012-04-24T15:28:42.530 回答
0

调试,通过使用 Xcode 调试器加载您的生产版本(可能设置为发布版本,其优化和代码生成设置与您当前正在测试的调试版本非常不同)。

于 2012-04-24T16:25:54.497 回答