某些 iOS 模拟器的 CocoaPods 库构建错误

CocoaPods libraries errors building for some iOS simulators

短错误:

file was built for archive which is not the architecture being linked (i386)

展开:
对于某些模拟器,我在构建项目时收到以下错误:

ld: warning: ignoring file /Users/admin/Library/Developer/Xcode/DerivedData/myApp-ekwldvjyuxwkykbareyvvydbtero/Build/Products/Debug-iphonesimulator/libFSCalendar.a, file was built for archive which is not the architecture being linked (i386): /Users/admin/Library/Developer/Xcode/DerivedData/myApp-ekwldvjyuxwkykbareyvvydbtero/Build/Products/Debug-iphonesimulator/libFSCalendar.a ld: warning: ignoring file /Users/admin/Library/Developer/Xcode/DerivedData/myApp-ekwldvjyuxwkykbareyvvydbtero/Build/Products/Debug-iphonesimulator/libGBDeviceInfo.a, file was built for archive which is not the architecture being linked (i386): /Users/admin/Library/Developer/Xcode/DerivedData/myApp-ekwldvjyuxwkykbareyvvydbtero/Build/Products/Debug-iphonesimulator/libGBDeviceInfo.a ld: warning: ignoring file /Users/admin/Library/Developer/Xcode/DerivedData/myApp-ekwldvjyuxwkykbareyvvydbtero/Build/Products/Debug-iphonesimulator/libSCLAlertView-Objective-C.a, file was built for archive which is not the architecture being linked (i386): /Users/admin/Library/Developer/Xcode/DerivedData/myApp-ekwldvjyuxwkykbareyvvydbtero/Build/Products/Debug-iphonesimulator/libSCLAlertView-Objective-C.a ld: warning: ignoring file /Users/admin/Library/Developer/Xcode/DerivedData/myApp-ekwldvjyuxwkykbareyvvydbtero/Build/Products/Debug-iphonesimulator/libSSKeychain.a, file was built for archive which is not the architecture being linked (i386): /Users/admin/Library/Developer/Xcode/DerivedData/myApp-ekwldvjyuxwkykbareyvvydbtero/Build/Products/Debug-iphonesimulator/libSSKeychain.a Undefined symbols for architecture i386: "_OBJC_CLASS_$_FSCalendar", referenced from: objc-class-ref in VCalendarView.o "_OBJC_CLASS_$_GBDeviceInfo", referenced from: objc-class-ref in VEMailView.o objc-class-ref in DataClass.o "_OBJC_CLASS_$_SCLAlertView", referenced from: objc-class-ref in VAlerts.o "_OBJC_CLASS_$_SCLAlertViewBuilder", referenced from: objc-class-ref in VAlerts.o "_OBJC_CLASS_$_SCLAlertViewShowBuilder", referenced from: objc-class-ref in VAlerts.o "_OBJC_CLASS_$_SSKeychain", referenced from: objc-class-ref in VDescriptionView.o ld: symbol(s) not found for architecture i386 clang: error: linker command failed with exit code 1 (use -v to see invocation)

它适用于 iPhone 6 Plus 模拟器 9.3.0 但不适用于 iPhone 5s。为什么?我有 $(inherited) Other Linker Flags 选项。

我找到了解决方案。

我删除了目录 /Users/admin/Library/Developer/Xcode/DerivedData/myApp-ekwldvjyuxwkykbareyvvydbtero/Build(在CocoaPods的库上右击>Show in Finder,然后找到它的父目录)重新全部重建。 Xcode 重新创建了所有现在可用的库。所有构建首选项都与默认值相同。

我通过删除DerivedData目录解决了这个问题。

步骤:

  1. 在Xcode中,转到菜单栏Window项目.

  2. 项目window中,选择左边的项目。

  3. 单击删除... 按钮以获取派生数据。当要求确认时,单击 删除

  4. 重建项目。


对于Xcode8,请看这个问答: