编译报错 Undefined symbols for architecture i386:
原因:i386是代表模拟器,显示i386错误说明静态库不支持模拟器,只支持真机。友盟最新SDK可能不支持模拟器i386某个设备。所以直接用模拟器run会导致编译报错。
解决办法:在Build Settings —> Architectures —> build active architecture only —> Debug改为Yes,只编译当前版本,速度较快。而设置为no时,会编译所有的版本。如图:
这个是设备对应的architecture:
armv6:iPhone 2G/3G,iPod 1G/2G
armv7:iPhone 3GS/4/4s,iPod 3G/4G,iPad 1G/2G/3G
armv7s:iPhone5, iPod5
arm64:iPhone5s,ipad air,ipad mini2
armv6, armv7, armv7s,arm64是ARM CPU的不同指令集,原则上是向下兼容的。,比如你设置此值为yes,用iphone4编译出来的是armv7版本的,iphone5也可以运行,但是armv6的设备就不能运行。
所以,一般debug的时候可以选择设置为yes,release的时候要改为no,以适应不同设备。