iOS創(chuàng)建自己的pod庫

一能扒、背景

目前iOS組件化常用的方案就是Pod+路由——持續(xù)集成迟郎,今天我們來創(chuàng)建一個Pod庫癣蟋。

二透硝、注冊用戶名和郵箱(此為GitHub的用戶名和綁定的郵箱)

1、可以使用如下指令查看自己是否已經(jīng)綁定過

$ pod trunk me

如果終端如圖一輸出疯搅,就表示已綁定濒生,否則未綁定
圖一

2、未綁定幔欧,使用如下指令綁定

$ pod trunk register 你的郵箱 '你的用戶名' --description='這里是描述'

終端輸出如圖二

圖二
注:執(zhí)行完該命令后罪治,綁定的郵箱會收到一封郵件里面包含一個驗證的連接丽声,打開該鏈接進行驗證!

3规阀、然后在使用 $ pod trunk me 指令來驗證下恒序,是否綁定成功

二、在本地創(chuàng)建pod庫

1谁撼、根據(jù)自己存放的習慣創(chuàng)建一個空文件夾歧胁,用于存放我們的pod庫,然后打開它

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

3厉碟、執(zhí)行完上述命令后喊巍,會依次問如下問題

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'            //版本號根據(jù)自己的版本設(shè)定
  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上創(chuàng)建一個倉庫

1铐殃、如圖四創(chuàng)建一個新的倉庫
圖四

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

終端出現(xiàn)該輸出富腊,標識上傳成功
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. 就是成功通過了驗證。

到這我們只是創(chuàng)建了一個合格的空白的工程赘被,并沒有任何的功能是整,接下來我們就來創(chuàng)建自己的代碼!C窦佟8∪搿!

四羊异、添加自己的庫文件

1事秀、我們打開項目,創(chuàng)建一個類球化,聲明一個方法秽晚,一遍來測試

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

2筒愚、要把創(chuàng)建的文件放入到Classes文件夾里面,并刪除ReplaceMe.m文件
圖五

3菩浙、添加完代碼巢掺,執(zhí)行以下指令上傳到遠程倉庫

$ git add .
$ git commit -m "添加測試代碼"
$ git push

4句伶、發(fā)布項目到Cocoapods上去需要添加版本號的,并創(chuàng)建同名分支branch陆淀,用如下指令添加版本號

//添加版本號
$ git tag -a 0.1.0 -m "版本0.1"
//創(chuàng)建同名分支
$ 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

六含懊、發(fā)布pod庫(就是提交podspec文件到Specs倉庫)

使用如下命令

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

出現(xiàn)如下日志就表示發(fā)布成功了
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文件存在警告岔乔。若存在警告,則不能通過有效性驗證,導致發(fā)布失敾魑场馍管!
我們就使用如下命令

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

到這里創(chuàng)建和發(fā)布就結(jié)束了!W掠啊宙帝!可以使用了!:襞摺茄唐!
之前幫點的郵箱也會受到發(fā)布成功的郵件!S;Ρ唷!

七年扩、驗證和使用

1蚁廓、可以使用pod搜索指令來驗證自己是否發(fā)布成功

$ pod search YHBaseTest

有的時候會搜索不到,不要擔心厨幻,使用移除索引來解決
$ rm ~/Library/Caches/CocoaPods/search_index.json
再次搜索時相嵌,會自動重新創(chuàng)建索引

如果在次執(zhí)行$ pod search YHBaseTest,還是搜索不到發(fā)布的項目况脆,不要著急饭宾,就使用pod setup來更新本地版本庫

如果在這里還是搜索不到,那就不要在搜索了格了,直接創(chuàng)建一個測試項目看铆,創(chuàng)建Podfile文件,導入pod 'YHBaseTest'盛末,使用pod install來拉取

$ pod install

這時候發(fā)現(xiàn)可以正常打?qū)胛覀冏约旱腸ocopods庫

八弹惦、總結(jié)

我們還可以在.podspec文件中指定其他的依賴否淤,比如我們想基于AFNetworking,封裝一套屬于自己的網(wǎng)絡(luò)請求庫棠隐,那么我們就可以一并將AFNetworking也pod下了石抡,只需要增加一行代碼即可

#嘗試引入第三方依賴庫
s.dependency 'AFNetworking', '~> 2.3'
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市助泽,隨后出現(xiàn)的幾起案子啰扛,更是在濱河造成了極大的恐慌,老刑警劉巖嗡贺,帶你破解...
    沈念sama閱讀 216,372評論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件侠讯,死亡現(xiàn)場離奇詭異,居然都是意外死亡暑刃,警方通過查閱死者的電腦和手機厢漩,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,368評論 3 392
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來岩臣,“玉大人溜嗜,你說我怎么就攤上這事〖芑眩” “怎么了炸宵?”我有些...
    開封第一講書人閱讀 162,415評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長谷扣。 經(jīng)常有香客問我土全,道長,這世上最難降的妖魔是什么会涎? 我笑而不...
    開封第一講書人閱讀 58,157評論 1 292
  • 正文 為了忘掉前任裹匙,我火速辦了婚禮,結(jié)果婚禮上末秃,老公的妹妹穿的比我還像新娘概页。我一直安慰自己,他們只是感情好练慕,可當我...
    茶點故事閱讀 67,171評論 6 388
  • 文/花漫 我一把揭開白布惰匙。 她就那樣靜靜地躺著,像睡著了一般铃将。 火紅的嫁衣襯著肌膚如雪项鬼。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,125評論 1 297
  • 那天劲阎,我揣著相機與錄音绘盟,去河邊找鬼。 笑死,一個胖子當著我的面吹牛奥此,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播雁比,決...
    沈念sama閱讀 40,028評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼稚虎,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了偎捎?” 一聲冷哼從身側(cè)響起蠢终,我...
    開封第一講書人閱讀 38,887評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎茴她,沒想到半個月后寻拂,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,310評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡丈牢,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,533評論 2 332
  • 正文 我和宋清朗相戀三年祭钉,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片己沛。...
    茶點故事閱讀 39,690評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡慌核,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出申尼,到底是詐尸還是另有隱情垮卓,我是刑警寧澤,帶...
    沈念sama閱讀 35,411評論 5 343
  • 正文 年R本政府宣布师幕,位于F島的核電站粟按,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏霹粥。R本人自食惡果不足惜灭将,卻給世界環(huán)境...
    茶點故事閱讀 41,004評論 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望后控。 院中可真熱鬧宗侦,春花似錦、人聲如沸忆蚀。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽馋袜。三九已至男旗,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間欣鳖,已是汗流浹背察皇。 一陣腳步聲響...
    開封第一講書人閱讀 32,812評論 1 268
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人什荣。 一個月前我還...
    沈念sama閱讀 47,693評論 2 368
  • 正文 我出身青樓矾缓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親稻爬。 傳聞我的和親對象是個殘疾皇子嗜闻,可洞房花燭夜當晚...
    茶點故事閱讀 44,577評論 2 353