虽然公认的答案已经解决了问题,但这里还有一点,因为问题是关于架构的,实际上是二进制文件
1. iOS 架构
armv64:iPhoneX、iPhone 5s-8、iPad Air - iPad Pro
armv7 : iPhone3Gs-5c, iPad WIFI(第四代)
armv6 : iPhone - iPhone3G
以上如果是真实设备
i386 : 32 位模拟器
x86_64 : 64 位模拟器
上面的列表是向下兼容的,也就是说iPhoneX也可以运行armv6,只是不能充分利用armv64的功能
更多关于 iOS 架构的信息可以在这里找到:
https://developer.apple.com/library/content/documentation/DeviceInformation/Reference/iOSDeviceCompatibility/DeviceCompatibilityMatrix/DeviceCompatibilityMatrix.html
2。什么是仅构建活动架构?
如果选择“是”,它只会将您的框架构建到“选定的设备”,无论是真实设备(armv)还是模拟器(x86_64 或 i386)。
对于“否”,它会将您的框架构建到您的“有效架构”列表中
默认情况下,在调试模式下为“是”;而在release more中则为“No”,这样可以节省debug模式下的编译时间,并保证你的release项目框架运行在你指定的所有架构上。
这就是为什么通过强制框架为所有架构构建而接受的答案起作用的原因,但是通过阅读更多内容,您将了解背后的内容,并且绝对可以节省编译框架的时间。当然,对自己也有更多的控制权。
所以,如果您正在开发一个框架,并且想要导入另一个项目,如果您使用 Build Active Architecture Only 编译框架),然后用Build Active Architecture Only“是”用a real device(armv)导入你的项目,你会遇到这个错误。 p>
查看错误描述:
文件是为 x86_64 构建的,它不是被链接的架构 (i386) 将意味着您在 64 位模拟器中构建您的框架,而您的合并项目使用 32位模拟器。
虽然更常见的是:
框架文件是为 x86_64 构建的,这不是架构
正在链接(arm64):
这意味着您的框架是在模拟器中构建的,而您的合并项目是使用真实设备构建的。
3.提取框架
通常的做法是右键单击框架并选择在Finder中显示,而大多数开发人员保持Finder打开,新编译的框架将替换旧框架, 无需关闭 Finder 并再次重新打开。是的,没错,但如果您在两者之间切换构建目标设备,框架将导致不同的文件夹。有时你认为你已经编译了你的框架,但实际上它在另一个文件夹中。我的建议是始终选择在 Finder 中显示,以防止您导入的框架不是最新的。
两个不同的文件夹:Debug-iphoneos 和 Debug-iphonesimulator