虽然接受的答案已经解决了这个问题,这里是多一点,因为这些问题是关于建筑,从字面上二进制文件
1的iOS建筑
armv64:iPhoneX ,iPhone 5S-8,iPad的空气 - iPad的临
的ARMv7:iPhone3GS的-5C,iPad的WIFI(第4代)
的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)。 对于“否”,它会将您的框架构建到“有效体系结构”列表中。
默认情况下,在调试模式下,它为“是”;并且在更多版本中,它是“否”,它可以在调试模式下节省编译时间,并确保您的发布项目框架可以在您指定的所有体系结构上运行。
这就是为什么接受的答案是通过强制框架为所有架构构建起来的,但是通过阅读更多内容,您将会知道背后的内容,并且肯定可以节省编译框架的时间。当然,对自己也有更多的控制。
因此,如果您正在使用的框架,并要导入到另一个项目,如果你有只建“是”与模拟器(I386或x86_64),然后导入编译框架有源体系与您的项目建立有源架构只有“是”与真实设备(armv),您将遇到此错误。
展望错误描述:
文件是为x86_64的内置这是不被连接的架构(I386)将意味着你建立在64位模拟器的框架,您的合并项目用32位模拟器构建。
而更常见的是:
框架文件是专为x86_64的这不是架构 被链接(arm64): 这意味着你的框架是建立在模拟器而您的合并项目是用真实设备构建的。
3.提取框架
一个常见的做法是右键单击该框架并选择在Finder中显示,而大多数开发商保持搜索开放,新编译的框架将替换旧的,不关闭Finder并重新打开。是的它是正确的,但如果您在两者之间切换了构建目标设备,框架将导致不同的文件夹。有时候你认为你已经编译了你的框架,但实际上它在另一个文件夹中。我的建议总是选择在Finder中显示,以防止您导入的框架不是最新的。
两个不同的文件夹:调试-的iPhoneOS和调试,iphonesimulator
这本身似乎并不足够。我已经添加了它们,以便有效体系结构读取像这样:arm64 armv7 armv7s i386 x86_6 ...仍然出现相同的错误。 – BadmintonCat 2014-11-21 07:33:44
好吧,我更进一步......我必须明确地将Build Active Architecture设置为NO,因为它包含用于调试和发布的混合值。但是警告消失了:我的框架API在应用程序项目中找不到。它看起来像框架类没有链接,所以我没有得到框架API的自动完成提示,编译失败。什么可能是错的? – BadmintonCat 2014-11-21 08:04:24
您可以为调试和发布设置不同的设置,是不是? – dogsgod 2014-11-23 08:52:11