一能扒、背景
目前iOS組件化常用的方案就是Pod+路由——持續(xù)集成迟郎,今天我們來創(chuàng)建一個Pod庫癣蟋。
二透硝、注冊用戶名和郵箱(此為GitHub的用戶名和綁定的郵箱)
1、可以使用如下指令查看自己是否已經(jīng)綁定過
$ pod trunk me
如果終端如圖一輸出疯搅,就表示已綁定濒生,否則未綁定2、未綁定幔欧,使用如下指令綁定
$ pod trunk register 你的郵箱 '你的用戶名' --description='這里是描述'
終端輸出如圖二
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'