Valid Architectures & Architectures & Build Active Architecture Only

Valid Architectures与Architectures的区别

Valid Architectures 表示我们的工程支持的处理器类型,因为有的时候工程可能依赖于外界因素导致程序不是所有的处理器都支持,比如使用了非开源的库,而那个库只支持部分处理器类型。

Architectures 表示我们想让自己的程序支持的处理器类型,考虑到生成的包的大小,我们可能要选择几个支持的类型,而不是全部都支持。

当我们Archive准备发布应用的时候,Xcode会取Valid Architectures和Architectures的交集,生成最后的包。

Build Active Architecture only

Build Active Architecture only 这个选项主要目的是节省调试时Build的时间,因为我们Debug的时候一般来说只需要生成一种处理器架构的包就可以了,生成多个是浪费时间。

下面贴一下我测试的数据,Architectures为armv7 arm64,Valid Architectures为arm64 armv7 armv7s

使用模拟器编译:

Build Active Architecture only的debug设置为YES,lipo一下(lipo -info xxx.app/xxx),结果是

Non-fat file: viewControllerContainer is architecture: x86_64

Build Active Architecture only的debug设置为NO,结果是

Architectures in the fat file: viewControllerContainer are: i386 x86_64

看来即使是设置为NO,也不会编译出支持真机处理器体系结构的代码段。


在真机上在测试一下,机器是ipad2,处理器是armv7

Build Active Architecture only的debug设置为YES

Non-fat file: viewControllerContainer is architecture: armv7

Build Active Architecture only的debug设置为NO

Architectures in the fat file: viewControllerContainer are: armv7 arm64 


结论:Build Active Architecture only为YES的时候,Xcode只会根据active scheme来决定生成支持何种处理器的包,并且只支持一种处理器。

当为NO的时候,如果active scheme是模拟器,那么生成支持x86_64和i386的包,如果是真机,Xcode会取Valid Architectures与Architecture的交集,生成相应的包。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值