应用程序在iOS 9中崩溃,但在iOS 10中没有

时间:2016-12-15 14:19:09

标签: ios objective-c xcode

我有一个记录视频的应用程序,并使用extern libs作为FMMPEG和x264。所有extern库都使用iOS 9.2 SDK和所有有效的体系结构进行编译。

在我决定使用iOS 10 SDK作为Base SDK并使用iOS的更新方法(在更新Xcode到8.X版本之后)替换iOS 10中的弃用方法之前,它工作正常。此刻我有这个构建设置:

Build Settings

正如我所说,应用程序使用extern libs,这个libs是用iOS 9.2 SDK版本编译的(我决定它是为了避免警告,因为我的应用程序的minimun支持的版本是9.2)。好吧,当应用程序在iOS 10中运行时,它运行没有错误,但是当应用程序在iOS 9中运行并且我开始录制视频时,应用程序崩溃总是在FFMPEG lib中的浮动操作中(如果我编辑FFMPEG源代码并转换浮动在操作之前,值为整数,应用程序在下一个浮点操作中崩溃,因此它不是解决方案)。

问题是:

  

当我在Xcode中使用iOS 10.X SDK版本编译应用时,只会崩溃,   当我配置在Xcode中使用iOS 9.X SDK版本进行编译和   在iOS 9中安装应用程序,它不会崩溃。

解决方案可能是:使用iOS 9.X SDK在Xcode中编译,但我不能使用iOS 9.X SDK版本来创建应用程序,我使用仅在iOS中的框架10作为UserNotifications。

当然,我总是在运行时检查iOS版本:

if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 10.0) {...}

摘要:

使用iOS 10.X SDK + iOS编译的应用程序9 =崩溃

使用iOS 9.X SDK + iOS 9编译的应用程序=无崩溃(但不能解决方案)

崩溃代码:

  

代码= EXC_ARM_BREAKPOINT,子码= 0xe7ffdefe

1 个答案:

答案 0 :(得分:0)

(代表OP发布)

问题解决了。当我检查日志时,我看到了下一个错误:

dyld: Symbol not found: ___gesf2 

问题在于应用程序在32位(armv7& armv7s)中运行应用程序时在AddressBook Framework中搜索符号。解决方案是从项目中删除此框架并重新编译它。