Architecture and Valid architectures的区别和设置

Architecture就是你当前工程所选的版本

Valid architectures则是可用的版本集合

比如说你的Architecture是armv7,而Valid architectures是armv7,armv6,

这样的话打出来的是支持的Armv7的,但是v6并没有支持

当然两个都可以相同的,可以多写

就比如这样

JYyyn.png

这些指令说的都是iPhone的CPU指令集,而这个对应关系是这样的

ARMv8/ARM64 = iPhone 5s, iPad Air, Retina iPad Mini
ARMv7s = iPhone 5, iPhone 5c, iPad 4
ARMv7  = iPhone 3GS, iPhone 4, iPhone 4S, iPod 3G/4G/5G, iPad, iPad 2, iPad 3, iPad Mini  
ARMv6  = iPhone, iPhone 3G, iPod 1G/2G

所以就像前面说的

你的Valid Architectures设置的支持arm指令集版本有:armv7/armv7s/arm64,对应的Architectures设置的支持arm指令集版本有:armv7s,这时Xcode只会生成一个armv7s指令集的二进制包。

而这个有什么作用

大家应该碰到过这种情况

屏幕快照 2015-03-09 上午10.00.24.png

这都是因为设置的不正确造成的,所以可以试试修改这两个选项,或者换成对应支持的模拟器,就比如说他只支持到armv7,那么你就用iphone4的模拟器,而不要用iphone6的模拟器.

有时候还有那个i386,这个还是类似的,需要加上i386

ld: warning: ignoring file /Users/admin/Desktop/huframework.framework/huframework, missing required architecture i386 in file /Users/admin/Desktop/huframework.framework/huframework (3 slices)
Undefined symbols for architecture i386:
  "_OBJC_CLASS_$_mainViewController", referenced from:
      objc-class-ref in AppDelegate.o
ld: symbol(s) not found for architecture i386
clang: error: linker command failed with exit code 1 (use -v to see invocation)

其他情况就具体情况再分析


Last modification:January 1st, 1970 at 08:00 am
如果看了这个文章可以让你少加会班,可以请我喝杯可乐
已打赏名单
微信公众号

Leave a Comment