目錄
- [創(chuàng)建與維護(hù)](# 1)
- 移除本地倉庫
- 移除本地倉庫中的lib.podspec
- Trunk發(fā)布自己的Pods
- 參考申明
<h2 id=1>創(chuàng)建與維護(hù)</h2>
下面詳細(xì)分為7個步驟來學(xué)習(xí)和掌握這項技能
<h3 id="1.1">創(chuàng)建并設(shè)置一個私有的Spec Repo</h3>
首先我們在github上建立一個自己的倉庫 LocalPod(倉庫名字任意)
-
在本地創(chuàng)建Spec Repo
# pod repo add [Private Repo Name] [對應(yīng)的.git url] $ pod repo add LocalPod https://github.com/Maoyis/LocalPod.git
進(jìn)入 ~/.cocoapods/repos 目錄此時就能看到我們自己的pod倉庫了
PS: 如果有其他合作人員共同使用這個私有Spec Repo的話在他有對應(yīng)Git倉庫的權(quán)限的前提下執(zhí)行相同的命令添加這個Spec Repo即可塔淤。
<h3 id="1.2">創(chuàng)建PodLib(針對從零創(chuàng)建lib)</h3>
建好本地倉庫后我們來建一個自己的庫(lib), 如果已經(jīng)有一個lib只需要添加并配置相應(yīng)的podspec文件就行可忽略此步直接到下一階段。不過看看總不會有壞處的(?????)
創(chuàng)建一個lib(庫),詳見pod lib創(chuàng)建自己的lib。開始前首先得給我們的lib建一個版本庫(git,svn都行)創(chuàng)建一個
-
跳轉(zhuǎn)到一個用來保存自己庫的文件夾下來創(chuàng)建一個lib(推薦單獨(dú)創(chuàng)建一個專門用來保存自己的庫)婶芭,并在該目錄執(zhí)行
#pod lib create [libName] $ pod lib create QXFullGestureView
執(zhí)行后正常情況下會有一個交互:
lib使用的語言swif/ObjeC
是否創(chuàng)建一個demo
選擇什么測試框架 [ Specta / Kiwi / None ]
是否進(jìn)行UI測試
類的前綴
然后就會在該目錄創(chuàng)建一個lib
- 添加相關(guān)要生成lib的文件到Pod文件夾:(libName)/(libName)/Classes, 當(dāng)然還要刪除ReplaceMe.m文件(只要在提交前刪除掉就好)
-
該步驟非必要焦人,主要正對pod lib creat時創(chuàng)建過demo時觀察變化
$cd Example $pod update
此時再展開工程會發(fā)現(xiàn)文件已經(jīng)添加到了項目中,但卻在開發(fā)模式pod文件加下(Development Pods)炫惩。
<h3 id="1.3">創(chuàng)建lib所對應(yīng)的podspec文件-(針對已存在的lib)</h3>
- 在lib文件夾下執(zhí)行
pod spec create QXFullGestureView https://github.com/Maoyis/MyLibrary.git
<h3 id="1.4">配置podspec與驗(yàn)證</h3>
-
配置MyLibrary.podspec(ruby文件)詳情
s.name = 'QXFullGestureView ' ##名字必須與libname相同 s.version = '0.1.0' #版本必須為0.0.0格式 s.summary = 'all gesture view' #關(guān)于庫的一個簡短描述 s.description = <<-DESC TODO: 備注文字(較長描述) DESC #是否支持arc s.requires_arc = true #文件主頁 s.homepage = 'https://github.com/Maoyis/QXFullGestureView ' #開源協(xié)議 s.license = { :type => 'MIT', :file => 'LICENSE' } #作者信息 s.author = { 'Maoyis' => 'xxxxxx@qq.com' } #源文件所在網(wǎng)絡(luò)路徑 s.source = { :git => 'https://github.com/Maoyis/QXFullGestureView .git', :tag => s.version.to_s } #支持版本 s.ios.deployment_target = '7.0' #公開頭文件名 s.public_header_files = 'Pod/Classes/**/*.h' #依賴的框架 s.frameworks = 'UIKit', 'MapKit' #依賴庫 s.dependency 'AFNetworking', '~> 2.3'
-
完成上面主要配置(并非所有配置)后昔园,驗(yàn)證一下這個文件是否可用蔓榄。執(zhí)行:
#測試podspec檢查是否存在問題 $ pod lib lint //通過結(jié)果 -> QXFullGestureView (0.1.0) QXFullGestureView passed validation. # 如果失敗也可以試試, 針對無法正確找到lib.podspec $ pod lib lint --source https://github.com/Maoyis/QXFullGestureView .git #如果有警告可以忽略 $ pod lib lint --allow-warnings
<h3 id="1.5">本地測試與提交</h3>
- 準(zhǔn)備:創(chuàng)建一個項目(如果沒pod lib創(chuàng)建或沒創(chuàng)建demo 否則跳過步驟1)配置Podfile
platform :ios, '7.0'
pod 'MyLibrary', :path => '……/podTest/QXFullGestureView ' #指定路徑
pod 'MyLibrary', :podspec => '……/QXFullGestureView .podspec' #指定podspec文件
pod install
-
編寫代碼,導(dǎo)入lib驗(yàn)證是否可以正常使用
pod lib lint
由于人處于開發(fā)階段默刚,此時再展開工程會發(fā)現(xiàn)文件已經(jīng)添加到了項目中甥郑,但卻在開發(fā)模式Development Pods文件夾下(Development Pods)。
-
將lib提交到遠(yuǎn)端倉庫
#跳轉(zhuǎn)到lib目錄下 $cd [libFolder] #由于lib已經(jīng)在git版本控制下就不需要初始化羡棵,直接添加文件提交 $ git add . $ git commit -s -m "Initial Commit of Library" #添加遠(yuǎn)端倉庫(這里要用到第二個空倉庫存儲lib區(qū)別第一個用來存儲本地Spec Repo) $ git remote add origin https://github.com/Maoyis/QXFullGestureView .git #提交到遠(yuǎn)端倉庫 $ git push origin master
-
由于podspec文件中獲取Git版本控制的項目還需要tag號壹若,所以我們要打上一個tag嗅钻,
$ git tag -m "release 0.1.0" "0.1.0" $ git push --tags #推送tag到遠(yuǎn)端倉庫
接下來我們就要發(fā)布測試版為正式版了(提交自己的podspec到私有或公有Spec Repo)
<h3 id="1.6">向私有的Spec Repo中提交自己的podspec</h3>
-
提交podspec到自己的Spec Repo
#pod repo [第一步建立的本地倉庫] [要上傳的podspec] $ pod repo push LocalPod QXFullGestureView.podspec
執(zhí)行完畢后本地查看本地倉庫就可以看到對應(yīng)的 文件夾/版本文件夾/上傳的podspec
并且你會看到
Pushing the `QXSpecRepo' repo
To https://github.com/Maoyis/LocalPod.git
對皂冰,他還會自動推送最新的Space Repo 到綁定的版本控制中心
-
搜索自己的lib
pod searchQXFullGestureView
到這里一個屬于自己的pod庫就大功告成了
<h3 id="1.7">在自己項目中使用</h3>
這里既不贅述了店展,唯一需要注意的是pod install、Updat默認(rèn)不會去本地Pod文件夾查找lib秃流,只會默認(rèn)在master文件夾中尋找
所以我們必須在Podfile文件中加入查找源
#我們自己的私有spec倉庫的地址
source 'https://github.com/Maoyis/LocalPod.git'
#官方倉庫的地址
source 'https://github.com/CocoaPods/Specs.git'
<h3 id="1.8">更新維護(hù)podspec</h3>
添加新文件到Classes, 修改對應(yīng)的podspec配置
-
驗(yàn)證配置無誤
$pod lib lint
更新demo調(diào)用(非必要影響步驟)
pod update-
提交到遠(yuǎn)端代碼托管服務(wù)器
$ git add . $ git commit -m"new version" $ git push origin master # 打上新tag $ git tag -m"version 1.0.1" "1.0.1" $ git push --tags
-
提交本地pod倉庫
$ pod repo push QXSpecRepo MyLibrary.podspec
<h2 id="2"> 移除本地倉庫</h2>
# pod repo remove [Private Repo Name]
$ pod repo remove QXSpecRepo
刪除前:
刪除后:
<h2 id="3">移除本地倉庫中的lib.podspec</h2>
前往~/.cocoapods/repos 將其對應(yīng)文件夾文件夾刪除,更新本地倉庫
$ git add --all .
$ git commit -m "remove unuseful pods"
$ git push origin master
<h2 id="4">Trunk發(fā)布自己的Pods</h2>
-
注冊Trunk獲取推送資格
#通過郵箱和用戶名注冊 #pod trunk register [your mailbox] [your Name] --description='mybook' $ pod trunk register youaolanyi@foxmail.com Maoyis --description='mybook'
-
等到到一份郵件赂蕴,點(diǎn)擊郵件中的鏈接后驗(yàn)證是否可以查到自己信息:
pod trunk me
-
完成準(zhǔn)備工作后就可以push spec到cocoapod了
#在工程根目錄(包含有.podspec) pod trunk push *.podspec
pod trunk push 命令會首先驗(yàn)證你本地的podspec文件(是否有錯誤),之后會上傳spec文件到trunk舶胀,最后會將你上傳的podspec文件轉(zhuǎn)換為需要的json文件概说。
-
更新本地repo
#更新方式有多種,個人覺得這個比較保險 pod setup
查看本地文件夾(~/.cocoapods/repos/master/Specs)中repo master是否同步了自己的庫