使用XCode8编译时,我的应用程序在所有iOS版本上运行良好。现在,当使用Xcode 9进行编译时,它在iOS11设备上运行良好,但它会在运行iOS10和iOS9的模拟器和设备上崩溃。我在控制台中收到以下消息:
dyld: Symbol not found: _OBJC_CLASS_$_NSURLSessionStreamTask
Referenced from: /private/var/containers/Bundle/Application/F3BE9A47-374A-4BEA-AC7F-A01F4B0FD87F/MyApp.app/Frameworks/Alamofire.framework/Alamofire
Expected in: /System/Library/Frameworks/Foundation.framework/Foundation
in /private/var/containers/Bundle/Application/F3BE9A47-374A-4BEA-AC7F-A01F4B0FD87F/MyApp.app/Frameworks/Alamofire.framework/Alamofire
正如您所看到的,我正在使用Alamofire。我的应用程序的开发目标是9.3,Alamofire的开发目标也是9.3。 BaseSDK是iOS11(因为它是Xcode 9)。
经过一些研究后,我不认为这是一个Alamofire问题,而是一个Xcode问题。这些是我发现的一些类似的问题,但是尝试了所有提供的解决方案(包括标准的清洁/清理构建文件夹/删除派生数据),它们似乎都不起作用:
有没有人有这方面的解决方案,除了回滚到Xcode 8?
答案 0 :(得分:5)
找到解决方案。它与同一主题上的其他帖子类似,但有一点扭曲。这就是我的工作方式:
答案 1 :(得分:0)
我刚发现问题。在我们的Podfile中,我们有以下设置:
post_install do |installer|
installer.pods_project.targets.each do |target|
target.build_configurations.each do |config|
config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '9.3'
end
end
end
当我删除它时,崩溃消失了。
像其他帖子一样,将Foundation更改为optional也可以解决该问题,但是由于再次运行pod install会覆盖更改并再次需要它,因此不适用于我们的构建过程。