cocoapod 大家都用过,一些好的第三方的,比如Masonry ,AFNetworking,那你有没有想过有一天把自己写的工具类,分类,封装好,在下一个项目中直接用pod 导入呢;
下面我们就开始做自己的pod
1. 首先在github创建一个项目
这个 pod 我们就叫 ios_categoryPP 吧;
git仓库创建好了
链接 https://github.com/hunter858/ios_categoryPP.git
现在里面什么都没有,那么我们该干嘛呢,把仓库 克隆下来,把我们需要支持的类和 demo 放到仓库中;
2. 在本地新建一个文件夹
取名 ios_categoryPP_demo
在终端进入到该文件夹下,执行该命令 (该命令的意思是clone 仓库到 ios_categoryPP_demo 文件夹内)
可用pwd 查看是否到了正确的文件夹下
git clone https://github.com/hunter858/ios_categoryPP.git
3. 新建一个 Classes 文件夹用来放我们需要支持的类
因为克隆下来的仓库 自己又一个文件夹 ,文件夹名称和仓库名称一致,所以我们在 ios_categoryPP
下建 Classe
文件夹,用来放置pod 支持的类;
再建立一个文件夹叫 [pod名称]demo 的文件夹
,这里我是为了规范,告诉用我这个库的用户,我这里有一个demo文件夹,里面又一个库支持的demo工程,一些fock我项目的人也可以直接运行项目,进行更新;
4. 进入到有 .git 的文件夹内;
执行
$ pod spec create iOS_CategoryPP
生成一个ios_categoryPP.podspec
添加Pods依赖库所需文件;
依赖库所需的文件格式为 {project}.podspec 格式,每个Pods依赖库必须有这个描述文件
6. podspec 文件用xcode 打开配置信息如下;
需要把里面的信息填写完成,才不会报错;必填信息可爱的网友已经整理出来了,我就借过来一下,如下所示;
Pod::Spec.new do |s|
s.name = "ios_categoryPP" #名称
s.version = "0.0.1" #版本号
s.summary = "在这里写你对这个pod 的介绍信息" #描述
s.homepage = "这里填写你在pod在github支持的仓库就行了" #描述页面
s.license = "MIT" #版权声明
s.author = { "作者名称" => "作者邮箱地址" } #作者信息
s.platform = :ios, "5.0" #使用平台
s.source = { :git => "github.com/hunter858/ios_categoryPP.git", :tag => "#{s.version}" } #源码地址
s.source_files = "Classes", "Classes/**/*.{h,m}" #源码文件
s.frameworks = "CoreGraphics", "CoreFoundation", "Foundation", "UIKit" #依赖的framework
s.requires_arc = true #是否支持ARC
end
如果你第一次做一个很基础的pod demo 的话,上面的配置信息,基本ok了;
7.pod验证
执行命令
pod lib lint
如果碰见错误,必须要解决掉,才能创建成功;
-
比如还是碰见报错信息
➜ ios_categoryPP git:(master) ✗ pod lib lint
-> ios_categoryPP (0.0.1)
- WARN | github_sources: Github repositories should end in.git
.
- WARN | [iOS] license: Unable to find a license file[!] ios_categoryPP did not pass validation, due to 2 warnings (but you can use
--allow-warnings
to ignore them).
You can use the--no-clean
option to inspect any issue.
解释:
第一个说你的项目库 必须要以.git 结束,我们去找到问题,然后解决
这里需要创建一个 license 文件 , 在终端中键入touch license
暂时什么都不写,等提交成功后,找一个比较知名的pod,把人家的内容copy 一份,抄进来;
注意文件名是否大小写,不然还会报错,这里创建了一个小写的 license,然后两个问题解决了
执行 pod lib lint
成功了
-> ios_categoryPP git:(master) ✗ pod lib lint
-> ios_categoryPP (0.0.1)
ios_categoryPP passed validation.
编码成功后,打上tag标签,与podspec里面的tag 标签一致,才能推上去;
git tag -m "注释信息" "0.0.1"
git push --tags
推送tag 到远端分支上, 后面的是tag 版本号 ,和ios_categoryPP.podspec 下里面写的版本号一致;
$ pod lib lint --allow-warnings
$ pod lib lint --verbose
附带说一下,Xcode允许警告存在,所以可以通过命令屏蔽警告
如果出现Error但是提示信息不足,可以添加--verbose 以获取更多错误信息
pod trunk push ios_categoryPP.podspec
把 .podspec 推送上去;
如果是第一次使用的话,需要去注册一下; CocoaPods Trunk
注册方法执行以下命令
$ pod trunk register orta@cocoapods.org 'Orta Therox' --description='macbook air'
$ pod trunk register xxx@email 'xxxx' --description='xxxx'
进入邮箱,找到发送的验证码链接,在浏览器打开,激活成功,就可以用了,so easy;
执行命令 pod lib lint 成功;
pod trunk push ios_categoryPP.podspec
推送成功
➜ ios_categoryPP git:(master) pod trunk push ios_categoryPP.podspec
Updating spec repo `master`
CocoaPods 1.4.0.beta.2 is available.
To update use: `sudo gem install cocoapods --pre`
[!] This is a test version we'd love you to try.
For more information, see https://blog.cocoapods.org and the CHANGELOG for this version at https://github.com/CocoaPods/CocoaPods/releases/tag/1.4.0.beta.2
Validating podspec
-> ios_categoryPP (0.0.1)
Updating spec repo `master`
CocoaPods 1.4.0.beta.2 is available.
To update use: `sudo gem install cocoapods --pre`
[!] This is a test version we'd love you to try.
For more information, see https://blog.cocoapods.org and the CHANGELOG for this version at https://github.com/CocoaPods/CocoaPods/releases/tag/1.4.0.beta.2
- Data URL: https://raw.githubusercontent.com/CocoaPods/Specs/bdda21026298108ad9da4a61987a0840d05bf014/Specs/1/e/3/ios_categoryPP/0.0.1/ios_categoryPP.podspec.json
- Log messages:
- October 31st, 04:05: Push for `ios_categoryPP 0.0.1' initiated.
- October 31st, 04:05: Push for `ios_categoryPP 0.0.1' has been pushed
(0.735147935 s).
但是我 执行命令没有找到我的pod ,所以我搜索了以下找到解决方法;
pod search ios_categoryPP
pod setup
成功后会生成~/Library/Caches/CocoaPods/search_index.json文件终端输入rm ~/Library/Caches/CocoaPods/search_index.json
删除成功后再执行pod search
后在一次输入:pod search xxxx
啰嗦重度患者再来说一遍创建和提交流程
pod search ios_categoryPP
rm ~/Library/Caches/CocoaPods/search_index.json
pod search
pod search ios_categoryPP
- 等待一会应该就出来了
成功找到自己上传的pod
成功后的工程的目录结构是这个样子
- pod set 成功的log
➜ ~ pod setup
Setting up CocoaPods master repo
$ /usr/bin/git clone https://github.com/CocoaPods/Specs.git master --progress
Cloning into 'master'...
remote: Counting objects: 1642516, done.
remote: Compressing objects: 100% (256/256), done.
remote: Total 1642516 (delta 118), reused 35 (delta 35), pack-reused 1642217
Receiving objects: 100% (1642516/1642516), 436.77 MiB | 872.00 KiB/s, done.
Resolving deltas: 100% (876336/876336), done.
Checking out files: 100% (193077/193077), done.
Setup completed
集成进自己的工程里,发现ok ,就此大功告成
参考链接
Cocoapods公有库与私有库
iOS开发-- 创建podspec文件,为自己的项目添加pod支持
Cocoapods: pod search无法搜索到类库的解决办法