創(chuàng)建自己的私有cocoaPods庫(kù)

感謝大佬的分享讓我參考屎勘,下面附上參考原文鏈接

參考文章1
參考文章2

  • 首先確保你安裝了cocoaPods,步驟自行百度膨疏,還有確保自己的git可以正常使用并且要確保自己的有配置添加公鑰牧愁。具體怎么添加公鑰自行百度,安裝git和設(shè)置git時(shí)候都會(huì)有設(shè)置的。

一. 直接上步驟了啊

  1. 在自己的git上創(chuàng)建兩個(gè)倉(cāng)庫(kù):JHSpecs(給自己的倉(cāng)庫(kù)寫(xiě)上描述:存放索引用的)蚕捉、LJHTestPod(給自己的倉(cāng)庫(kù)寫(xiě)上描述:存放源碼)。
  2. 在終端執(zhí)行如下命令
// 進(jìn)入到cocoapods文件夾中润努,這是一個(gè)隱藏文件夾(打開(kāi)隱藏文件夾com+shift+.)
MacBook-Pro:~ JH$ cd ~/.cocoapods/
// 查看cocoapods里的文件夾 會(huì)有一個(gè)repos
MacBook-Pro:.cocoapods JH$ ls
repos
// 進(jìn)入repos
MacBook-Pro:.cocoapods JH$ cd repos/
MacBook-Pro:repos JH$ ls
master
// 執(zhí)行pod repo add (git上創(chuàng)建的Specs后綴的項(xiàng)目名字) git鏈接 把這個(gè)空的項(xiàng)目克隆到repos文件夾內(nèi)
MacBook-Pro:repos JH$ pod repo add LJHSpecs https://github.com/JhLhH/LJHSpecs.git

git私有倉(cāng)庫(kù)JHSpecs就創(chuàng)建成功


1.png

將倉(cāng)庫(kù)克隆到repos里


2.png

二. 創(chuàng)建我們需要的pod項(xiàng)目
  1. 剛才我們進(jìn)入的是cocoapods/repos路徑关斜,現(xiàn)在我們切換到桌面
MacBook-Pro:repos JH$ cd ~/Desktop/
// 創(chuàng)建一個(gè)pod項(xiàng)目,它會(huì)自動(dòng)生成一個(gè)spec文件铺浇,后邊我們需要對(duì)這個(gè)文件進(jìn)行修改
MacBook-Pro:DesktopJH$ pod lib create LJHTestPod
  1. 接下來(lái)會(huì)顯示這些指令痢畜,按照自己的需求設(shè)置
Cloning `https://github.com/CocoaPods/pod-template.git` into `LJHTestPod`.
Configuring LJHTestPod template.
------------------------------
To get you started we need to ask a few questions, this should only take a minute.
If this is your first time we recommend running through with the guide: 
 - https://guides.cocoapods.org/making/using-pod-lib-create.html
 ( hold cmd and double click links to open in a browser. )
// 選擇系統(tǒng)
What platform do you want to use?? [ iOS / macOS ]
 > iOS
// 選擇語(yǔ)言
What language do you want to use?? [ Swift / ObjC ]
 > ObjC
// 詢問(wèn)你是否需要一個(gè)Example 也就是調(diào)試的demo
Would you like to include a demo application with your library? [ Yes / No ]
 > Yes
// 需要測(cè)試的frameworks
Which testing frameworks will you use? [ Specta / Kiwi / None ]
 > None
// 是否需要做基于視圖的測(cè)試
Would you like to do view based testing? [ Yes / No ]
 > No
// 前綴
What is your class prefix?
 > JH

選項(xiàng)填完之后回車,會(huì)自動(dòng)創(chuàng)建一個(gè)項(xiàng)目,名字就叫LJHTestPod


3.png
  1. 在LJHTestPod里面有兩個(gè)文件夾


    4.png

Assets:存放圖片資源等
Classes:存放源碼,默認(rèn)會(huì)有一個(gè)Replace.m文件

  1. 進(jìn)入LJHTestPod項(xiàng)目中修改LJHTestPod.podspec文件
Pod::Spec.new do |s|
    # pod庫(kù)名字
  s.name             = 'LJHTestPod'
  # 版本是必填項(xiàng)
  s.version          = '0.1.0'
  # 描述是必填的
  s.summary          = 'This is test 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
                       #可以隨便寫(xiě)鳍侣,比如我這里寫(xiě)了我的git地址
  s.homepage         = 'https://github.com/JhLhH'
  # s.screenshots     = 'www.example.com/screenshots_1', 'www.example.com/screenshots_2'
  s.license          = { :type => 'MIT', :file => 'LICENSE' }
  s.author           = { 'JhLhH' => 'Li.junheng@139.com' }
  # pod來(lái)源也就是你用來(lái)存放源碼的那個(gè)git倉(cāng)庫(kù)地址 tag值必填保持跟版本號(hào)一致
  s.source           = { :git => 'https://github.com/JhLhH/LJHTestPod.git', :tag => '0.1.0' }
  # s.social_media_url = 'https://twitter.com/<TWITTER_USERNAME>'

  s.ios.deployment_target = '8.0'

  s.source_files = 'LJHTestPod/Classes/**/*'
  
  # s.resource_bundles = {
  #   'LJHTestPod' => ['LJHTestPod/Assets/*.png']
  # }

  # s.public_header_files = 'Pod/Classes/**/*.h'
  # s.frameworks = 'UIKit', 'MapKit'
  # s.dependency 'AFNetworking', '~> 2.3'
end

然后保存后在終端做驗(yàn)證
做驗(yàn)證前先進(jìn)入包含LJHTestPod.podspec文件的目錄下

MacBook-Pro:Desktop JH$ cd LJHTestPod
MacBook-Pro:LJHTestPod JH$ ls
Example         LJHTestPod      README.md
LICENSE         LJHTestPod.podspec  _Pods.xcodeproj
MacBook-Pro:LJHTestPod JH$ pod lib lint LJHTestPod.podspec
// 當(dāng)出現(xiàn)passed validation就是驗(yàn)證成功了
 -> LJHTestPod (0.1.0)

LJHTestPod passed validation.

如果有警告:可以忽略警告去驗(yàn)證命令如下:
pod lib lint LJHTestPod.podspec --allow-warnings --verbose

  1. 剛才一系列操作我們搞出來(lái)了一個(gè)空的pod庫(kù)丁稀,現(xiàn)在開(kāi)始加入自己的.h.m文件
    1. 找到這個(gè)文件,刪除掉并加入自己的.h.m倚聚,注意要把自己的文件放進(jìn)Classes文件夾中哦
      5.png

      [圖片上傳中...(7.png-77b7f4-1529635877499-0)]
    2. 如果你在創(chuàng)建工程時(shí)候創(chuàng)建了一個(gè)包含demo的工程,那么你可以先切換到工程的Example文件目錄下面使用命令:
MacBook-Pro:LJHTestPod JH$ cd /Users/JH/Desktop/LJHTestPod/Example 
MacBook-Pro:Example JH$ pod install
Analyzing dependencies
Fetching podspec for `LJHTestPod` from `../`
Downloading dependencies
Installing LJHTestPod 0.1.0
Generating Pods project
Integrating client project
Sending stats
Pod installation complete! There is 1 dependency from the Podfile and 1 total pod installed.

成功以后你就可以在demo文件中使用你的功能文件了.如果不能導(dǎo)入,那么可以commond + B編譯一下再導(dǎo)入使用


8.png

9.png

10.png
  1. 準(zhǔn)備將自己的工程提交到git倉(cāng)庫(kù)线衫,在這之前再重復(fù)步驟4里邊的驗(yàn)證,進(jìn)入包含LJHTestPod.podspec文件的目錄下執(zhí)行:
MacBook-Pro:Desktop JH$ cd LJHTestPod
MacBook-Pro:LJHTestPod JH$ ls
Example         LJHTestPod      README.md
LICENSE         LJHTestPod.podspec  _Pods.xcodeproj
MacBook-Pro:LJHTestPod JH$ pod lib lint LJHTestPod.podspec
// 當(dāng)出現(xiàn)passed validation就是驗(yàn)證成功了
 -> LJHTestPod (0.1.0)

LJHTestPod passed validation.
// 如果因?yàn)榫媸×擞浀煤雎跃嬖俅悟?yàn)證

驗(yàn)證成功后惑折,開(kāi)始將自己的工程推送到github

git add .
git commit -m "Initial Commit"
這個(gè)git地址是存放pod源碼的倉(cāng)庫(kù)地址,注意不要搞混了啊桶雀,千萬(wàn)不要放個(gè)存放索引的那個(gè)git地址
git remote add origin https://github.com/JhLhH/LJHTestPod.git
git push -u origin master

做完以上操作沒(méi)問(wèn)題的話,再次驗(yàn)證

MacBook-Pro:LJHTestPod JH$ pod lib lint LJHTestPod.podspec

 -> LJHTestPod (0.1.0)

LJHTestPod passed validation.
  1. Specs倉(cāng)庫(kù)是用來(lái)存放GitHub上面所有公共Pod的索引的文件,我們要做到就是讓本地的pod在Specs建立聯(lián)系.在做這個(gè)之前,需要將我們完善后的工程代碼,打一個(gè)tag,同步到服務(wù)端:
MacBook-Pro:Example JH$ git tag 0.1.0
MacBook-Pro:Example JH$ git push origin 0.1.0
Total 0 (delta 0), reused 0 (delta 0)
To https://github.com/JhLhH/LJHTestPod.git
 * [new tag]         0.1.0 -> 0.1.0

終端切換到LJHTestPod.podspec文件所在的目錄下面,運(yùn)行命令再次驗(yàn)證

MacBook-Pro:LJHTestPod JH$ pod lib lint LJHTestPod.podspec

 -> LJHTestPod (0.1.0)

LJHTestPod passed validation.
  1. 提交自己的pod
// pod repo push 最開(kāi)始建立的私有庫(kù)名稱(就是存放索引的那個(gè)文件夾名字:LJHSpecs) pod項(xiàng)目中的spec文件(也就是LJHTestPod.podspec)
MacBook-Pro:LJHTestPod JH$ pod repo push LJHSpecs LJHTestPod.podspec

Validating spec
-> LJHTestPod (0.1.0)

Updating the `LJHSpecs' repo

Your configuration specifies to merge with the ref 'refs/heads/master'
from the remote, but no such ref was fetched.

Adding the spec to the `LJHSpecs' repo

- [Add] LJHTestPod (0.1.0)

Pushing the `LJHSpecs' repo

如果提交自己的pod失敗了唬复,先看是不是因?yàn)橛芯?有警告就用這個(gè)解決
pod repo push LJHSpecs LJHTestPod.podspec --allow-warnings --verbose

至此私有庫(kù)創(chuàng)建完成使用方法如下

我們先搜索下吧pod search LJHTestPod

11.png

不錯(cuò)搜索結(jié)果有顯示哦矗积!
大多情況下會(huì)出現(xiàn)這個(gè)問(wèn)題:

[!] Unable to find a pod with name, author, summary, or descriptionmatching LPodTest
這主要是因?yàn)樵诒镜厮饕锩鏇](méi)有, 解決辦法
pod setup (不行,使用第二個(gè)方法)
pod repo update(不行敞咧,使用第三個(gè)方法)
前往這個(gè)路徑下~/Library/Caches/CocoaPods刪除search_index.json文件 , 或者使用終端命令刪除:
rm ~/Library/Caches/CocoaPods/search_index.json
然后重新搜索

使用方法podfile

platform :ios, '8.0'
target 'JHDemo' do
pod 'LJHTestPod',:git=>'https://github.com/JhLhH/LJHTestPod.git'
end

This end ? NO NO NO

====================================================

如果我們需要通過(guò)版本號(hào)進(jìn)行pod,那么我們還沒(méi)結(jié)束還要繼續(xù)

提交pod 到Specs倉(cāng)庫(kù)棘捣,我們需要在spec文件的目錄內(nèi)
1. 先注冊(cè)trunk,之后會(huì)收到一封郵件,點(diǎn)擊驗(yàn)證即可
pod trunk register 你的郵箱 '你的名字' --verbose

12.png

13.png
  1. 查看自己的注冊(cè)信息
    pod trunk me

  2. 推送到trunk
    pod trunk push LJHTestPod.podspec
    推送完成后顯示

MacBook-Pro:LJHTestPod JH$ pod trunk push LJHTestPod.podspec 
Updating spec repo `master`
Validating podspec
 -> LJHTestPod (0.1.0)
Updating spec repo `master`
----------------------------------------------------------------------------    
   Congrats
   LJHTestPod (0.1.0) successfully published
   June 21st, 03:24
   https://cocoapods.org/pods/LJHTestPod
   Tell your friends!
----------------------------------------------------------------------------

那我們來(lái)測(cè)試私有pod,新建一個(gè)項(xiàng)目,然后進(jìn)入到項(xiàng)目文件中休建,podfile中寫(xiě)法兩種如下:

想要使用這種的必須操作

platform :ios, '8.0'
target 'WYATest' do
pod 'LJHTestPod','~>0.1.0'
end
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末乍恐,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子测砂,更是在濱河造成了極大的恐慌茵烈,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,682評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件砌些,死亡現(xiàn)場(chǎng)離奇詭異呜投,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)存璃,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,277評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén)仑荐,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人纵东,你說(shuō)我怎么就攤上這事粘招。” “怎么了偎球?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,083評(píng)論 0 355
  • 文/不壞的土叔 我叫張陵洒扎,是天一觀的道長(zhǎng)辑甜。 經(jīng)常有香客問(wèn)我,道長(zhǎng)袍冷,這世上最難降的妖魔是什么磷醋? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,763評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮难裆,結(jié)果婚禮上子檀,老公的妹妹穿的比我還像新娘。我一直安慰自己乃戈,他們只是感情好褂痰,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,785評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著症虑,像睡著了一般缩歪。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上谍憔,一...
    開(kāi)封第一講書(shū)人閱讀 51,624評(píng)論 1 305
  • 那天匪蝙,我揣著相機(jī)與錄音,去河邊找鬼习贫。 笑死逛球,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的苫昌。 我是一名探鬼主播颤绕,決...
    沈念sama閱讀 40,358評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼祟身!你這毒婦竟也來(lái)了奥务?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,261評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤袜硫,失蹤者是張志新(化名)和其女友劉穎氯葬,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體婉陷,經(jīng)...
    沈念sama閱讀 45,722評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡帚称,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,900評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了憨攒。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片世杀。...
    茶點(diǎn)故事閱讀 40,030評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖肝集,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情蛛壳,我是刑警寧澤杏瞻,帶...
    沈念sama閱讀 35,737評(píng)論 5 346
  • 正文 年R本政府宣布所刀,位于F島的核電站,受9級(jí)特大地震影響捞挥,放射性物質(zhì)發(fā)生泄漏浮创。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,360評(píng)論 3 330
  • 文/蒙蒙 一砌函、第九天 我趴在偏房一處隱蔽的房頂上張望斩披。 院中可真熱鬧,春花似錦讹俊、人聲如沸垦沉。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,941評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)厕倍。三九已至,卻和暖如春贩疙,著一層夾襖步出監(jiān)牢的瞬間讹弯,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,057評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工这溅, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留组民,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,237評(píng)論 3 371
  • 正文 我出身青樓悲靴,卻偏偏與公主長(zhǎng)得像臭胜,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子对竣,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,976評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容