我们有一个使用静态Lib建立的应用程序,我们也正在构建用于分发。 App和Lib在Xcode调试器中运行正常,或者在Xcode调试会话中加载到设备上。一旦我们在设备上放置了Ad Hoc Archive构建,App就会崩溃。控制台日志语句表明它在Lib代码中崩溃,但崩溃报告没有象征Lib代码。
- 无法在Xcode Simulator中重现。
- Guard malloc,Guard Edges什么都没显示(但这些只能在模拟器中运行)。
- 没有泄漏
- 使用Xcode 4.3.2
- 应用目标4.3或更高版本。
- Lib目标3.0或更高版本。
- 其他链接器标志= -ObjC
- Lib在Target“Link Binaries with Libraries”中设置为“Optional”
- Thumb支持关闭(使用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)
我们在其他地方看到了带有Recursion的静态库的问题。但是我们的Lib没有任何递归。
难倒,需要更多的想法。
弄清楚了!! 在桌子上撞了4天后。我们不确切地知道它为什么会起作用但确实如此。如果它对其他人有帮助,这里是为我们解决它的设置。在Static Library Project的Build Settings的“Deployment”部分中设置它们:
SET "STRIP LINKED PRODUCT" (STRIP_INSTALLED_PRODUCT) = NO
SET "STRIP STYLE" = DEBUGGING SYMBOLS.
我们通过反复试验发现了这一点,但现在注意到在线重新设置用于构建iOS静态库的Xcode项目的一些讨论使用此设置。没有讨论为什么,但确实如此。
如果有人对这些lib设置为什么修复它有任何想法,你可能想在这里评论它。
我有类似的问题,并尝试更改项目构建设置,但它不适合我。最终通过更改发布的编译器优化级别设置解决了我的问题:
在Build Settings中,转到LLVM编译器4.2 - 代码生成部分,查找优化级别选项并将Release设置从Fastest,Smallest [-Os]更改为None [-O0]。
希望这可以帮助!
AdHoc(Release)和Debug之间的构建设置不同的可能性很高。
您是否仔细检查了所有构建设置值?
特别是看ARC(自动参考计数)设置。
通过加载Xcode调试器来调试您的Production构建(可能设置为Release Build,其优化和代码生成设置与您当前正在测试的Debug构建完全不同)。