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

如何为GitHub monorepo中存放的Cocoapod配置podspec的source属性

Monorepo托管CocoaPod的podspec source配置规范

你当前使用的专属前缀tag配置是官方推荐的主流方案,完全可用,只需要补充配套的子目录路径配置即可。
CocoaPods的source属性仅用于指定Git仓库地址和拉取的版本锚点(tag/ commit sha/ branch),不支持直接指定仓库子目录,所有Pod相关的源码、资源路径都需要基于仓库根目录写相对路径。

完整配置示例

针对你的仓库结构,配套的完整podspec配置参考如下:

# source配置和你当前的写法一致,使用Pod专属前缀的tag区分不同组件的版本
s.source = { :git => 'https://github.com/myrepo.git' , :tag => "My-iOS-Pod-#{s.version}" }
# 所有资源路径都基于仓库根目录,补全Pod所在的子路径
s.source_files = 'shared/ios/MyCocoaPod/Classes/**/*.{h,m,swift}'
s.public_header_files = 'shared/ios/MyCocoaPod/Classes/**/*.h'
s.resource_bundles = {
  'MyCocoaPod' => ['shared/ios/MyCocoaPod/Assets/**/*']
}
# 如果依赖同仓库内的其他内部Pod,也需要指定对应相对路径
# s.dependency 'OtherInternalPod', :path => 'shared/ios/OtherInternalPod'

可选的其他配置方案

如果你的Monorepo内所有iOS组件统一版本发版,可以不用组件专属前缀tag,直接用统一版本tag即可:

# 所有iOS组件共用同一个发版tag,比如ios-v1.2.0
s.source = { :git => 'https://github.com/myrepo.git' , :tag => "ios-v#{s.version}" }

注意事项

  • 发版打tag时,需确保对应tag的提交中,Pod子目录下的代码和当前版本匹配,避免版本不一致问题
  • 生产环境发版尽量使用固定tag或commit sha作为版本锚点,不推荐使用动态branch,保证版本可复现
  • 如果你的Pod要发布到公共CocoaPods仓库或私有Spec仓库,需确保Git仓库的权限配置正确,外部可以正常拉取对应tag的代码

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 01:15:03