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

如何为依赖其他Pod的闭源CocoaPod创建XCFramework

闭源XCFramework形式CocoaPod打包找不到依赖的解决方案

报错根因为直接对独立的Framework项目执行archive操作时,项目未配置对应的第三方依赖,无法找到对应模块。此前在App主Workspace中可以正常使用,是因为主项目的CocoaPods配置已经为整个Workspace注入了依赖,单独编译Framework项目时没有这套环境自然会报错。

正确处理流程

1. 为Framework项目单独配置依赖

在你的Framework项目根目录创建Podfile,添加所有你用到的第三方依赖,示例如下:

platform :ios, '12.0' # 和你框架支持的最低版本保持一致
target 'MyFramework' do
  use_frameworks!
  # 所有依赖和对应版本都要写在这里,和后续podspec配置保持完全一致
  pod 'Kingfisher', '~> 7.0' 
end

执行pod install后,关闭原有的xcodeproj文件,使用生成的MyFramework.xcworkspace进行后续所有打包操作。

2. 调整archive命令

在原有命令基础上添加workspace参数,指定使用Framework的xcworkspace进行编译:

xcodebuild archive \
-workspace 'MyFramework.xcworkspace' \
-scheme MyFramework \
-configuration Release \
-destination 'generic/platform=iOS' \
-archivePath './build/MyFramework.framework-iphoneos.xcarchive' \
SKIP_INSTALL=NO \
BUILD_LIBRARIES_FOR_DISTRIBUTION=YES

用同样的逻辑生成模拟器架构的archive包,最后合并为XCFramework即可。这个流程下第三方依赖只会参与编译链接,不会被打包进你生成的XCFramework中,和你之前调研的结论完全一致。

3. 配置Podspec确保用户侧自动安装依赖

在你的podspec文件中添加对应依赖声明,示例如下:

Pod::Spec.new do |s|
  # 其他基础配置省略
  s.vendored_frameworks = 'MyFramework.xcframework'
  # 所有依赖和版本和Framework项目的Podfile保持完全一致
  s.dependency 'Kingfisher', '~> 7.0'
end

用户执行pod install时,CocoaPods会自动将你的框架和所有依赖一起集成到项目中,运行时可以正常找到对应模块。

验证注意事项

  • 打包完成后可以执行nm MyFramework.xcframework/ios-arm64/MyFramework.framework/MyFramework | grep Kingfisher,如果没有输出内容就说明第三方依赖没有被打进你的XCFramework中
  • 发布前可以本地执行pod lib lint --allow-warnings验证podspec配置是否合法

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 21:39:03