You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

XCode 9.1归档失败:找不到RealmSwift/ObjectMapper模块及架构兼容问题

解决Xcode 9.1归档时找不到RealmSwift/ObjectMapper且兼容旧设备的方案

你遇到的这个问题在Xcode版本迁移中很常见,真机调试正常但归档失败,核心原因是Release模式下的架构编译逻辑和调试模式不一致,第三方库的架构配置和主项目出现了不匹配。结合你已经定位到的架构问题,这里有几个可行的解决办法,既能成功归档,又能保留对iPhone 5s及以下设备的支持:

方案1:统一主项目与Pods的架构配置

首先确保主项目和所有第三方库Target的架构设置完全对齐:

  • 打开Xcode主项目的Build Settings,找到Architectures分组:
    • 将Architectures设置为Standard Architectures (armv7, arm64)
    • 将Valid Architectures设置为armv7 armv7s arm64
    • 在Release模式下,把Build Active Architecture Only改为NO(这是关键,Release模式需要编译所有指定架构,而非仅当前设备的架构)
  • 接着打开项目中的Pods.xcodeproj,对RealmSwift、ObjectMapper等所有用到的第三方库Target,重复上述架构设置步骤,保证和主项目完全一致

方案2:通过Podfile自动统一所有Pod的架构

如果一个个修改Pod Target太繁琐,可以修改Podfile的post_install钩子,让CocoaPods自动为所有依赖配置正确的架构:

post_install do |installer|
  installer.pods_project.targets.each do |target|
    target.build_configurations.each do |config|
      config.build_settings['SWIFT_VERSION'] = '4.0'
      # 添加架构统一配置
      config.build_settings['ARCHS'] = 'armv7 armv7s arm64'
      config.build_settings['VALID_ARCHS'] = 'armv7 armv7s arm64'
      # 仅在Release模式下关闭"仅编译活跃架构"
      if config.name == 'Release'
        config.build_settings['ONLY_ACTIVE_ARCH'] = 'NO'
      end
    end
  end
end

修改完成后,执行终端命令pod install让配置生效。

方案3:清理缓存并重新构建

旧的编译缓存可能会导致架构不匹配的遗留问题,建议彻底清理后重新构建:

  • 执行终端命令:pod deintegrate,完全移除当前Pods配置
  • 再执行pod install重新安装所有依赖
  • 在Xcode中按下Cmd+Shift+K清理项目缓存,接着按下Cmd+Option+Shift+K清理DerivedData
  • 重启Xcode后尝试归档

问题根源说明

Xcode 9之后默认的架构编译逻辑有调整,部分第三方库的Podspec可能未明确声明对armv7/armv7s的支持。另外,真机调试时Xcode默认仅编译当前设备的架构(比如arm64),所以运行正常;但归档时如果指定了多架构,而Pod没有编译对应架构的版本,就会出现"找不到模块"的错误。

内容的提问来源于stack exchange,提问作者Florian Mac Langlade

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 07:19:00