如果您能看這篇文章,相信您已經(jīng)了解并喜歡上了 Cocoapods, 下面我們一步一步的創(chuàng)建一個(gè)屬于自己的 Cocoapods 庫(kù).
創(chuàng)建
通過(guò)下面命令,可以使用一個(gè)創(chuàng)建向?qū)Ш?jiǎn)歷 Cocoapods 庫(kù)
pod lib create GUICodeSnippet
然后終端會(huì)進(jìn)行引導(dǎo),依次選擇即可. 回車(chē)鍵確認(rèn)默認(rèn)選擇.
問(wèn)題依次是:
語(yǔ)言
創(chuàng)建demo工程( 極力推薦創(chuàng)建)
選擇測(cè)試框架 (可選擇默認(rèn),如果非常確定沒(méi)有需要,可以選擇None)
View-based Testing (官方推薦使用
FBSnapShotTestCase
)OC類(lèi)前綴 (如果語(yǔ)言選擇非OC,不會(huì)有這項(xiàng))
打開(kāi)工程,會(huì)發(fā)現(xiàn)有一個(gè) GUICodeSnippet 和一個(gè) Pods, 在
Pods->Development Pods->GUICodeSnippet->Pod->Classes
中,有一個(gè)ReplaceMe.m
你需要將這個(gè)文件替換成自己的代碼文件.
源碼驗(yàn)證
進(jìn)入 Example 目錄 , 執(zhí)行
pod install
然后 Xcode 打開(kāi) xcworkspace 文件 ,去跑一下項(xiàng)目,如果沒(méi)有錯(cuò)誤,證明添加的代碼沒(méi)有問(wèn)題,可以繼續(xù)進(jìn)行
準(zhǔn)備工作
配置 podspec 文件
#
# Be sure to run `pod lib lint GUICodeSnippet.podspec' to ensure this is a
# valid spec before submitting.
#
# Any lines starting with a # are optional, but their use is encouraged
# To learn more about a Podspec see http://guides.cocoapods.org/syntax/podspec.html
#
Pod::Spec.new do |s|
s.name = "GUICodeSnippet"
s.version = "0.1.8"
s.summary = "code segment of kennyGui"
# 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
code segment of kenny ,and in most situation ,is for private use only
DESC
s.homepage = "https://git.oschina.net/kennygui/GUICodeSnippet"
# s.screenshots = "www.example.com/screenshots_1", "www.example.com/screenshots_2"
s.license = 'MIT'
s.author = { "katsurake" => "katsurake@foxmail.com" }
s.source = { :git => "https://git.oschina.net/kennygui/GUICodeSnippet.git", :tag => s.version.to_s }
# s.social_media_url = 'https://twitter.com/<TWITTER_USERNAME>'
s.platform = :ios, '7.0'
s.requires_arc = true
s.source_files = 'Pod/Classes/*.h'
s.resource_bundles = {
'GUICodeSnippet' => ['Pod/Assets/*.png']
}
s.public_header_files = 'Pod/Classes/*.h'
s.frameworks = 'UIKit', 'MapKit'
s.dependency 'AFNetworking', '~> 2.3'
s.dependency 'CocoaLumberjack', '~> 2.2.0'
s.dependency 'MBProgressHUD', '~> 0.9.2'
s.dependency 'Masonry', '~> 0.6.4'
s.dependency 'ReactiveCocoa', '~> 2.5'
s.dependency 'YapDatabase', '~> 2.8.3'
s.dependency 'DTCoreText', '~> 1.6.17'
s.dependency 'MJExtension', '~> 3.0.10'
end
創(chuàng)建完畢之后,隨手使用
pod lib lint
命令驗(yàn)證是否編寫(xiě)正確,如果沒(méi)有正確,根據(jù)提示修改即可.
幾個(gè)好用的命令:
--verbose
完整打印詳情,可以幫助我們調(diào)試,用法 pod lib lint --verbose
--allow-warnings
忽略警告,由于一些三方代碼有警告,所以造成始終無(wú)法通過(guò),可以用這個(gè)方法忽略警告,用法同上
創(chuàng)建代碼倉(cāng)庫(kù)
在github 或者其他托管平臺(tái)建立一個(gè)空項(xiàng)目,最好項(xiàng)目名稱(chēng)和本地的一致
git add .
git commit -m “Initial Commit"
git remote add origin https://github.com/kennyGui/GUICodeSnippet.git
git push -u origin master
其實(shí)我更喜歡的方式是, Clone 空項(xiàng)目,然后替換代碼的 .git 文件夾,這樣更暴力,具體怎么選擇,看個(gè)人喜好.
打 tag
git tag -a 0.1.0 -m "初始版本"
通常的git push不會(huì)將標(biāo)簽對(duì)象提交到git服務(wù)器,我們需要進(jìn)行顯式的操作:
git push origin 0.1.2 # 將v0.1.2標(biāo)簽提交到git服務(wù)器
或者
git push origin –tags # 將本地所有標(biāo)簽一次性提交到git服務(wù)器
驗(yàn)證標(biāo)簽成功
git tag #查看標(biāo)簽
推送描述文件
使用這個(gè)命令推送自己的庫(kù)的信息到官方的 Master 庫(kù)
pod trunk push GUICodeSnippet.podspec
但是如果你是第一次使用的話(huà),需要注冊(cè) Session
使用如下命令注冊(cè)自己的郵箱(注意替換成自己的郵箱)
pod trunk register orta@cocoapods.org 'Orta Therox' --description='macbook air'
稍后, 郵箱會(huì)收到郵件, 點(diǎn)擊鏈接即可
pod trunk push BlinkingLabel.podspec
由于網(wǎng)絡(luò)原因(你懂得),可能會(huì)推送失敗,多嘗試幾次即可.
驗(yàn)證
可以讓同事或者朋友使用
pod search GUICodeSnippet
這個(gè)命令進(jìn)行測(cè)試,但是,如果是第一次,應(yīng)該是找不到的.
需要使用
pod setup
更新一下本地的 Maser 庫(kù)信息
結(jié)語(yǔ)
好了,現(xiàn)在,你就可以將自己的代碼共享給小伙伴使用啦.
現(xiàn)在 pod 里面的 Class 都是放在一個(gè)文件夾下的,沒(méi)有辦法實(shí)現(xiàn)子文件夾,(即使工程里面有多個(gè)文件夾,但是弄好 cocoapods 之后,也是都放到一個(gè)文件夾下面了)
這需要我們的 spec 里面配置 subspec ,這個(gè)知識(shí)點(diǎn)會(huì)在下一篇文章中說(shuō)
如果你遇到了問(wèn)題,請(qǐng)留言,我看到后會(huì)盡力解答,共同進(jìn)步!