一衰粹、背景
目前iOS組件化常用的方案就是Pod+路由——持續(xù)集成庇楞,今天我們來創(chuàng)建一個Pod庫钦无。
二、注冊用戶名和郵箱(此為GitHub的用戶名和綁定的郵箱)
1祠汇、可以使用如下指令查看自己是否已經綁定過
$ pod trunk me
如果終端如圖一輸出,就表示已綁定熄诡,否則未綁定
2可很、未綁定,使用如下指令綁定
$ pod trunk register 你的郵箱 '你的用戶名' --description='這里是描述'
終端輸出如圖二
注:執(zhí)行完該命令后凰浮,綁定的郵箱會收到一封郵件里面包含一個驗證的連接我抠,打開該鏈接進行驗證!
3袜茧、然后在使用 $ pod trunk me 指令來驗證下菜拓,是否綁定成功
二、在本地創(chuàng)建pod庫
1笛厦、根據自己存放的習慣創(chuàng)建一個空文件夾纳鼎,用于存放我們的pod庫,然后打開它
$ cd /Users/xiaohe/Desktop/Cocoapods
$ pod lib create ZSBaseTest
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?
> ZS
4劝贸、完成以上問題后,終端輸出圖三逗宁,并會自動打開項目
5映九、然后我們配置ZSBaseTest.podspec文件
Pod::Spec.new do |s|
s.name = 'ZSBaseTest'
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上創(chuàng)建一個倉庫
1、如圖四創(chuàng)建一個新的倉庫
2哼拔、接下來就把自己的工程推送到GitHub上嚼蚀。
//打開當前項目所在文件夾
$ cd /Users/xiaohe/Desktop/Cocoapods/ZSBaseTest
$ 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 ZSBaseTest.podspec
如報錯:[!] ZSBaseTest 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)建自己的代碼5嫉邸!4┟您单!
四、添加自己的庫文件
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 ZSBaseTest.podspec
注:看到 ZSBaseTest.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倉庫)
使用如下命令
//ZSBaseTest.podspec 就是自己的podspec文件名稱
$ pod trunk push ZSBaseTest.podspec
出現如下日志就表示發(fā)布成功了
Updating spec repo `trunk`
Validating podspec
Updating spec repo `trunk`
--------------------------------------------------------------------------------
?? Congrats
?? ZSBaseTest (0.1.0) successfully published
?? June 21st, 02:51
?? https://cocoapods.org/pods/YHBaseTest
?? Tell your friends!
需要注意的是,這種提交命令晌块,不允許你的podspec文件存在警告爱沟。若存在警告,則不能通過有效性驗證匆背,導致發(fā)布失敽羯臁!
我們就使用如下命令
$ pod trunk push ZSBaseTest.podspec --allow-warnings
到這里創(chuàng)建和發(fā)布就結束了6凼@ㄏ怼!可以使用了U浯佟A逑健!
之前幫點的郵箱也會受到發(fā)布成功的郵件V硇稹=空丁!穴翩!
七犬第、驗證和使用
1、可以使用pod搜索指令來驗證自己是否發(fā)布成功
$ pod search ZSBaseTest
有的時候會搜索不到芒帕,不要擔心歉嗓,使用移除索引來解決
$ rm ~/Library/Caches/CocoaPods/search_index.json
再次搜索時,會自動重新創(chuàng)建索引
如果在次執(zhí)行$ pod search ZSBaseTest背蟆,還是搜索不到發(fā)布的項目鉴分,不要著急,就使用pod setup來更新本地版本庫
如果在這里還是搜索不到带膀,那就不要在搜索了志珍,直接創(chuàng)建一個測試項目,創(chuàng)建Podfile文件本砰,導入pod 'ZSBaseTest'碴裙,使用pod install來拉取
$ pod install
或
$ pod update
這時候發(fā)現可以正常打導入我們自己的cocopods庫
推薦一款不錯的提示框ZSTips
pod導入方式: pod 'ZSTips'