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

Expo EAS Build构建iOS失败:Pod模块定义及PBXResourcesBuildPhase问题求助

解决Expo EAS Build iOS构建失败的两个核心问题

一、修复Firebase Swift Pod模块未定义问题

你之前尝试通过eas-build-pre-install.yml修改package.json的思路方向对,但执行时机和写法有问题——EAS Build的pre-install阶段还未生成ios目录,直接修改package.json的postinstall脚本无法生效。以下是更可靠的解决方案:

方案1:用Expo官方Config Plugin(最推荐)

无需手动修改Podfile,通过官方插件自动注入配置:

  1. 安装依赖:
    npm install expo-build-properties --save-dev
    
  2. 在app.json/app.config.js中添加插件配置:
    {
      "expo": {
        "plugins": [
          [
            "expo-build-properties",
            {
              "ios": {
                "useModularHeaders": true
              }
            }
          ]
        ]
      }
    }
    
    该插件会自动在生成的Podfile中添加use_modular_headers!,适配EAS Build的流程。

方案2:通过Shell脚本直接修改Podfile

如果不想用插件,调整eas-build-pre-install.yml的脚本逻辑,确保先生成ios目录再修改Podfile:

version: 0.1
beforeCommit:
  - command: |
      # 强制清理并生成ios项目文件
      npx expo prebuild --platform ios --clean
      # 给macOS的sed加''参数避免生成备份文件,Linux环境可去掉
      sed -i '' 's/use_native_modules!/use_native_modules!\nuse_modular_headers!/' ios/Podfile
    type: shell

方案3:针对特定Pod单独开启模块化头(避免全局冲突)

如果全局开启use_modular_headers!导致其他Pod报错,可针对Firebase相关依赖单独配置:
在生成的Podfile中use_native_modules!之后添加:

pod 'GoogleUtilities', :modular_headers => true
pod 'FirebaseCore', :modular_headers => true
pod 'FirebaseInstallations', :modular_headers => true
pod 'GoogleDataTransport', :modular_headers => true
pod 'nanopb', :modular_headers => true
pod 'FirebaseCoreExtension', :modular_headers => true
pod 'FirebaseFirestoreInternal', :modular_headers => true
pod 'FirebaseAppCheckInterop', :modular_headers => true
pod 'FirebaseAuthInterop', :modular_headers => true
pod 'GTMSessionFetcher', :modular_headers => true

同样可以通过Config Plugin注入这段代码,避免手动维护Podfile。

二、修复PBXResourcesBuildPhase UUID错误

这个错误是Xcode项目文件的UUID冲突,通常由prebuild缓存或合并问题导致,解决方法:

  • 强制清理旧项目文件:在prebuild命令中添加--clean参数(上述脚本已包含),确保每次构建生成全新的Xcode项目。
  • 本地预验证:本地执行npx expo prebuild --platform ios --clean,打开Xcode检查项目是否有错误,修复后再提交代码到仓库。
  • 清理构建缓存:在EAS Build脚本中添加缓存清理步骤:
    version: 0.1
    beforeCommit:
      - command: rm -rf ios/Pods ios/Podfile.lock ios/build ~/Library/Caches/CocoaPods
        type: shell
      - command: npx expo prebuild --platform ios --clean
        type: shell
      - command: sed -i '' 's/use_native_modules!/use_native_modules!\nuse_modular_headers!/' ios/Podfile
        type: shell
    

验证步骤

  1. 本地执行npx expo prebuild --platform ios --clean,检查ios/Podfile是否包含use_modular_headers!。
  2. 进入ios目录执行pod install,确认无Pod相关错误。
  3. 提交修改后触发EAS Build,观察日志是否解决两个问题。

内容的提问来源于stack exchange,提问作者JeCh0

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 08:13:17