使用URL引入vendored framework时Podspec依赖未下载问题排查
问题原因与解决方案
问题原因
当你在podspec里使用{ :http => ... }作为source时,CocoaPods会将这个pod认定为预编译二进制pod。这类pod的设计逻辑是:二进制包本身已经包含了运行所需的核心内容,因此CocoaPods会跳过解析并下载该podspec中声明的依赖项,仅下载你指定的xcframework压缩包。
这和从Git仓库或其他源码型source拉取的pod不同——源码型pod会完整解析podspec中的所有依赖配置,自动拉取所需的依赖库。
解决方案
根据你的需求,有两种可行的处理方式:
1. 改用源码型Source(推荐)
如果你的MyFramework有对应的Git仓库,把podspec的source改成指向仓库地址,同时指定对应版本的tag或commit:
s.source = { :git => "https://example.com/MyFramework.git", :tag => s.version.to_s } s.vendored_framework = 'MyFramework.xcframework'
修改后,CocoaPods会将其当作源码pod处理,自动解析并下载MyPublicPod依赖。
2. 手动在Podfile中添加依赖
如果必须使用HTTP source的二进制包,直接在项目的Podfile中显式声明依赖:
pod 'MyFramework', :http => "https://example.com/MyFramework.xcframework.zip" pod 'MyPublicPod', '= 0.1.0'
执行pod install时,就会同时下载这两个库。
额外说明
二进制pod的依赖声明更多是作为元信息存在,用于告知使用者该二进制依赖了哪些库,但不会自动触发依赖下载。如果你的二进制库本身并没有静态链接MyPublicPod,就必须手动添加依赖才能保证项目正常编译。
内容的提问来源于stack exchange,提问作者John Doe
相关产品推荐
相关产品推荐

