CocoaPods
是iOS最常用的类库管理工具,通过CocoaPods使用简单的命令就可以快速管理常用的类库。自己写的一些类库也可以添加到CocoaPods,为开源事业做贡献,或者做成自己的私有库,方便在不同的项目中快速使用。
下面详细说明如何为自己的类库添加CocoaPods依赖。
创建Git代码库
在GitHub
(本文使用GitHub)或者gitlab
、gitee(码云)
上创建自己的远程代码库,用于存放需要添加CocoaPods
依赖的封装库,或者库及其示例工程。如下为GitHub上创建一个名为 ELKChained-master 的Public的代码库,这个库将用来存放我的示例工程和基于OC语言的简单易用的链式编程框架,OC链式编程开源库在这里。
注意:工程及库文件存放地址必须支持https,否则推送pods库会失败。github、gitlab、和gitee均支持https。
-
本地创建制作CocoaPods依赖的库文件及示例工程
我们可以把想要使用CocoaPods管理的库文件直接制作成
pods
依赖库,用户使用的时候,install到项目中然后集成使用;当然也可以在制作依赖库的时候提供示例工程,写一些示例代码,方便用户参考和集成。
我这里准备上传一个ELKChained-master
工程到GitHub
上,然后给示例工程的ELKChainedAlloy
库添加CocoaPods依赖。方便用户使用pods集成ELKChainedAlloy
库,同时通过GitHub下载示例项目,指导用户快速上手这款链式编程框架。
如上图,我准备了一个名为
ELKChained-master
的示例工程,红色框内的文件夹ELKChainedAlloy
为准备制作CocoaPods依赖的文件。
上图中除了示例工程文件、库文件之外,还有三个文件:.podspec
、LICENSE
和README.md
。
.podspec
:cocopods
引入第三方代码库的配置索引文件
LICENSE
:MIT License
软件授权条款
README.md
:使用说明
1、创建spec
文件
使用终端cd
到ELKChained-master
项目的根目录,输入命令创建spec
文件。// pod spec create 库名字 pod spec create ELKChainedAlloy
执行完命令,文件夹下创建了一个名为
ELKChainedAlloy.podspec
的spec文件。使用Xcode打开编辑此文件。下面是一些重要的基础属性及含义。Pod::Spec.new do |s| # 库名称 s.name = "ELKChainedAlloy" # 库的版本 s.version = "1.0.0" # 库摘要 s.summary = "基于OC的简单易用的链式编程框架,通过 . 调用方法,实现快速编程" # 库描述(最好比summary多写一些描述) s.description = <<-DESC 基于OC的简单易用的链式编程框架,通过 . 调用方法,实现快速编程 提供所有系统控件及系统类的链式编程方法,提升开发效率 持续更新中。。。 DESC # 远程仓库地址,即 GitHub 的地址,或者你使用的其他的 Gitlab,gitee的地址 # 或者你想提供给用户的技术支持网站、自己的主页、公司官方网站 s.homepage = "https://github.com/CircusJonathan/ELKChained-master" # MIT许可证(The MIT License),软件授权条款 s.license = "MIT" # s.license = { :type => "MIT", :file => "FILE_LICENSE" } # 作者信息 s.author = { "Jonathan" => "Jonathan_dk@163.com" } # 支持的系统及支持的最低系统版本 s.platform = :ios s.platform = :ios, "8.0" # 支持多个平台使用时 # s.ios.deployment_target = "8.0" # s.osx.deployment_target = "10.7" # s.watchos.deployment_target = "2.0" # s.tvos.deployment_target = "9.0" # 下载地址,即远程仓库的 GitHub下载地址(clone 地址),使用.git结尾 # 这个地址必须为https地址,否则推送pods库会失败,github、gitlab、和gitee均为https s.source = { :git => "https://github.com/CircusJonathan/ELKChained-master.git", :tag => "#{s.version}" } # 库文件在仓库中的相对路径 # 等号后面的第一个参数表示的是要添加 CocoaPods 依赖的库在项目中的相对路径 # 因为我的库就放在库根目录,所以直接就是 ELKChainedAlloy # 如果你的是在其他地方,比如 ELKChained-master/ELKChainedAlloy,填写实际的相对路径 # 等号后的第二个参数,用来指示 ELKChainedAlloy 文件夹下的哪些文件需要添加 CocoaPods依赖 # “**”这个通配符代表 ELKChainedAlloy 文件夹下的所有文件,"*.{h,m}"代表所有的.h,.m文件 s.source_files = "ELKChainedAlloy", "ELKChainedAlloy/**/*.{h,m}" # 指明 ELKChainedAlloy 文件夹下不需要添加到 CocoaPods 的文件 # 这里是 Exclude 文件夹内的内容 s.exclude_files = "ELKChainedAlloy/Exclude" # 是否需要项目是 ARC s.requires_arc = true # 库中用到的框架或系统库(没用到可以没有) s.ios.frameworks = 'Foundation', 'UIKit' # s.framework = "SomeFramework" # s.frameworks = "SomeFramework", "AnotherFramework" # 如果你的库依赖其他的 Podspecs,可以添加这些依赖项,例如 # s.dependency 'AFNetworking', '~> 3.2.1' end
2、创建软件授权条款
LICENSE
文件
通过终端vim
命令创建LICENSE
并编辑license内容。一般采用MIT
许可证,MIT许可证(The MIT License)是许多软件授权条款中,被广泛使用的其中一种。与其他常见的软件授权条款(如GPL
、LGPL
、BSD
)相比,MIT
是相对宽松的软件授权条款。MIT
条款可与其他授权条款并存。MIT
条款是自由软件基金会(FSF
)认可的自由软件授权条款,与GPL
兼容。
MIT
授权条款格式如下,只需要修改year
和copyright holder
就可以了。MIT许可证原文。Copyright (C) <year> <copyright holders> Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
3、创建
README.md
使用说明
同样使用vim
命令创建README.md
文件并编辑,我目前的内容很简单,只写了几行描述文案,后续再持续完善使用说明。# ELKChained-master ELKChainedAlloy链式编程框架 基于OC的简单易用的链式编程框架,通过 . 调用方法,实现快速编程 提供所有系统控件及系统类的链式编程方法,提升开发效率 持续更新中。。。
-
代码上传GitHub及注册spec并推送到CocoaPods仓库
1、上传代码到
GitHub
,此处使用终端命令实现// cd 到项目文件夹根目录 cd /Users/Jonathan/Desktop/ELK/ELKChained-master // git init (初始化本地仓库) git init // git add . (将仓库添加到临时仓库,"."表示目录下所有文件) git add . // git commit -m "描述信息" (添加描述信息) git commit -m "初始化 ELKChainedAlloy OC链式编程框架 " // git remote add origin github上仓库的地址(关联到远程仓库) git remote add origin https://github.com/CircusJonathan/ELKChained-master.git // git push -f origin master(推送到远程仓库,执行之后需要输入GitHub账号和密码) git push -f origin master
成功运行上面的命令之后,项目已经
push
到了GitHub代码库,如下图:
2、注册
spec
并推送到CocoaPods
仓库
给ELKChainedAlloy
打标签。git tag '1.0.0' //标签 对应 .podspec文件中的version信息 git push --tags //推送到远程仓库
注册
spec
并推送到远程仓库
使用trunk
进行注册// 填写验证邮箱,稍后通过邮件验证 pod trunk register Jonathan_dk@163.com 'Jonathan' --verbose
注册成功之后终端会显示如上图的信息,提示通过邮件链接验证
CocoaPods
注册信息。邮件内容如下:验证成功之后,使用终端命令进行推送。会将与version版本对应的tag标记的库代码推送到pods。
// pod trunk push 完整的.podspec文件名 pod trunk push ELKChainedAlloy.podspec --allow-warnings
推送结果如下,库版本为1.0.0,有一些警告,提示UIControlState的部分枚举值是iOS9.0之后才有的,iOS8.0系统不支持,这是因为我上面
.podspec
文件中的s.platform(支持的系统及支持的最低系统版本)的值写的是ios, "8.0"
,警告可以忽略,不影响此图作为trunk
推送成功的参考信息。到这里
CocoaPods
依赖库就发布成功了,可以使用pod search 库名称
命令搜索验证。如果搜索不到,执行以下命令// 更新本地的CocoaPods库 pod repo update // 然后使用下面的命令搜索 // pod search 库名称 --simple pod search ELKChainedAlloy --simple
搜索到的结果如下图
-
更新CocoaPods依赖库文件
更新
CocoaPods
上的库文件非常简单
1、把修改(升级)后的库代码push
到GitHub
上
2、修改CocoaPods
配置索引文件.podspec
修改库配置文件的版本信息s.version
,和必要的其他配置信息。
3、打标签,推送到CocoaPods
远程仓库
打标签,推送标签git tag '版本信息' git push --tags
推送库到
CocoaPods
远程仓库// pod trunk push 完整的.podspec文件名 pod trunk push 完整的.podspec文件名 --allow-warnings
CocoaPods
自定义库文件更新完毕!
-
删除CocoaPods依赖库文件
目前貌似不支持删除CocoaPods上已有的公开库依赖,我猜想直接删除Git上的库源代码,即可删除CocoaPods依赖库。