带有Static Lib的iOS应用程序仅在启动Archive Build加载Ad Hoc时崩溃.无法在Debugger中重现

Cli*_*udo 12 iphone ios xcode4

我意识到这是一个延伸,我不能提供太多的信息来帮助,但我伸手去拿任何东西.我的应用程序已经持续发展3年,从未见过这样的事情.我最近向Apple发布了一个小点发布版本,现在两次因为所有设备上的Crashing on Launch而被拒绝了吗?

崩溃报告指向静态库中的一些代码,但关键行没有得到符号化.试过Atos没有运气.

关键是我有7个设备,我已经在我能想到的每种模式下测试了应用程序,特别是没有连接到任何东西:Wifi-OFF,AirplaneMode-ON,位置服务-OFF.我永远不能模拟他们声称看到的东西,这是每次发布时App崩溃?!

我在AAPL开发论坛中发现了一个听起来相似的报告,但他从来没有得到任何解释.他提交了一个带有大量登录信息的应用程序,并要求他们发送日志.他们得到了那个版本并且......在几小时内就批准了.

有人有主意吗.我需要发布这个版本.


注意:已解决


结果证明这不是一个薄弱的环节问题.我们只是在使用Brad建议的归档版本的Ad Hoc分发运行应用程序时看到了崩溃...所以这很有帮助.

然而,分辨率结果是我在这里列出的一些编译器标志:https: //stackoverflow.com/a/10302012/754494

Bra*_*son 12

我会重新发布并扩展我上面的评论,以便这个问题可以得到一个可接受的答案.

我最近在构建我的GPUImage框架时遇到了类似的情况.在归档时,构建过程似乎与通过Xcode在设备上构建和直接安装应用程序时略有不同.

这可以通过构建和归档应用程序,然后选择分发它以进行临时或企业分发来公开.拿起.ipa并将其放在iTunes中,然后手动将其加载到您的某个测试设备上.以这种方式准备的应用程序的行为可能与通过Xcode构建和安装的应用程序的行为不同,并且应该更接近提交审阅的构建将如何行动.

就我而言,问题是由于缺乏适当的弱连接.在比iOS 4.3更新的SDK上,如果您希望有条件地使用较新的SDK中存在但在较旧的SDK中缺少的类和函数,则不再需要弱链接整个框架.如果您的目标是4.0及更高版本,则链接器现在应该执行类级和功能级弱链接.

但是,对于使用我的静态库的人来说,这是失败的,静态库会对iOS 5.0中新纹理缓存函数的运行情况进行运行时检查,但它只在这些存档的构建中失败.我在针对4.x设备的所有测试中都没有看到它,因为这是通过Xcode安装完成的.最后,我需要让用户明确地弱化整个Core Video框架的链接,以便使用这个框架的应用程序在通过iTunes存档和安装时正常运行.

请注意,这不是由于Release vs. Debug构建配置,因为我尝试在通过Xcode部署到设备时在我的构建方案中切换它们,并且它没有区别.构建和链接存档应用程序的方式有所不同.

  • 布拉德谢谢你.我们还没有解决它,但很确定这是问题所在.只需要在我们的Build Settings post 4.3中研究弱链接的正确配置.通过AdHoc运行Archived构建最终为我们提供了一种可靠的重现方式.从来没有需要这个,但显然如果您使用或构建库是一个关键步骤. (3认同)