【问题标题】:mach-o, but wrong architecture AFNetworking 3.0mach-o,但架构错误 AFNetworking 3.0
【发布时间】:2020-05-03 04:07:42
【问题描述】:
有人知道错误“mach-o, but wrong architecture”吗?我已经构建了一个自定义框架(其中包括一些其他 SDK)并尝试集成到客户端项目中。当我在模拟器中运行时,我可以在客户端应用程序中使用/访问自定义框架的方法,但应用程序在设备上运行时崩溃了。任何建议都会非常有帮助。谢谢
这是日志:-
dyld:库未加载:@rpath/AFNetworking.framework/AFNetworking
参考自:
/private/var/containers/Bundle/Application/644C95E8-6CFD-48BB-861E-7BCECB08FE43/abc_client.app/Frameworks/XYZ_iOS.framework/XYZ_iOS
原因:没有找到合适的图片。发现:
/private/var/containers/Bundle/Application/644C95E8-6CFD-48BB-861E-7BCECB08FE43/abc_client.app/Frameworks/XYZ_iOS.framework/Frameworks/AFNetworking.framework/AFNetworking:
mach-o,但架构错误
/private/var/containers/Bundle/Application/644C95E8-6CFD-48BB-861E-7BCECB08FE43/abc_client.app/Frameworks/XYZ_iOS.framework/Frameworks/AFNetworking.framework/AFNetworking:
mach-o,但架构错误
【问题讨论】:
标签:
ios
ld
xcode11
afnetworking-3
mach
【解决方案1】:
为 Cocoa 平台构建时,Elements 允许您选择构建不同的 CPU 架构,具体取决于您希望支持的目标设备和操作系统版本。 Elements 允许创建所谓的“通用二进制文件”或“胖二进制文件”,其中可以包含用于多个平台(例如 32 位和 64 位)的可执行代码。 source
该错误表示您的框架中缺少架构。
列出框架中的架构:
有两种终端工具:
- 文件
文件 /path/to/MyFramework.framework/MyFramework source
示例输出:
path/to//MyFramework.framework/MyFramework: Mach-O universal binary with 5 architectures
path/to//MyFramework.framework/MyFramework (for architecture x86_64): Mach-O 64-bit dynamically linked shared library x86_64
path/to//MyFramework.framework/MyFramework (for architecture i386): Mach-O dynamically linked shared library i386
path/to//MyFramework.framework/MyFramework (for architecture armv7): Mach-O dynamically linked shared library arm
path/to//MyFramework.framework/MyFramework (for architecture armv7s): Mach-O dynamically linked shared library arm
path/to//MyFramework.framework/MyFramework (for architecture arm64): Mach-O 64-bit dynamically linked shared library
- 脂肪
lipo -info /usr/lib/libiodbc.a source
- 在设备上启动时,框架必须包含
arm64 或
armv7架构
- 在模拟器上启动时,框架必须
包括
x86_64架构
解决方案
- 检查 Podfile 中的架构是否有任何修改
- 检查架构键的项目构建设置是否有任何修改。