繁体   English   中英

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

[英]App Compiled in Xcode 9 crashes on startup for iOS9 and iOS10 - dyld: Symbol not found

当使用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的问题。 这些是我发现的一些类似问题,但是尝试了所有提供的解决方案(包括标准的clean / clean build文件夹/删除派生数据)后,它们似乎都不起作用:

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

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

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

我只是想出了问题。 在我们的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更改为可选,就像其他帖子所建议的那样,也解决了该问题,但不适用于我们的构建过程,因为再次运行pod install会覆盖更改并再次要求更改。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM