我正在 OS X 10.11.6 上使用 Xcode 8.2.1 为 iOS 10.2 构建 iPad 应用程序,当我尝试调用使用由 Carthage 构建的特定依赖项的代码时,应用程序崩溃并且似乎表明框架二进制文件不在内存中,如预期的那样:
dyld: lazy symbol binding failed: Symbol not found: __TFC12ObjectMapper6MapperCfT7contextGSqPS_10MapContext___GS0_x_
Referenced from: /Users/me/Library/Developer/CoreSimulator/Devices/<UUID>/data/Containers/Bundle/Application/<UUID>/AppName.app/Frameworks/AlamofireObjectMapper.framework/AlamofireObjectMapper
Expected in: /Users/me/Library/Developer/CoreSimulator/Devices/<UUID>/data/Containers/Bundle/Application/<UUID>/AppName.app/Frameworks/ObjectMapper.framework/ObjectMapper
dyld: Symbol not found: __TFC12ObjectMapper6MapperCfT7contextGSqPS_10MapContext___GS0_x_
Referenced from: /Users/me/Library/Developer/CoreSimulator/Devices/<UUID>/data/Containers/Bundle/Application/<UUID>/AppName.app/Frameworks/AlamofireObjectMapper.framework/AlamofireObjectMapper
Expected in: /Users/me/Library/Developer/CoreSimulator/Devices/<UUID>/data/Containers/Bundle/Application/<UUID>/AppName.app/Frameworks/ObjectMapper.framework/ObjectMapper
我正在使用 Alamofire进行 HTTPS 调用,以及 AlamofireObjectMapper (以及扩展为 ObjectMapper )来解析响应 JSON。它在此应用程序/项目的许多先前运行中运行良好,并且似乎自发地开始崩溃。
奇怪的是,Alamofire 调用do 发出请求并接收响应,但在解析响应(其格式或数据未更改)时发生崩溃。因此,很明显,包括 Carthage 构建的框架适用于某些依赖项,但不适用于其他依赖项。我正在指定 ==
在我的 Cartfile
以及使用 Cartfile.resolved
固定所有依赖项的确切版本。
我尝试过的
- 将代码回滚到已知良好的提交以验证它不是新引入的错误代码更改
- 退出并重新启动 Xcode
- 退出并重新启动 iOS 模拟器
- 清理 Xcode“派生数据”文件夹
- 重启机器
- 删除并重建 Carthage 依赖项 (
carthage update --platform iOS
) - 验证
ObjectMapper.framework
包含在目标的 Link Binary With Libraries 构建阶段以及其他 Carthage 构建的框架中: - 已验证路径
$(SRCROOT)/Carthage/Build/iOS/ObjectMapper.framework
包含在运行脚本构建阶段的输入文件中以运行/usr/local/bin/carthage copy-frameworks
,以及其他几乎相同(且有效)的框架路径: - 清理产品并使用 Xcode 重新构建
- 已验证 ObjectMapper 框架二进制文件存在于
<DerivedData>/AppName.app/Frameworks/ObjectMapper.framework/ObjectMapper
中构建的应用程序包中
我无法理解为什么这个框架显然正在构建、包含但未加载。如何更深入地调试此问题?
最佳答案
我遇到了同样的问题。在 AlamofireObjectMappter Github 上检查这个问题。
https://github.com/tristanhimmelman/AlamofireObjectMapper/issues/179
AlamofireObjectMapper 可能不支持 ObjectMapper 最新版本...修复版本 2.2.1 on carthage github "Hearst-DD/ObjectMapper""2.2.1"
关于ios - 如何调试 iOS 框架 dyld "lazy symbol binding failed"崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41372436/