uniapp xode iOS Architectures 打包问题

背景

uniapp 开发,使用xode打包。uniapp 版本是4.75,xode倒入的sdk包版本也是4.75. 开发开始时间是2025年9月份,一直使用正常,ios能正常上线。2026年3月份,xcode build 到模拟器可以运行,xcode build any ios device报错如下

xcode build any ios device报错如下

error: Build input file cannot be found: '/Users/chengliping/Library/Developer/Xcode/DerivedData/HBuilder-Hello-hikzonvvrnwucibhlperrntqsolq/Build/Products/Debug-iphoneos/RK数智化.app/RK数智化.debug.dylib'. Did you forget to declare this file as an output of a script phase or custom build rule which produces it? (in target 'RK数智化' from project 'HBuilder-Hello')

解决

在 Build Settings 中搜索 Excluded Architectures,确保 Debug 模式的 Any iOS SDK 下没有排除 arm64.

思考

模拟器要排除arm64。真机不要排出arm64的意思。
按原来的配置,xcode build any ios device可以排除arm64,现在不能排除arm64

  1. 架构差异

模拟器 (Simulator):使用 x86_64 (Intel Mac) 或 arm64 (Apple Silicon Mac) 架构
真机 (Device):使用 arm64 架构

  1. 问题的本质

2025年9月:Xcode 可能默认配置为模拟器排除 arm64,真机不排除
2026年3月:Xcode 或项目配置发生变化,导致真机构建时也排除了

真机配置 (Any iOS SDK)

不应排除任何架构(特别是 arm64)因为真机需要 arm64 架构

模拟器配置 (Any iOS Simulator)

应该排除 arm64 架构,因为:
Intel Mac:只需要 x86_64
Apple Silicon Mac:同时支持 x86_64 和 arm64,但模拟器运行时需要的是模拟器版本的 arm64,不是真机版本的 arm64

Architecture参数详解

在Xcode的BuildSetting中, Architecture参数扮演着至关重要的角色。这些参数决定了应用程序在编译和运行时所使用的处理器架构。正确理解各个Architecture参数的含义,对于确保应用程序在各种设备上顺畅运行至关重要。
【 1. Architectures 】
Architectures是指当前设备所支持的指令架构。在真实设备上,常见的架构包括 armV7 和 arm64。而在模拟器环境下,则可能包括 X86_64、 i386 以及 arm64(适用于M1设备)。
【 2. Build Active Architecture Only 】
这是指在编译过程中是否仅编译当前设备的指令架构。其值可设为 YES 或 NO。在 Debug 环境下,为提升编译效率,通常会选用 YES,意味着仅编译适用于当前设备的指令架构。而在 Release 环境下,为确保兼容性,会选择 NO,即编译适用于所有类型设备的指令架构。
【 3. Excluded Architecture 】
排除的架构是指那些在编译过程中将被忽略的指令架构。通过设置排除的架构,您可以确保编译结果不包含特定类型的指令。例如,如果您选择了 arm64 作为排除的架构,那么最终编译的产物将不会包含 arm64 指令架构。
【 4. VALID_ARCHS 】
VALID_ARCHS是由用户自行设定的可用架构集合。这一选项在 User-Defined 设置中占据最高优先级。即便Architectures支持众多架构,若VALID_ARCHS仅勾选了一小部分,实际可用的架构也仅限于这些被选中的部分。因此,通常建议将VALID_ARCHS的值与Architectures保持一致,以确保编译结果仅包含用户期望的指令架构。
【 5. EXCLUDED_ARCHS 】
在 Xcode12 的版本更新说明中,推荐使用 EXCLUDED_ARCHS 进行设置,而不是使用已被弃用的 VALID_ARCHS。这一变化意味着在Xcode12及之后的版本中,应优先使用EXCLUDED_ARCHS来指定不应包含的架构,以确保编译过程的准确性和高效性。

以上问题记录下,便于日后出现同样的问题可以查询。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容