带有静态库的iOS应用程序总是在启动Ad Hoc Archive Build时崩溃。 无法在Xcodedebugging器中重现

我们有一个使用静态库构build的应用程序,我们也在为分发而构build。 App和Lib在Xcodedebugging器中运行正常,或者通过Xcodedebugging会话在设备上加载。 一旦我们把设备上的Ad Hoc Archive构build起来,应用程序总是崩溃。 控制台日志语句表明它在Lib代码中崩溃,但崩溃报告不符号化Lib代码。

  • 无法在Xcode模拟器中重现。
  • Guard malloc,Guard Edge不显示任何东西(但是这些只能在模拟器中运行)。
  • 没有泄漏
  • 使用Xcode 4.3.2
  • 应用目标4.3或更高版本。
  • Lib目标3.0或更高版本。
  • 其他链接器标志= -ObjC
  • 在目标“与库链接二进制文件”中将Lib设置为“可选”
  • 拇指支持closures(使用LLVM)

在控制台上看到2个可能有用的例外,但是到目前为止,还没有在networking上做出任何有助于这个事情的东西:

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

我们看到其他地方的评论说,recursion静态库有问题。 但是我们的Lib没有任何recursion。

难住,需要更多的想法。

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

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

我们通过试验和错误发现了这一点,但现在注意到在线设置一个用于构buildiOS静态库的Xcode项目的一些讨论使用这个设置。 没有讨论为什么,但在那里。

如果任何人有任何想法,为什么这些lib设置修复它,你可能要在这里评论它。

我有一个类似的问题,并试图改变项目build设设置,但它不适合我。 通过更改发行版的编译器优化级别设置最终解决了我的问题:

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

希望这可以帮助!

AdHoc(Release)和Debug之间的构build设置不同的机会非常高。 你仔细检查过所有的生成设置值吗? 尤其要看ARC(自动引用计数)设置。

通过加载Xcodedebugging器,debugging您的Production版本(可能设置为Release Build,其版本与您正在testing的Debug版本相比,具有非常不同的优化和代码生成设置)。