平时我们会经常用CocoaPods集成第三方库,那如何使自己的代码也可以通过CocoaPods集成呢?只需要简单几步:
- 创建git仓库,把代码提交到Github或码云等
- 在git仓库中创建.Podspec文件,修改里面的配置(如代码的版本、简介、git仓库地址等)
- 将.Podspec提交到CocoaPods
下面用一个实际例子JXCalendarTool来详细讲解
一、将源代码提交到Github
关于这一步请参考上一篇文章:GitHub与Git入门
二、创建并修改.Podspec文件
cd到项目目录,用以下命令创建<项目名>.Podspec文件
pod spec create JXCalendarTool
此时项目目录中已经创建了JXCalendarTool.Podspec文件
利用Xcode或Sublime等文字编辑器打开进行编辑。去掉<#>所注释的内容,主要就是配置这些选项:
Pod::Spec.new do |s|
s.name = "JXCalendar"
s.version = "1.0.0"
s.summary = "添加行程到系统日历"
s.homepage = "https://github.com/dolacmeng/JXCalendarTool"
s.license = "MIT"
s.author = { "Jack" => "[email protected]" }
s.platform = :ios
s.platform = :ios, "7.0"
s.source = { :git => "https://github.com/dolacmeng/JXCalendarTool.git", :tag => "1.0.0" }
s.source_files = "JXCalendarTool", "*.{h,m}"
s.frameworks = "UIKit","Foundation","EventKit"
s.requires_arc = true
end
- s.name: 库的名称。
- s.version: 版本号。
- s.summary: 摘要,简要说明开源库的作用。
- s.homepage: 项目主页地址。
- s.license: 许可证,不懂就填MIT,具体可以网上查下MIT license。
- s.author: 作者。
- s.platform: 支持的最低SDK版本
- s.source: git地址和对应的tag
- s.source_files: 包含的文件(根目录的JXCalendarTool文件夹下所有的.h和.m文件)
- s.framework:依赖的系统库,另外还可能通过设置s.libraries、s.dependency添加lib以及第三方开源库依赖
配置参考:http://guides.cocoapods.org/making/specs-and-specs-repo.html
在s.source中,我们设置了tag => “1.0.0”,也就是我们的代码在Github中的tag。我们需要在git中创建此tag,并提交到Github:
git tag '1.0.0'
git push --tags
此时,Github中便有了tag为1.0.0的分支:
三、将.Podspec提交到CocoaPods
- 首先我们用pod trunk register <邮箱> '<昵称>'命令注册一个CocoaPods账号
pod trunk register [email protected] 'jackxu'
CocoaPods会给注册的邮箱发送email,打开邮箱点击链接进行激活即可。
- 使用pod lib lint命令来尝试编译,如果有警告,可以在后面添上–allow-warnings来忽略警告,成功的话会显示passed validation
pod lib lint --allow-warnings
- 通过 pod trunk push 库名.podspec --allow-warnings来推送到远程的cocoapods.
pod trunk push JXCalendarTool.podspec --allow-warnings
然后耐心等待成功的消息吧
四、使用CocoaPods搜索
- 虽然此时已经将代码提交到了CocoaPods,但是本地的检索库还是旧的,需要先用以下命令更新CocoaPods本地检索库
pod repo update
- 此时再通过命令搜索即可找到我们的库
pod search JXCalendarTool
- 但是有时候,更新了却还是不行,那就清除所有的缓存,重新建立索引。
pod cache clean --all
rm -rf ~/Library/Caches/CocoaPods
pod repo update
此时重新搜索就可以了。