iOS创建自己的pod库

一、背景

目前iOS组件化常用的方案就是Pod+路由——持续集成,今天我们来创建一个Pod库。

二、注册用户名和邮箱(此为GitHub的用户名和绑定的邮箱)

1、可以使用如下指令查看自己是否已经绑定过

$ pod trunk me

如果终端如图一输出,就表示已绑定,否则未绑定
图一

2、未绑定,使用如下指令绑定

$ pod trunk register 你的邮箱 '你的用户名' --description='这里是描述'

终端输出如图二

图二
注:执行完该命令后,绑定的邮箱会收到一封邮件里面包含一个验证的连接,打开该链接进行验证!

3、然后在使用 $ pod trunk me 指令来验证下,是否绑定成功

二、在本地创建pod库

1、根据自己存放的习惯创建一个空文件夹,用于存放我们的pod库,然后打开它

$ cd /Users/xiaohe/Desktop/Cocoapods
$ pod lib create YHBaseTest

3、执行完上述命令后,会依次问如下问题

What platform do you want to use?? [ iOS / macOS ]
 > iOS
What language do you want to use?? [ Swift / ObjC ]
 > ObjC
Would you like to include a demo application with your library? [ Yes / No ]
 > Yes
Which testing frameworks will you use? [ Specta / Kiwi / None ]
 > None
Would you like to do view based testing? [ Yes / No ]
 > No
What is your class prefix?
 > YH

4、完成以上问题后,终端输出图三,并会自动打开项目
图三

5、然后我们配置YHBaseTest.podspec文件

Pod::Spec.new do |s|
  s.name             = 'YHBaseTest'
  s.version          = '0.1.0'            //版本号根据自己的版本设定
  s.summary          = '这是一个测试pod'    //这个描述要自己写一个不要使用默认的,不然会给一个警告的

# This description is used to generate tags and improve search results.
#   * Think: What does it do? Why did you write it? What is the focus?
#   * Try to keep it short, snappy and to the point.
#   * Write the description between the DESC delimiters below.
#   * Finally, don't worry about the indent, CocoaPods strips it!

  s.description      = <<-DESC
                        这个地方也是一个描述,要比summary这个地方的描述多一些
                       DESC

  s.homepage         = 'https://github.com/AugustCloud/YHBaseTest'
  # s.screenshots     = 'www.example.com/screenshots_1', 'www.example.com/screenshots_2'
  s.license          = { :type => 'MIT', :file => 'LICENSE' }
  s.author           = { '这个是绑定的用户名' => '这里是绑定的邮箱@163.com' }
  s.source           = { :git => 'https://github.com/AugustCloud/YHBaseTest.git', :tag => s.version.to_s }
  # s.social_media_url = 'https://twitter.com/<TWITTER_USERNAME>'

  s.ios.deployment_target = '9.0'

  s.source_files = 'YHBaseTest/Classes/**/*'
  
  # s.resource_bundles = {
  #   'YHBaseTest' => ['YHBaseTest/Assets/*.png']
  # }

  # s.public_header_files = 'Pod/Classes/**/*.h'
  # s.frameworks = 'UIKit', 'MapKit'
  # s.dependency 'AFNetworking', '~> 2.3'
end

三、去GitHub上创建一个仓库

1、如图四创建一个新的仓库
图四

2、接下来就把自己的工程推送到GitHub上。

//打开当前项目所在文件夹
$ cd /Users/xiaohe/Desktop/Cocoapods/YHBaseTest
$ git remote add origin 此为GitHub上面的仓库地址
$ git add .
$ git commit -m "first commit"
$ git push -u origin master

终端出现该输出,标识上传成功
To https://github.com/AugustCloud/YHBaseTest.git
 * [new branch]      master -> master
Branch 'master' set up to track remote branch 'master' from 'origin'.

3、验证本地podspec文件,使用如下指令

$ pod lib lint YHBaseTest.podspec

如报错:[!] YHBaseTest did not pass validation, due to 1 warning (but you can use `--allow-warnings` to ignore it).
使用如下指令
$ pod lib lint --allow-warnings

只要见到 YHBaseTest passed validation. 就是成功通过了验证。

到这我们只是创建了一个合格的空白的工程,并没有任何的功能,接下来我们就来创建自己的代码!!!!

四、添加自己的库文件

1、我们打开项目,创建一个类,声明一个方法,一遍来测试

- (void)testPrint {
    NSLog(@"哈哈哈,我的pod的打印");
}

2、要把创建的文件放入到Classes文件夹里面,并删除ReplaceMe.m文件
图五

3、添加完代码,执行以下指令上传到远程仓库

$ git add .
$ git commit -m "添加测试代码"
$ git push

4、发布项目到Cocoapods上去需要添加版本号的,并创建同名分支branch,用如下指令添加版本号

//添加版本号
$ git tag -a 0.1.0 -m "版本0.1"
//创建同名分支
$ git branch 0.1.0
//查看版本号
$ git tag
//将本地的添加的tag同步到远程代码仓库
$ git push --tag

五、验证本地podspec文件

1、打开podspec所在文件目录

$ cd podspec所在文件目录

2、使用验证命令

//YHBaseTest.podspec修改为自己的podspec文件名称
$ pod spec lint YHBaseTest.podspec

注:看到 YHBaseTest.podspec passed validation. 就说明验证通过

3、如果失败,输出如下的日志

[!] TestLib did not pass validation, due to 3 warnings (but you can use `--allow-warnings` to ignore them).

那就是用如下的指令

$ pod lib lint --allow-warnings

六、发布pod库(就是提交podspec文件到Specs仓库)

使用如下命令

//YHBaseTest.podspec 就是自己的podspec文件名称
$ pod trunk push YHBaseTest.podspec

出现如下日志就表示发布成功了
Updating spec repo `trunk`
Validating podspec
Updating spec repo `trunk`

--------------------------------------------------------------------------------
 🎉  Congrats

 🚀  YHBaseTest (0.1.0) successfully published
 📅  June 21st, 02:51
 🌎  https://cocoapods.org/pods/YHBaseTest
 👍  Tell your friends!

需要注意的是,这种提交命令,不允许你的podspec文件存在警告。若存在警告,则不能通过有效性验证,导致发布失败!
我们就使用如下命令

$ pod trunk push YHBaseTest.podspec --allow-warnings

到这里创建和发布就结束了!!!可以使用了!!!
之前帮点的邮箱也会受到发布成功的邮件!!!!

七、验证和使用

1、可以使用pod搜索指令来验证自己是否发布成功

$ pod search YHBaseTest

有的时候会搜索不到,不要担心,使用移除索引来解决
$ rm ~/Library/Caches/CocoaPods/search_index.json
再次搜索时,会自动重新创建索引

如果在次执行$ pod search YHBaseTest,还是搜索不到发布的项目,不要着急,就使用pod setup来更新本地版本库

如果在这里还是搜索不到,那就不要在搜索了,直接创建一个测试项目,创建Podfile文件,导入pod 'YHBaseTest',使用pod install来拉取

$ pod install

这时候发现可以正常打导入我们自己的cocopods库

八、总结

我们还可以在.podspec文件中指定其他的依赖,比如我们想基于AFNetworking,封装一套属于自己的网络请求库,那么我们就可以一并将AFNetworking也pod下了,只需要增加一行代码即可

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