我有一个记录视频的应用程序,并使用extern libs作为FMMPEG和x264。所有extern库都使用iOS 9.2 SDK和所有有效的体系结构进行编译。
在我决定使用iOS 10 SDK作为Base SDK并使用iOS的更新方法(在更新Xcode到8.X版本之后)替换iOS 10中的弃用方法之前,它工作正常。此刻我有这个构建设置:
正如我所说,应用程序使用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
答案 0 :(得分:0)
(代表OP发布)。
问题解决了。当我检查日志时,我看到了下一个错误:
dyld: Symbol not found: ___gesf2
问题在于应用程序在32位(armv7& armv7s)中运行应用程序时在AddressBook Framework中搜索符号。解决方案是从项目中删除此框架并重新编译它。