準(zhǔn)備:
github賬號(hào)淳衙,在GitHub上新建一個(gè)工程(工程名稱就是這個(gè)庫的名稱)
cocoapods賬號(hào),注冊(cè)流程如下饺著,已注冊(cè)過的verbose可以不加
pod trunk register 郵箱地址 '用戶名' verbose
然后去郵箱看看箫攀,cocoapods官方會(huì)發(fā)一個(gè)郵件,點(diǎn)擊郵件里的鏈接進(jìn)行驗(yàn)證幼衰。
想驗(yàn)證是否注冊(cè)成功靴跛,成功的話會(huì)打印出來賬號(hào)郵箱等信息
pod trunk me
- Name: xinsun001
- Email: 1453724801@qq.com
- Since: April 13th, 00:12
- Pods: None
創(chuàng)建:
cd到要?jiǎng)?chuàng)建pod庫的目錄下,執(zhí)行
pod lib create XSPodDemo
工程名稱要和GitHub的一致渡嚣。
如果在已有的項(xiàng)目上梢睛,先cd到項(xiàng)目目錄,然后執(zhí)行
pod spec create 項(xiàng)目名
會(huì)出現(xiàn)Cloning `https://github.com/CocoaPods/pod-template.git` into `XSPodDemo`.
然后要等一會(huì)识椰,有可能會(huì)報(bào)超時(shí)錯(cuò)誤绝葡,這時(shí)候重新執(zhí)行命令就好,國內(nèi)墻的原因腹鹉。然后下面會(huì)有幾個(gè)問題藏畅,跟著提示回答一下就好
//平臺(tái)
What platform do you want to use?? [ iOS / macOS ]
> iOS
//語言
What language do you want to use?? [ Swift / ObjC ]
> ObjC
//是否需要一個(gè)demo工程
Would you like to include a demo application with your library? [ Yes / No ]
> Yes
//測(cè)試框架
Which testing frameworks will you use? [ Specta / Kiwi / None ]
> None
//是否要UI測(cè)試
Would you like to do view based testing? [ Yes / No ]
> No
//類名的前綴
What is your class prefix?
> XS
創(chuàng)建好的工程會(huì)自動(dòng)打開
配置:
在 ./XSPodDemo/Podspec Metadata下面進(jìn)行配置,如果是已有的項(xiàng)目功咒,直接在項(xiàng)目下創(chuàng)建.podspec文件pod spec create 項(xiàng)目名
愉阎,然后復(fù)制一個(gè)LECENSE文件
1 打開.podspec文件
# To learn more about a Podspec see https://guides.cocoapods.org/syntax/podspec.html
#
//這不要管
Pod::Spec.new do |s|
//庫的名稱绞蹦,不用改
s.name = 'XSPodDemo'、
//初始版本號(hào)榜旦,別動(dòng)
s.version = '0.1.0'
//對(duì)庫的簡(jiǎn)單概括
s.summary = 'pod管理測(cè)試demo'
# 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
//庫的地址
s.homepage = 'https://github.com/xinsun001/XSPodDemo'
# s.screenshots = 'www.example.com/screenshots_1', 'www.example.com/screenshots_2'
//協(xié)議類型
s.license = { :type => 'MIT', :file => 'LICENSE' }
//作者和郵箱
s.author = { 'xinsun001' => '1453724801@qq.com' }
//庫的地址和版本幽七,由于開發(fā)時(shí)還沒有版本,所以tag的版本還沒寫
s.source = { :git => 'https://github.com/xinsun001/XSPodDemo.git', :tag => s.version.to_s }
//社交賬號(hào)章办,不想寫就不寫
# s.social_media_url = 'https://twitter.com/<TWITTER_USERNAME>'
//最低支持的版本
s.ios.deployment_target = '10.0'
//庫的本地路徑锉走,不要瞎寫
s.source_files = 'XSPodDemo/Classes/**/*'
//指定文件類型,上面一行沒指定藕届,就會(huì)讀取所有的
# s.source_files = 'XSPodDemo/Classes/**/*.{h,m}'
//圖片路徑
# s.resource_bundles = {
# 'XSPodDemo' => ['XSPodDemo/Assets/*.png']
# }
# s.public_header_files = 'Pod/Classes/**/*.h'
//使用的frameworks
# s.frameworks = 'UIKit', 'MapKit'
//其他依賴庫
# s.dependency 'AFNetworking', '~> 2.3'
end
2:README.md
庫的介紹及使用等挪蹭,隨便寫,注意一下郵箱和作者名稱是不是你自己
3LISCENSE
協(xié)議文件休偶,看一下作者和郵箱就行
添加庫:
打開文件目錄梁厉,找到Classes文件夾,所有的實(shí)現(xiàn)文件都要放在這個(gè)目錄下面
到Example執(zhí)行pod install踏兜,然后打開工程词顾,看看pod文件里面,應(yīng)該已經(jīng)有你添加的那些文件了碱妆。
推送到遠(yuǎn)程:
這里的步驟和推送新的工程代碼一致肉盹,命令如下:
cd到工程目錄(含有REAMED.MD的那個(gè)目錄)
git init
//注意這里不要再用https的方式了,用ssh的方式疹尾,要先去github上給你的電腦配置key
git remote add origin git@github.com:xinsun001/XSPodDemo.git
git add .
git commit -m "你的描述"
git branch -M main
git push -u origin main
推送成功后再github上可以看到你的代碼了上忍。驗(yàn)證你的pod是否可用,要找一個(gè)帶有podfile的工程纳本,在里面添加你的依賴窍蓝,注意:git
中間不要有空格
pod 'XSPodDemo', :git => "https://github.com/xinsun001/XSPodDemo.git"
在新的工程執(zhí)行pod install命令,查看是否拉取成功繁成。
O朋稀!=硗蟆面睛!鼓掌??,現(xiàn)在祠墅,自己的遠(yuǎn)程庫已經(jīng)成功了
通過trunk push發(fā)布到cocoapods上面:
執(zhí)行pod search XSPodDemo侮穿,你會(huì)發(fā)現(xiàn)搜不到,想要搜到的話毁嗦,必須要打tag亲茅,就像Masonry那樣,后面可以選擇版本號(hào),而且不用加:git地址.
git tag 0.1.0
git push --tags
//刪除本地tag
git tag -d name
//刪除遠(yuǎn)程tag
git tag -d [0.1.0]
git push origin :refs/tags/0.1.0
//清除緩存
git rm -r --cached .
之后要把.podspec文件推到github的cocoapods工程的spec文件夾下面
查看.podspec是否合法:
pod lib lint --verbose
有報(bào)錯(cuò):
[!] XSPodDemo did not pass validation, due to 4 warnings (but you can use `--allow-warnings` to ignore them). You can use the `--no-clean` option to inspect any issue.
還沒有正式生成 release 版本克锣, github 上并沒有任何 tag茵肃,所以我們剛才填寫 .podspec 文件填寫 git 地址的時(shí)候沒有填寫指定 tag,可以根據(jù)提示先把警告忽略:
pod lib lint --allow-warnings
遠(yuǎn)程驗(yàn)證:
pod spec lint XSPodDemo.podspec --allow-warnings
提交到pod袭祟,這里要等蠻長(zhǎng)時(shí)間的验残,而且有幾率超時(shí)導(dǎo)致錯(cuò)誤。tag版本要指定巾乳,不然會(huì)報(bào)錯(cuò)
在.podspec中:
s.source = { :git => 'https://github.com/xinsun001/XSPodDemo.git', :tag => '0.1.0' }
推送:
pod trunk push XSPodDemo.podspec --verbose
如果有這個(gè)錯(cuò)誤:[!] The spec did not pass validation, due to 3 warnings (but you can use `--allow-warnings` to ignore them).
可以在后面加--allow-warnings把警告忽略掉
pod trunk push XSPodDemo.podspec --verbose --allow-warnings
如果是私有庫:
pod repo push youSpeces JCZJTest.podspec
youSpeces是你的cocoapods私有庫您没,pod的時(shí)候需要在文件最上面加trunk:
source 'https://github.com/CocoaPods/youSpeces.git'
成功后的打印
而且pod會(huì)給你的郵箱發(fā)送一個(gè)郵件
然后搜一下這個(gè)庫
pod search XSPodDemo
搜不到的話,先清除本地的search
rm ~/Library/Caches/CocoaPods/search_index.json
還不行的話胆绊,更新pod
pod repo update
什么還是搜不到氨鹏?那么可以放大招了,先
pod repo
然后刪掉cocoapods
pod repo remove cocoapods
再重新添加進(jìn)來
pod repo add cocoapods https://github.com/CocoaPods/Specs.git
之后就是漫長(zhǎng)的等待压状,有可能會(huì)超時(shí)錯(cuò)誤仆抵,重試就好。添加成功后再執(zhí)行
pod search XSPodDemo
就可以看到了之后就可以在podfile文件里面直接進(jìn)行引用了
pod 'XSPodDemo', '~> 0.1.0'
感謝閱讀种冬,如果覺得不錯(cuò)的話镣丑,給點(diǎn)個(gè)贊吧
本篇完!S榱健莺匠!