Xcode 9中编译的App在iOS9和iOS10启动时崩溃-Dyld:找不到符号

gui*_*ido 1 xcode ios swift alamofire xcode9

当使用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
Run Code Online (Sandbox Code Playgroud)

如您所见,我正在使用Alamofire。我的应用程序的开发目标是9.3,而Alamofire的开发目标也是9.3。BaseSDK是iOS11(因为它是Xcode 9)。

经过研究后,我认为这不是Alamofire的问题,而是Xcode的问题。这些是我发现的一些类似问题,但是尝试了所有提供的解决方案(包括标准的clean / clean build文件夹/删除派生数据)后,它们似乎都不起作用:

是否有人对此有解决方案,然后又回滚到Xcode 8?

gui*_*ido 5

找到了解决方案。它与同一主题的其他帖子类似,但有所不同。这就是我的工作方式:

  • 将Foundation.framework添加到Alamofire iOS目标的链接框架和库(而不是您项目的目标)
  • 将其设为可选。(我尝试了必填项,但这没有用)。