制作一个CocoaPod
最近在码iOS代码的时候发现有一些常用的功能需要经常引用,但是每次都把这个代码贴一遍有点低效率。所以想到可不可以把这些常用的功能做成一个pod,然后工程里面直接pod依赖一下就好了,岂不妙哉
最近在码iOS代码的时候发现有一些常用的功能需要经常引用,但是每次都把这个代码贴一遍有点低效率。所以想到可不可以把这些常用的功能做成一个pod,然后工程里面直接pod依赖一下就好了,岂不妙哉~
1. 在GitHub上创建一个工程
1.1 创建repository
现在公用的pod repo是维护在GitHub上的,所以最方便的方法就是把工程放到GitHub上面。首先要在GitHub上创建一个工程,如下图:
原文图片托管服务已失效,图片暂未迁移。
填写一些基本信息:
原文图片托管服务已失效,图片暂未迁移。
其中license的选择可以参考这篇文章:如何选择开源许可证?
####1.2 clone到本地 创建好之后就可以把项目clone到本地了,
原文图片托管服务已失效,图片暂未迁移。
git clone https://github.com/santosli/SLCocoaPodExpamle.git
2. 创建本地Xcode工程
2.1 创建Cocoa Touch Framework工程
现在就要在本地创建一个工程了,打开Xcode,选择File -> New -> Project,然后选择类型为Cocoa Touch Framework。
原文图片托管服务已失效,图片暂未迁移。
【注意:这里保存工程的时候路径要选择之前clone到本地的目录】
2.2 编写代码
然后就可以在这个工程里面把需要使用的代码放进来了。
原文图片托管服务已失效,图片暂未迁移。
3. 上传工程并配置podspec
3.1 打tag并同步到GitHub
工程开发完成之后就可以把工程同步到GitHub上,同时要打一个tag版本号后面会用到。
git add .
git tag 0.0.1
git push -u origin master --tags
如果一切正常,就可以在GitHub上看到最新提交的变更。
3.2 创建并配置podspec
下面就可以创建podspec了,这个文件相是Pod的一个配置文件。
pod spec create SLCocoaPodExpamle
然后我们就会在目录下看到一个SLCocoaPodExpamle.podspec文件了,用编辑器打开进行编辑:
Pod::Spec.new do |s|
# 创建的Pod的名字
s.name = "SLCocoaPodExpamle"
# 版本号,和之前的tag保持一致
s.version = "0.0.1"
# 简单描述
s.summary = "a example for making cocoaPod"
# 具体描述,这个要多写点而且不能和summary重复
s.description = <<-DESC
a example for making cocoaPod, hope it helps.
DESC
# 主页,一般填GitHub地址即可
s.homepage = "https://github.com/santosli/SLCocoaPodExpamle"
# license和GitHub上的保持一致
s.license = "Apache License, Version 2.0"
# 作者信息
s.author = { "santos" => "hslx111@gmail.com" }
# 最低支持的版本
s.platform = :ios, "7.0"
# 代码库Git地址
s.source = { :git => "https://github.com/santosli/SLCocoaPodExpamle.git", :tag => "0.0.1" }
# 需要导入的资源,对应本地的工程地址
s.source_files = "SLCocoaPodExpamle/**/*.{h,m}"
s.exclude_files = "SLCocoaPodExpamle/Exclude"
3.3 验证配置
配置编写好之后,需要验证一下配置的合法性。使用命令:
pod spec lint ./SLCocoaPodExpamle.podspec --verbose
如果有问题,会比较详细的问题描述,根据描述修改即可。如果没有问题就可以进行下一步了。
3.4 上传Pod到仓库
为了让自己和别人都能使用这个Pod,需要把这个Pod上传到Pod的仓库中。
pod trunk push SLCocoaPodExpamle.podspec
到这里基本就已经完成了。
4. 验证
最后使用pod search来验证一下:
原文图片托管服务已失效,图片暂未迁移。
如果能搜索到,说明已经能够正常使用了。OK,可以继续愉快地码代码了。。。