1.创建一个git仓库由于存储pod.spec文件
在git云平台创建一个空的git仓库,将该仓库添加到本地pod管理。该仓库不需要手动commit,仅使用pod命令添加处理即可。
//附:建议使用ssh key与远程git仓库通信。
pod repo add 5th-pods ssh://git@.../5th-pods.git
这样在本地的pod repos中就有了5th-pods 与master文件夹,其中master就是CocoaPods官方的
屏幕快照 2019-03-13 上午9.48.50.png
2.使用Pod命令创建一个Pod工程
pod lib create ProductName
#输入项
What platform do you want to use?? [ iOS / macOS ]
> iOS
What language do you want to use?? [ Swift / ObjC ]
> ObjC
Would you like to include a demo application with your library? [ Yes / No ]
> Yes
Which testing frameworks will you use? [ Specta / Kiwi / None ]
> None
Would you like to do view based testing? [ Yes / No ]
> No
What is your class prefix?
> AB
使用pod lib create 可以创建一个标准的pod工程,将该工程添加到远程git仓库进行管理。属于pod库的代码应该放在ProductName/Classes 目录下,使用示例代码写在Example的工程中。每个版本代码修改完成并在Example中测试没问题,且本地pod spec校验没问题,可修改.podspec 中的s.version版本号,并commit推送到远端仓库,打上与s.version同名的tag标签。
3.Pod校验及推送到私有库
#本地校验
pod spec lint ProductName.podspec --verbose --allow-warnings
#.podspec中有同时有私有库和公有库依赖
pod spec lint ProductName.podspec --verbose --allow-warnings --sources=ssh://git@git@.../5th-pods.git,https://github.com/CocoaPods/Specs.git
#推送到私有库
pod repo push 5th-pods ProductName.podspec
#推送到私有库(有私有库依赖)
pod repo push 5th-pods ProductName.podspec --verbose --allow-warnings --sources=ssh://git@git@.../5th-pods.git,https://github.com/CocoaPods/Specs.git
附:推送到私有库,使用的是远程git代码,一定要确保.podspec中git指向的s.version分支已存在并打好了tag推送到remote。
推送成功后就会看到repos/5th-pods中会多出ProductName的文件夹,并且pod已经帮我们管理好了s.version对应的代码版本。
4.使用私有库的Podfile写法
source 'https://github.com/CocoaPods/Specs.git' #原CocoaPods仓库
source 'ssh://git@git@.../5th-pods.git' #私有pod仓库
target "Exchange" do
pod 'AFNetworking' #公有库
pod 'PrivatePod', '0.01' #私有库
end
如果遇到没有找到module问题可参考
#import <ABNetwork/ABNetwork.h> Could not build module 'ABNetwork'
解决:选中项目target 选择Build Setting 搜索 Allow Non-modular Includes in Framework Modules 将该项设为YES。
原因:module中引用了外部module。需要项目中设置允许在框架模块中包含非模块
更换pod版本号时,需要更新repos,下载最新的pod.podspec
pod repo update
5.使用Pod来管理代码的好处
对于项目工程来说,代码版本的管理直接影响着开发的效率,好的管理可以让开发的效率倍增。
在没有使用pod来管理之前,我们习惯都是整个大的工程的代码都使用一个git仓库来管理,git仓库可以很方便的回滚到某一个commit。不足之处在于整个工程的代码都会回滚,而且commit的版本过多,以至于开发人员无法辨别哪一个是最接近回滚需求的那一个。
这里使用pod来管理代码就可以完美的避免该问题,每个pod都是一个整体,且仅是工程中可抽离的部分功能代码。又有每个可运行的pod版本。因此,pod部分的代码回滚仅需要修改版本号,而对主工程的其他代码不会产生太大的影响。
5.pod依赖注意事项
pod库会依赖其他第三方库,如果两个A、B两个库分别依赖C库的0.1和0.2版本,而主工程需要同时依赖A库和B库,则pod加载会通不过。这个是需要注意的地方。
6.pod库调试注意事项
刚刚改完pod中的代码,就在Example中写示例调试经常会遇到运行报错的情况,这里需要注意的是,Xcode不是每次都会从新编译pod中的代码,因此修改过pod中代码后使用快捷键command+shift+k来清理一下,再从新编译运行。
网友评论