一、創(chuàng)建遠(yuǎn)程索引庫(kù)
1算墨、我們先在GitHub上創(chuàng)建一個(gè)organization
2宵荒、添加一個(gè)遠(yuǎn)程索引庫(kù),填寫(xiě)相關(guān)信息
3、創(chuàng)建本地索引庫(kù)报咳,并與遠(yuǎn)程索引庫(kù)做關(guān)聯(lián)
a侠讯、打開(kāi)終端,
pod repo add 本地索引庫(kù)的名字 遠(yuǎn)程索引庫(kù)的地址
例如:pod repo add JerryNetworkManager https://github.com/JerryYJL/JerryNetworkManager.git
b暑刃、
pod repo
查看是否創(chuàng)建成功
二厢漩、創(chuàng)建組件
1、開(kāi)始創(chuàng)建組件
a岩臣、cd 到指定目錄溜嗜,然后
pod lib create 組件名
例如pod lib create JerryNetworkManager
b、而后填上項(xiàng)目相關(guān)信息架谎,便能成功創(chuàng)建組件
2炸宵、目錄相關(guān)
a、podspec文件
該文件是組件的核心配置中心谷扣,看一下podspec語(yǔ)法
Pod::Spec.new do |s|
# 組件名
s.name = 'JLNetworkingManager'
# 版本號(hào)土全,與tag標(biāo)簽對(duì)應(yīng)
s.version = '0.1.5'
# 組件的描述
s.summary = 'A short description of JLNetworking.'
# 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
TODO: Add long description of the pod here.
DESC
# 組件所在的遠(yuǎn)程倉(cāng)庫(kù)
s.homepage = 'https://github.com/JLNetWorking/JLNetworking'
# s.screenshots = 'www.example.com/screenshots_1', 'www.example.com/screenshots_2'
# 開(kāi)源協(xié)議
s.license = { :type => 'MIT', :file => 'LICENSE' }
# 作者信息
s.author = { 'Jerry' => '110*****@qq.com' }
# git地址,版本號(hào)
s.source = { :git => 'https://github.com/JLNetWorking/JLNetworking.git', :tag => s.version.to_s }
# s.social_media_url = 'https://twitter.com/<TWITTER_USERNAME>'
# 支持的iOS最低版本
s.ios.deployment_target = '11.0'
# 指定Swift編譯版本
s.swift_version = "5.0"
# 內(nèi)核設(shè)置
s.pod_target_xcconfig = { 'VALID_ARCHS' => 'x86_64 armv7 arm64' }
# 必備項(xiàng)会涎,代碼源文件地址裹匙,如果有多個(gè)目錄下則用逗號(hào)分開(kāi),否則"public_header_files"等不可用
s.source_files = 'JLNetworking/Classes/**/*'
# 公開(kāi)頭文件地址
# s.public_header_files = 'Pod/Classes/**/*.h'
# 所需的系統(tǒng)framework,多個(gè)用逗號(hào)隔開(kāi)末秃,不需要后綴名
# s.frameworks = 'UIKit', 'MapKit'
# 資源路徑
s.resource_bundles = {
'JLNetworkingManager' => ['JLNetworkingManager/Assets/**/*']
}
# 依賴(lài)第三方
s.dependency 'Moya/RxSwift'
s.dependency 'RxCocoa'
s.dependency 'HandyJSON'
s.dependency 'SwiftyJSON'
s.dependency 'SnapKit'
end
b概页、example文件,主要寫(xiě)demo相關(guān)
這個(gè)一般都是寫(xiě)demo练慕,給別人看這個(gè)組件是怎么用的惰匙,還有跑起來(lái)是啥效果之類(lèi)的
c、Podfile文件
這里可以導(dǎo)入你的demo需要的第三方贺待,且不會(huì)引入到你的組件里面
use_frameworks!
platform :ios, '11.0'
target 'JLNetworking_Example' do
pod 'JLNetworkingManager', :path => '../'
target 'JLNetworking_Tests' do
inherit! :search_paths
end
end
d徽曲、組件的核心內(nèi)容
這里就可以開(kāi)始你的代碼秀了
3零截、上傳
git add .
git commit -m 'xxx'
git remote add origin https://github.com/JLNetWorking/JLNetworking.git
git push origin master
git tag
版本號(hào)(需與podspec中的版本號(hào)一致)
git push --tags
4麸塞、podspec驗(yàn)證
pod spec lint --verbose --allow-warnings --sources='https://github.com/JLNetWorking/JLNetworking.git'
解釋
--
verbose
:打印錯(cuò)誤--
allow-warnings
:允許警告,默認(rèn)有警告的podspec會(huì)驗(yàn)證失敗--
sources
:如果依賴(lài)了其他不包含在官方specs里的pod,則用它來(lái)指明源涧衙,比如依賴(lài)了某個(gè)私有庫(kù)哪工。多個(gè)值以逗號(hào)分隔
5、推送
推送分為2種情況弧哎,一個(gè)是私有庫(kù)的推送雁比,例如公司自己的gitLabel;第二個(gè)是公有庫(kù)撤嫩,例如前面的GitHub
a偎捎、私有庫(kù)的推送
私有庫(kù)的推送比較直接
pod repo push JLNetworking JLNetworking.podspec --verbose --allow-warnings --sources=https://github.com/JLNetWorking/JLNetworking.git
b、公有庫(kù)的推送
公有庫(kù)的推送就比較麻煩,因?yàn)樾枰扑偷絚ocoapods茴她,所以第一次推送需要注冊(cè)賬號(hào)
注冊(cè)賬號(hào)
pod trunk register 郵箱 '名字' --description='macbook air' --verbose
注冊(cè)完會(huì)收到一份郵件寻拂,需要點(diǎn)擊驗(yàn)證,驗(yàn)證完之后可以查看個(gè)人信息
pod trunk me
如果信息正確丈牢,就可以推送了
pod repo push JLNetworking JLNetworking.podspec --verbose --allow-warnings --sources=https://github.com/JLNetWorking/JLNetworking.git
5祭钉、驗(yàn)證
pod search JLNetworkingManager
如果沒(méi)有搜到,可能就是本地倉(cāng)庫(kù)沒(méi)有更新更新repo庫(kù)己沛,然后再搜
pod repo update
pod組件就完成了慌核,下一篇開(kāi)始主項(xiàng)目跟組件的交流