Cocoapods-Pod仓库dependency反向依赖查询

背景

iOS开发工作中经常会用到 Cocoapods ,Cocoapods的使用主要分两种情况

  1. 简单的用它来快速的集成开源库,比如 AFNetwork、SDWebImage等
  2. 创建私有Repo,将复用程度较高的底层代码做成 pod 库,发布到私有Repo中,从而实现组件化

问题

随着时间的推移,公司内部的 pod 库越来越多,库与库之间的依赖关系也就越来越复杂,对库的管理就变得越来越繁琐
有时候我们需要知道依赖了某个Pod库的仓库列表,比如,打算淘汰某个 pod 仓库,就需要知道依赖该 pod 仓库的库都有哪些

查找反向依赖办法

遍历当前 repo 仓库中所有的 podspec 文件,查看各个仓库最新版本的 podspec 文件中的 dependency 列表,从而筛选出一个列表。

解决步骤

本人写了一个 gem ,直接使用这个 gem 就可以了

使用方式一【使用gem】

  1. 安装 gem gem install reversepoddependency
  2. 执行如下命令得到结果
specbackwarddependency 本地repo路径 pod名称
//例如:specbackwarddependency ~/.cocoapods/repos/master AFNetworking

使用方式二【下载源码】

  1. 下载源码gem源码链接
  2. cd进入目录
  3. 安装 ruby 2.2.x 或者 2.3.x
  4. 安装gem gem install bundle
  5. 执行 bundle install
  6. 执行查询指令
specbackwarddependency 本地repo路径 pod名称
//例如:specbackwarddependency ~/.cocoapods/repos/master AFNetworking

补充

最近工作中用到这个工具,发现有些 podspec 比较特殊(比如ZebraCocos2dx)在遍历的过程中会抛出如下异常,解决办法是直接将 ZebraCocos2dx 这个文件夹删除后重试成功了,算是暂时没有去刨根问题找原因,而是绕道

	/Users/xxx/.rvm/gems/ruby-2.6.5/gems/cocoapods-core-1.10.1/lib/cocoapods-core/specification.rb:835:in `rescue in _eval_podspec':  (Pod::DSLError)
[!] Invalid `ZebraCocos2dx.podspec` file: uninitialized constant Pod::Sandbox.

去看了一下这个 podspec 的内容确实有些特殊

cloned = Marshal.load(Marshal.dump(Pod::Sandbox::FileAccessor::GLOB_PATTERNS))
Pod::Sandbox::FileAccessor::HEADER_EXTENSIONS = (%w(.inl .msg) + Pod::Sandbox::FileAccessor::HEADER_EXTENSIONS)
puts Pod::Sandbox::FileAccessor::HEADER_EXTENSIONS
s = Pod::Sandbox::FileAccessor::GLOB_PATTERNS[:public_header_files]
s = s[0...s.length-1]+',.inl,.msg'+s[s.length-1]
cloned[:public_header_files] = s
puts Pod::Sandbox::FileAccessor::GLOB_PATTERNS = cloned

Pod::Spec.new do |s|
s.name             = 'ZebraCocos2dx'
s.version          = '0.0.5'
s.summary          = 'ZebraCocos2dx'

s.description      = <<-DESC
Cocos动画引擎SDK.
                   DESC

s.homepage         = 'https://wiki.bytedance.com'
s.license          = 'MIT'
s.author           = { "lizx03" => "lizx03@fenbi.com" }
s.source           = { :git => "ssh://gerrit.zhenguanyu.com:29418/zebra-cocos2d-x", :tag => s.version }
s.ios.deployment_target = '8.0'
s.header_dir = 'cocos2d-x/cocos/,cocos2d-x/extensions/,cocos2d-x/external/'
s.header_mappings_dir = 'cocos2d-x/'
s.source_files = 'cocos2d-x/extensions/**/*.{h,inl}', 'cocos2d-x/cocos/**/*.{h,inl,hpp}'
# s.resource = 'Resources/ZebraCocos2dx.bundle'
s.xcconfig     = { 'HEADER_SEARCH_PATHS' => '"${PODS_ROOT}/Headers/Public/ZebraCocos2dx/cocos" "${PODS_ROOT}/Headers/Public/ZebraCocos2dx/external/spidermonkey/include/ios" "$(PODS_ROOT)/Headers/Public/ZebraCocos2dx/cocos/editor-support/"' }
# s.resources = ['main.js','scence0.js', 'project.json','res','script','src']
s.libraries = 'stdc++', 'sqlite3', 'iconv','z'
s.frameworks = 'OpenAL', 'CoreMotion', 'QuartzCore', 'GameController', 'AVFoundation', 'AudioToolbox', 'MediaPlayer'
# s.vendored_libraries = 'zebra-cocos2d-x/cocos2d-x/libcocos2d.a','zebra-cocos2d-x/cocos2d-x/libluacocos2d.a'

end
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值