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

React Native CI构建报错:RCT-Folly-RCT-Folly_privacy目标因无Info.plist无法签名的解决方法咨询

React Native CI构建报错:RCT-Folly-RCT-Folly_privacy目标因无Info.plist无法签名的解决方法咨询

我之前在React Native 0.76版本配合GitHub Actions+Fastlane的CI构建中,也碰到过几乎一模一样的坑——本地Xcode打包完全正常,一到CI就报这个Folly隐私目标的Info.plist签名错误。给你几个亲测有效的解决思路,按优先级尝试:

1. 优化Podfile的post_install钩子,确保修改被正确保存

你之前的钩子设置方向是对的,但漏了两个关键细节:一是这类隐私依赖库根本不需要代码签名,直接关闭签名比生成Info.plist更高效;二是CI环境下必须手动保存Pods项目的修改,不然CocoaPods可能不会把你的build settings生效。

修改你的Podfile如下:

post_install do |installer|
  installer.pods_project.targets.each do |target|
    target.build_configurations.each do |config|
      # 匹配所有Folly隐私相关的目标(避免名字拼写问题)
      if target.name.include?("RCT-Folly_privacy")
        config.build_settings['GENERATE_INFOPLIST_FILE'] = 'YES'
        # 核心:关闭这个依赖库的代码签名要求,它不需要签名
        config.build_settings['CODE_SIGNING_REQUIRED'] = 'NO'
        config.build_settings['CODE_SIGNING_ALLOWED'] = 'NO'
        # 补充Bundle ID,避免自动生成的Info.plist缺失关键字段
        config.build_settings['INFOPLIST_KEY_CFBundleIdentifier'] = "com.yourapp.#{target.name}"
      end
    end
  end
  # 必须加这行!CI环境下CocoaPods不会自动保存Pods项目的修改
  installer.pods_project.save
end

2. 检查Fastlane gym的CI构建配置,消除本地与CI的环境差异

本地和CI的构建差异大多来自缓存、Xcode版本或构建步骤顺序,调整你的Fastfile和GitHub Actions配置:

Fastfile里的gym动作要强制清理+指定Xcode版本

lane :archive do
  # 先清理所有旧构建产物,避免缓存干扰
  clean_build_artifacts
  # 强制更新Pods并应用你的post_install配置
  pod_install(repo_update: true)
  
  gym(
    scheme: "YourAppScheme", # 替换成你的实际Scheme名
    workspace: "YourApp.xcworkspace",
    configuration: "Release",
    xcode: "16.2", # 和本地一致的Xcode版本
    clean: true, # 关键:强制清理,防止CI复用旧的Pods配置
    export_method: "app-store", # 按你的发布方式调整(ad-hoc/development等)
    skip_package_ipa: false
  )
end

GitHub Actions里固定Xcode和CocoaPods版本

在你的CI workflow yml文件里,加上这几步确保环境和本地一致:

jobs:
  build-ios:
    runs-on: macos-14 # 对应Xcode 16.2的虚拟机环境
    steps:
      - name: Checkout code
        uses: actions/checkout@v4
        
      - name: Select Xcode 16.2
        run: sudo xcode-select -s /Applications/Xcode_16.2.app/Contents/Developer
        
      - name: Install matching CocoaPods version
        run: sudo gem install cocoapods -v 1.15.2 # 替换成你本地`pod --version`的结果
        
      # 后续的安装依赖、fastlane构建步骤...

3. 备选方案:直接用xcodebuild命令强制修改目标配置

如果上面的方法都不生效,可以在CI的pod install步骤之后,直接用xcodebuild命令覆盖这个目标的build settings,绕过CocoaPods的可能问题:

# 在GitHub Actions的步骤里添加
- name: Fix RCT-Folly privacy target Info.plist
  run: |
    xcodebuild -workspace YourApp.xcworkspace \
      -target RCT-Folly-RCT-Folly_privacy \
      -configuration Release \
      GENERATE_INFOPLIST_FILE=YES \
      CODE_SIGNING_REQUIRED=NO

为什么本地没问题CI会报错?

本地Xcode在打开项目时会自动做一些“补全”操作(比如自动生成缺失的Info.plist、修复签名配置),而且本地的Pods缓存已经应用了你的修改;但CI是全新的干净环境,所有配置都必须通过脚本明确设置,没有Xcode GUI的自动修复逻辑,所以这些细节才会暴露出来。

先试第一个方法,加上installer.pods_project.save和关闭代码签名,大概率能解决问题——毕竟这个隐私目标只是个依赖库,根本不需要签名,关闭签名要求比生成Info.plist更直接。

内容来源于stack exchange

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.08 12:25:28