能否发布依赖私有CocoaPod的公开CocoaPod?
问题解答
能否成功发布?
不能直接通过pod trunk push完成发布,原因很明确:
- CocoaPods的trunk验证服务在审核公开Pod时,只会访问官方的公开Specs源(https://github.com/CocoaPods/Specs.git),完全不会读取你本地配置的私有源。因此它找不到仅存在于私有源
my-private-specs.git里的MyPrivateCocoaPod,就会抛出你遇到的「找不到规格」错误。
公开Pod是否只能依赖其他公开Pod?
不是,但依赖私有Pod需要做特殊处理,以下是几种可行方案:
- 嵌入私有依赖代码:把
MyPrivateCocoaPod的源码直接复制到MyPublicCocoaPod工程中,或者用Git子模块关联。这样公开Pod就不需要依赖私有源的Pod了,缺点是后续私有依赖更新时,需要同步更新公开Pod里的代码。 - 将私有Pod转为公开:如果
MyPrivateCocoaPod可以公开,把它也发布到CocoaPods官方源,这样trunk验证时就能正常找到依赖。 - 打包私有依赖为二进制:把
MyPrivateCocoaPod编译成静态库(.a)或框架(.framework/.xcframework),在MyPublicCocoaPod.podspec中用vendored_frameworks或vendored_libraries字段引入这些二进制文件。trunk验证时不需要拉取私有源,直接读取本地二进制即可。 - 改用私有源托管公开Pod:如果
MyPublicCocoaPod仅需内部使用,没必要发布到官方源,直接把它也放到你的私有源my-private-specs.git里,内部用户配置双源后就能正常安装。
内容的提问来源于stack exchange,提问作者Steve Ham
相关产品推荐
相关产品推荐

