使用 Cocoapods 管理你的项目

本文是一个教你使用CocoaPods管理开源模块的文章。

作为一个 iOS 开发者,几乎所有人都使用过 CocoaPods 。作为 iOS 开发中最常用最有名的类库管理工具,给开发者带来了很大的便利。而且现在很多的第三方类库都支持 Pod . 如果一名开发者想要将自己的代码开源给更多的人使用,支持 CocoaPods 肯定是更好的办法。

最近一直在考虑将公司的项目使用 CocoaPods 来模块管理,所以将前段时间重新写的 SYNetwork 进行了对其他类的解耦,在这个过程中学到了很多组织代码的经验, 加上最近正在读的 《设计模式之禅》 逐渐意识到之前自己组织代码的能力还是有所欠缺,很多模块之间也进行了一些完全没有必要的耦合,这其实是很烂的编码形式。

由于公司并没有构建自己的 git 服务器, 而是将代码托管在了 oschina ,所以索性将这个模块开源并放在了github上。然后尝试使用 CocoaPods 来管理这个模块,并在公司其他几个项目中进行推广。

这只是我模块化项目的第一步。

好了, 扯淡部分完成。

在 GitHub 创建代码仓库

因为 CocoaPods 始终还是要将代码放在 GitHub 上的,所以我们还是创建一个代码仓库来保存这些代码吧!

这一步完成之后需要记住两个内容

  • 项目的 ssh地址 git@github.com:CepheusSun/SYNetwork.git
  • 项目的名称 SYNetwork

在本地创建 podspec 文件

在终端中执行命令

1
pod lib create SYNetwork

终端会提示

Cloning https://github.com/CocoaPods/pod-template.git into pod.

克隆完成之后会连续的回答几个问题,根据实际情况来选择吧!

回答问题之后,在桌面上会有一个SYNetwork文件夹。在这个文件夹中又有一个文件夹SYNetwork里面有两个文件

  • Classes
  • Assets

其中Classes 存放的你的源代码,Assets 应该好似一些图片资源什么的,我这个仓库里面并没有用到。

还是重新整理一下Clone下来的SYNetwork吧

  • 在 Example 文件中是自动创建的 demo 项目, 回答问题之后会自动打开这个项目,不用管它,果断的关掉它,然后 cd 到这个文件夹中 pod install一下。
  • 将我们写的代码放进 SYNetwork/SYNetwork/Classes/文件夹中。
  • 重新 cd 到 example 文件夹,执行 pod update

完成上面三步之后,可以在你的 demo 项目中尝试使用一些你的库,不过我没有,偷了一个懒😊

在podspec文件中编码

我使用的是Sublime Text

打开第一个SYNetwork文件夹中的SYNetwork.podspec文件。这个文件就是配置 CoaoaPods 基本信息的文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
Pod::Spec.new do |s|
# pod 库名
s.name = 'SYNetwork'
# pod 版本
s.version = '3.0'
# pod 概述
s.summary = 'A grest network frameworks.'
# pod的详细描述
s.description = <<-DESC
’this is A great network frameworks'
DESC
# pod 的主页
s.homepage = 'https://github.com/CepheusSun/SYNetwork'
# 许可证书
s.license = { :type => 'MIT', :file => 'LICENSE' }
# 作者信息
s.author = { 'CepheusSun' => 'cd_sunyang@163.com' }
# pod 源码在 GitHub 的仓库地址,以及 pod 版本
s.source = { :git => 'https://github.com/CepheusSun/SYNetwork.git', :tag => 3.0 }
# pod 支持 iOS 系统
s.ios.deployment_target = '8.0'
s.source_files = 'SYNetwork/Classes/*'
# s.public_header_files = 'SYNetwork/Classes/SYNetwork.h'
# s.frameworks = 'UIKit', 'MapKit'
s.dependency 'AFNetworking', '~> 3.0'
end

需要注意的是

1.

s.source_files

s.public_header_files 中设置的文件路径一定应该是正确的。不然后面会出问题。

2.

s.version

s.source中设置的版本应该要对上吧,我不知道对不上会有什么问题。这个地方也会有很多的坑。还有就是至今没明白为什么我如果用 0.1.0 这样会报错,所以我就用了 1.0

验证一下

在终端中执行

1
pod lib lint

如果出现

1
2
-> SYNetwork (3.0)
SYNetwork passed validation.

就是验证通过

不然就需要去改各种问题了

注册CocoaPods

要上传你的代码到 CocoaPods 肯定也需要注册自己的身份。

1
pod trunk register your_email_address 'your_name'

成功之后 CocoaPods 会发送一验证邮件到上面的邮箱,确认一下就OK

这里的your_name非常建议你使用 GitHub 的用户名 邮箱也是

上传

1
2
3
git tag -m"first release" "3.0"
git push --tags
pod trunk push iOS_Category.podspec

这了的 3.0 就是SYNetwork.podspec中的 3.0

最后搜索一下吧

1
pod search SYNetwork

总结

一些坑吧!

路径不对

Unable to interpret the specified path as a podspec

看你的 tag 标记和 podSpec 文件的 version 字段是否一致

账号验证失败

Authentication token is invalid or unverified. Either verify it with the email that was sent or register a new session.

按照如下步骤:

  1. pod trunk register 你的邮箱
  2. 打开邮箱验证
  3. 重新执行pod trunk push podspec 提交podspec文件

参考资料

[在CocoaPods上创建自己iOS程序的依赖管理

使用 CocoaPods 进行团队协作

CepheusSun wechat
订阅我的公众号,每次更新我都不一定会告诉你!
坚持原创技术分享,您的支持将鼓励我继续创作!
0%