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

使用Fastlane构建App时遭遇Bitcode依赖问题求助

GitHub Actions + Fastlane 构建iOS应用Bitcode报错解决方案

问题背景

我正在GitHub搭建iOS应用的CI流水线,使用Fastlane的build_app构建应用并上传至App Store,构建过程中因依赖库FirebaseAnalytics不含Bitcode报错。

报错信息

ld: '/Users/runner/Library/Developer/Xcode/DerivedData/App-hktscdrwwpxombeaagjploucipfj/Build/Intermediates.noindex/ArchiveIntermediates/App/BuildProductsPath/Release-iphoneos/XCFrameworkIntermediates/FirebaseAnalytics/AdIdSupport/FirebaseAnalytics.framework/FirebaseAnalytics(FIRAEvent.o)'
does not contain bitcode.You must rebuild it with bitcode enabled (Xcode setting ENABLE_BITCODE), obtain an updated library from the vendor, or disable bitcode for this target.
file '/Users/runner/Library/Developer/Xcode/DerivedData/App-hktscdrwwpxombeaagjploucipfj/Build/Intermediates.noindex/ArchiveIntermediates/App/BuildProductsPath/Release-iphoneos/XCFrameworkIntermediates/FirebaseAnalytics/AdIdSupport/FirebaseAnalytics.framework/FirebaseAnalytics'
for architecture arm64

当前Fastlane配置(build_app部分)

build_app(
      workspace: use_workspace ? ENV['WORKSPACE_PATH'] : nil,
      project: !use_workspace ? ENV['PROJECT_PATH'] : nil,
      scheme: "App",
      output_directory: File.dirname(ENV['OUTPUT_PATH']),
      output_name: File.basename(ENV['OUTPUT_PATH']),
      clean: true,
      export_method: ENV['EXPORT_METHOD'],
      export_team_id: ENV['TEAM_ID'],
      silent: true
    )

构建环境版本

项值
xcode_path/Applications/Xcode_13.2.1.app
gym_version2.214.0
export_methodapp-store
sdkiPhoneOS15.2.sdk

已尝试无效的操作

  • 在Info.plist中添加ENABLE_BITCODE=false配置,未解决问题
  • 本地Xcode可直接设置禁用Bitcode,但本人为Windows用户无法操作

疑问

既然Bitcode已被苹果弃用,是否应用中只要有部分组件含Bitcode,所有组件都必须支持?


解决方案

1. 通过Fastlane build_app直接传递禁用Bitcode的编译参数

在build_app配置中添加build_flags参数,强制关闭Bitcode:

build_app(
      # 保留原有所有配置...
      build_flags: "ENABLE_BITCODE=NO"
    )

如果需要针对特定Target设置,可使用更精准的参数:

build_flags: "-target App ENABLE_BITCODE=NO"

2. 直接修改Xcode项目文件(适合无法操作Xcode的Windows用户)

通过GitHub Actions的Shell命令修改.xcodeproj中的project.pbxproj文件,全局替换Bitcode配置:

sed -i '' 's/ENABLE_BITCODE = YES;/ENABLE_BITCODE = NO;/g' ${PROJECT_PATH}/project.pbxproj

如果使用CocoaPods管理依赖,还需确保Pods项目的Bitcode也被禁用,可添加:

sed -i '' 's/ENABLE_BITCODE = YES;/ENABLE_BITCODE = NO;/g' Pods/Pods.xcodeproj/project.pbxproj

将上述命令添加到Fastlane执行build_app之前的步骤中。

3. 升级FirebaseAnalytics到最新版本

新版本的Firebase库已经移除了Bitcode支持,升级到最新版本可彻底避免该问题。修改Podfile:

pod 'Firebase/Analytics', '~> 10.0' # 替换为当前最新版本号

然后在流水线中执行pod install更新依赖。


疑问解答

是的,Xcode构建时遵循"全有或全无"原则:只要项目中任意一个Target开启了Bitcode,所有依赖的静态库、框架都必须包含Bitcode。即使苹果已弃用Bitcode,但只要项目配置中未全局关闭,就会触发该检查。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 14:37:26