Xcode的Architectures和Valid Architectures的区别

本文详细解析了Xcode中ValidArchitectures配置项的作用及不同设置对应用部署目标的影响。对比了包含64位和仅包含32位架构的应用在性能和兼容性方面的差异。

Architectures

这代表,在这个项目里你想要Xcode编译的目标设备列表。

Valid Architectures

还不是太明确这个设置的意图,但是一般来说是不需要更改的。


在Xcode5.0里的Valid Architectures 设置里,有2个选项:

  1. 默认为standard architectures (including 64-bit)(armv7,armv7s,arm64),这样设置,你的Deployment target最低只能设置为 6.0,(在Xcode5.0.1 之后,最低能够兼容IOS 5.1.1);

  2. standard architectures (armv7,armv7s),这样设置,你的Deployment target最低能设置为 4.3;

原因解释如下:

使用standard architectures (including 64-bit)(armv7,armv7s,arm64)参数,
则打的包里面有32位、64位两份代码,
在iPhone5s(iPhone5s的cpu是64位的)下,会首选运行64位代码包,
其余的iPhone(其余iPhone都是32位的,iPhone5c也是32位),
只能运行32位包,
但是包含两种架构的代码包,只有运行在ios6,ios7系统上。
这也就是说,这种打包方式,对手机几乎没啥要求,但是对系统有要求,即ios6以上。

而使用standard architectures (armv7,armv7s)参数,
则打的包里只有32位代码,
iPhone5s的cpu是64位,但是可以兼容32位代码,即可以运行32位代码。但是这会降低iPhone5s的性能,原因下面的参考有解释。
其余的iPhone对32位代码包更没问题,
而32位代码包,对系统也几乎也没什么限制。

所以总结如下:
要发挥iPhone5s的64位性能,就要包含64位包,那么系统最低要求为ios6。
如果要兼容ios5以及更低的系统,只能打32位的包,系统都能通用,但是会丧失iPhone5s的性能。


转载于:https://my.oschina.net/u/2330410/blog/401880

当在Xcode 16.4上传时出现 “Validation failed”,并提示 “No architectures in the binary. Lipo failed to detect any architectures in the bundle executable.” 错误,通常是由于二进制文件中缺少架构信息所导致。以下是一些可能的解决办法: ### 检查Build Settings 确保项目的Build Settings中包含了正确的架构设置。在Xcode中,选择项目文件,然后选择对应的Target,在Build Settings里找到 “ArchitecturesValid Architectures” 选项。 - “Architectures” 应该包含你想要支持的架构,如 “Standard Architectures (arm64, armv7)”。 - “Valid Architectures” 也应该Architectures” 保持一致。 ### 清理项目Derived Data 有时候,缓存数据可能会导致问题。可以通过以下操作清理项目Derived Data: - 选择 “Product” -> “Clean Build Folder” 清理项目。 - 关闭Xcode,然后删除Derived Data文件夹。Derived Data通常位于 `~/Library/Developer/Xcode/DerivedData`。删除该文件夹后,重新打开Xcode并重新构建项目。 ### 检查依赖库 如果项目中使用了第三方库,确保这些库支持所需的架构。有时候,某些库可能只支持特定的架构,这可能会导致二进制文件缺少架构信息。可以尝试更新这些库到最新版本,或者检查它们的文档以确保正确配置。 ### 检查Build Phases 在项目的Build Phases中,检查是否有自定义的脚本或操作影响了二进制文件的生成。确保这些脚本没有意外地移除了架构信息。 ### 示例代码(如果有相关脚本) 如果怀疑是自定义脚本导致的问题,可以检查类似以下的脚本: ```bash # 示例脚本,检查是否有移除架构的操作 # 这里只是示例,实际脚本可能不同 if [ -n "$CUSTOM_SCRIPT" ]; then # 检查脚本内容是否有移除架构的操作 grep "lipo -remove" $CUSTOM_SCRIPT fi ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值