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

集成Facebook SDK的iOS/Catalyst应用归档缺Framework符号链接如何修复

问题修复方案

该报错是Facebook SDK的CocoaPods发布包针对Catalyst/macOS架构打包时,未按苹果要求生成框架对应符号链接导致,可通过以下方式修复:

方案1:添加Podfile自动修复脚本(最稳定,适配所有SDK版本)

在你的Podfile末尾添加如下脚本,之后执行pod install即可实现构建时自动补全缺失的符号链接:

post_install do |installer|
  # 所有需要修复的Facebook相关框架名
  fb_frameworks = %w[FBAEMKit FBSDKCoreKit FBSDKCoreKit_Basics FBSDKLoginKit]

  installer.pods_project.targets.each do |target|
    next unless fb_frameworks.include? target.name
    target.build_configurations.each do |config|
      # 保留框架的Versions层级结构,禁止扁平化
      config.build_settings['DEFINES_MODULE'] = 'YES'
      config.build_settings['SKIP_INSTALL'] = 'NO'
    end
  end

  # 生成归档后执行的符号链接修复脚本
  project_name = installer.metadata[:target_definition].name
  script_path = "Pods/Target Support Files/Pods-#{project_name}/fix-fb-framework.sh"
  fix_script = <<~EOF
    #!/bin/sh
    FW_DIR="${ARCHIVE_PRODUCTS_PATH}/Applications/${WRAPPER_NAME}/Contents/Frameworks"
    for FW in #{fb_frameworks.join(' ')}; do
      FW_PATH="${FW_DIR}/${FW}.framework"
      [ ! -d "${FW_PATH}" ] && continue
      cd "${FW_PATH}"
      # 修复Versions目录的Current链接
      cd Versions && ln -sf A Current && cd ..
      # 修复根目录二进制文件链接
      ln -sf Versions/Current/${FW} ${FW}
      # 修复根目录Resources链接
      ln -sf Versions/Current/Resources Resources
    done
  EOF
  File.write(script_path, fix_script)
  system("chmod +x #{script_path}")
end

脚本添加完成后需要配置Xcode Scheme触发修复逻辑:

  1. 点击Xcode顶部菜单栏的Product -> Scheme -> Edit Scheme
  2. 展开左侧Archive选项,选择Post-actions
  3. 点击+号选择New Run Script Action
  4. 在脚本输入框中填写:
${PODS_ROOT}/Target Support Files/Pods-你的项目名/fix-fb-framework.sh

请将内容中的「你的项目名」替换为你实际的主target名称,同时将「Provide build settings from」下拉选择你的主target,保存后重新归档即可。

方案2:升级SDK版本

Facebook官方在16.0及以上版本的SDK中已经修复了该框架结构问题,你可以直接修改Podfile指定版本:

pod 'FBSDKLoginKit', '~> 16.3'

修改完成后执行pod update FBSDKLoginKit更新SDK后重新归档即可。

方案3:手动临时修复

如果不需要频繁打包,可以在归档完成后手动补全符号链接:

  1. 打开Xcode Organizer,右键对应归档包选择Show in Finder
  2. 右键归档包选择显示包内容,进入Products/Applications/你的应用.app/Contents/Frameworks
  3. 对每个报错的Facebook框架依次操作:
    • 进入.framework/Versions目录,执行ln -sf A Current
    • 回到.framework根目录,执行ln -sf Versions/Current/框架名 框架名
    • 根目录下执行ln -sf Versions/Current/Resources Resources
      修复完成后重新导出归档包上传即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 18:15:02