如何用私有Git仓库托管.framework SDK供CocoaPods与React Native模块调用?
解决私有Framework的CocoaPods按需引入问题
一、补全私有SDK仓库的podspec配置
你当前的xSDK.podspec缺少关键的source字段,CocoaPods无法定位仓库代码位置,必须补上。另外建议把.framework放到统一目录(比如Frameworks/)避免路径混乱,修改后的podspec如下:
Pod::Spec.new do |s| s.name = 'xSDK' s.version = '0.0.1' s.summary = 'x SDK' s.homepage = 'https://www.google.com' s.author = { 'Sample' => 'sample@sample.com' } s.license = { :type => "MIT", :text => "MIT License" } s.platform = :ios s.ios.deployment_target = '13.0' # 将x.framework放入Frameworks目录,路径对应修改 s.ios.vendored_frameworks = 'Frameworks/x.framework' # 补上仓库地址,指定分支(推荐打版本tag,稳定性更高) s.source = { :git => 'https://git.x.org/x/cocoapods.git', :branch => 'TEST' } # 若使用tag版本,替换为::tag => "#{s.version}"(需在仓库打对应版本tag) end
二、修正React Native模块podspec的依赖写法
你当前的dependency写法错误,不能使用浏览器路径/-/tree/TEST,需直接用仓库git地址并指定分支或tag,修改后的依赖部分如下:
# 指定分支的写法 s.dependency 'xSDK', :git => 'https://git.x.org/x/cocoapods.git', :branch => 'TEST' # 若用tag版本,更推荐(稳定性更高): # s.dependency 'xSDK', :git => 'https://git.x.org/x/cocoapods.git', :tag => '0.0.1'
三、多私有Framework的集中管理方案
后续新增更多.framework时,推荐在同一个私有Git仓库内按以下方式组织:
- 每个SDK对应独立的podspec文件(比如
ySDK.podspec、zSDK.podspec) - 所有.framework统一放在
Frameworks/目录下,每个podspec指定对应路径(比如s.ios.vendored_frameworks = 'Frameworks/y.framework') - 各RN模块按需引入对应SDK依赖,比如需要ySDK就添加
s.dependency 'ySDK', :git => '仓库地址', :branch => 'TEST'
额外注意事项
- 验证podspec有效性:在私有仓库目录执行
pod spec lint xSDK.podspec --verbose,确保无报错 - 若不想每次依赖都写git地址,可搭建私有CocoaPods源:将所有podspec推送到私有源,在项目
Podfile添加私有源地址后,直接用s.dependency 'xSDK', '0.0.1'即可引入
内容的提问来源于stack exchange,提问作者Hans
相关产品推荐
相关产品推荐

