一、背景
有过IOS开发经验的人都知道,IOS经常使用CocoaPods进行项目的依赖管理。那么肯定不可避免的需要经常修改Podfile文件。例如:如果我们想要满足工程配置的自动化,那么我们可能会用到CocoaPods为我们提供的两个钩子函数,分别是pre_install
和post_install
。一个简单的Podfile示例如下:
target 'Demo' do
pod 'SDWebImage', '~> 5.0.2'
pod 'JSONModel', '~> 1.8.0'
target 'DemoTests' do
inherit! :search_paths
end
target 'DemoUITests' do
inherit! :search_paths
end
end
# 强行开启bitcode
post_install do |installer|
installer.pods_project.targets.each do |target|
target.build_configurations.each do |config|
config.build_settings['ENABLE_BITCODE'] = 'YES'
config.build_settings["OTHER_CFLAGS"] = '-fembed-bitcode'
end
end
end
但是一些简单的修改,我们可以直接修改后通过pod install
来观察工程配置的变换来解决问题。但是,如果稍微复杂的修改配置如果中间出了问题,我们是否能用打断点的方式调试我们的Podfile呢?答案是肯定的。下面笔者带大家搭建一个Cocoapods的开发环境来调试下。
二、具体流程
根据本地CocoaPods版本号,下载对应源代码。
本地Pod的版本可以用命令pod --version
查看。然后去GitHub上下载对应版本tag的CocoaPods源代码。
三、RubyIDE配置
1. 用IDE打开CocoaPods源码工程
直接将CocoaPods源码文件夹拖入IDE中,打开界面如下图:

2. 安装CocoaPods源码依赖
在IDE的命令行工具中,执行bundle install
安装CocoaPods源码的依赖库,安装完成如下图所示:

3. IDE新增debug配置
在菜单Run->Edit Configurations
的窗口中点击“+”,选择Ruby,填写相关必要信息,如下图所示:

4. 调试你的Podfile中新增的Ruby脚本
pre_install
和post_install
两个钩子函数分别在Pod依赖安装前和安装后执行。在pre_install
回调中,我们可以准备一些加载依赖的前置操作。post_install
回调中,可以修改一些Pod工程的配置或者修改主工程的配置选项。
在CocoaPods的源码中找到post_install
Hook方法调用的地方(调用地方在install.rb
文件中run_podfile_post_install_hook
函数中),打上断点。
然后点击IDE的Run->Debug 'CocoaPodsDebug'
(CocoaPodsDebug为我们新建的Debug配置名称)。
发现断点断到了我们刚才的断点的位置,如下图所示:

利用RubyIDE的Debug工具,可以一步步执行,最终后走到我们的Podfile文件中,如下图所示:

到此,我们就可以愉快的调试Podfile文件了,其实我们也顺便证明了Podfile文件本质上就是Ruby文件。
如果你想开发Pod Plugin或者你想接管项目中Podfile的管理(Podfile中的内容,在开发中会频繁改变,费事又费力,那么为什么不把Podfile用Ruby管理起来),那么你可以通过这种方式来调试开发你的新工具。
网友评论