让自己的代码支持CocoaPods

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
WX20171101-103202.png

成功后的工程的目录结构是这个样子

WX20171101-103302.png
  • 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 ,就此大功告成

WX20171101-111509.png

参考链接


Cocoapods公有库与私有库
iOS开发-- 创建podspec文件,为自己的项目添加pod支持
Cocoapods: pod search无法搜索到类库的解决办法

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,236评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,867评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,715评论 0 340
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,899评论 1 278
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,895评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,733评论 1 283
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,085评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,722评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,025评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,696评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,816评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,447评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,057评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,009评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,254评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,204评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,561评论 2 343

推荐阅读更多精彩内容