如何將你寫的框架添加cocoapod支持[轉(zhuǎn)]

一邮丰、創(chuàng)建的github倉庫原文地址

1 進(jìn)入Github網(wǎng)站www.github.com登陸自己的賬號(hào)后

2 建立一個(gè)新的倉庫


創(chuàng)建新的倉庫

3 填寫倉庫信息


填寫倉庫信息

4 創(chuàng)建完畢后

創(chuàng)建成功

二运准、上傳代碼到創(chuàng)建的倉庫

1 選擇clone 到本地倉庫

mac 電腦中,有g(shù)ithub的客戶端


github MAC客戶端

進(jìn)入github網(wǎng)站后眷蜓,右邊欄


clone

也可以用命令終端的

// 代碼倉庫clone 地址 git clonehttps://github.com/boyXiong/XWSwiftRefreshT.git

2.編寫代碼


寫入的代碼

3.創(chuàng)建一個(gè)tag 版本


創(chuàng)建一個(gè)Tag

如果這里不會(huì),可以看我的另一篇文章Git tag的使用

http://www.reibang.com/p/32054f3e415d

4.上傳到github


上傳到github倉庫

三、向本地git倉庫中添加創(chuàng)建Pods依賴庫所需文件

1 這個(gè)文件需要放在clone 到的本地倉庫目錄下(需要在終端cd進(jìn)入clone的那個(gè)目錄下)

2 創(chuàng)建 podspec

// 在命令終端pod spec create XWSwiftRefreshT

成功后


創(chuàng)建podspec成功

3 編寫podspec文件,可以使用Vim,或者Xcode胎围,Sublime也可以吁系,這是一個(gè)Ruby文件

Pod::Spec.newdo|s|# 名稱 使用的時(shí)候pod search [name]s.name ="XWSwiftRefreshT"# 代碼庫的版本s.version ="0.1.2"# 簡介s.summary ="The easiest way to use pull-to-refresh with Swift2.0 program language."# 主頁s.homepage ="https://github.com/boyXiong/XWSwiftRefreshT"# 許可證書類型,要和倉庫的LICENSE 的類型一致s.license ="MIT"# 作者名稱 和 郵箱s.author = {"boyXiong"=>"relv@qq.com"}# 作者主頁 s.social_media_url ="http://blog.csdn.net/boyXiong.com/"# 代碼庫最低支持的版本s.platform = :ios,"8.0"# 代碼的Clone 地址 和 tag 版本s.source = { :git =>"https://github.com/boyXiong/XWSwiftRefreshT.git", :tag =>"0.1.2"}# 如果使用pod 需要導(dǎo)入哪些資源s.source_files ="XWSwiftRefreshT/**/*.{swift}"s.resources ="XWSwiftRefreshT/Icon/xw_icon.bundle"# 框架是否使用的ARCs.requires_arc =trueend

4 編寫完成后痊远,先進(jìn)行本地檢查垮抗,使用,如何可以就是綠色,不然會(huì)報(bào)錯(cuò)

//pod spec lint [podspec 的路徑]pod spec lint ./XWSwiftRefreshT.podspec

5 注意 這個(gè)命令的檢查原理碧聪,是調(diào)用Xcode app的命令檢測如果Mac上安裝了兩個(gè)Xcode那么他的檢查是根據(jù)Application/Xcode.app/這種路徑來的冒版,兩個(gè)Xcode 就要確保Xcode.app是最新的正式版本不是測試版本

6 然后可以發(fā)送到cocoapod管理了

//pod trunkpush[podspec 的路徑]pod trunkpush./XWSwiftRefreshT.podspec


上傳到cocoapod成功

7.到這里如果成功就搜索的到,那么就是說可以成功使用了

pod search XWSwiftRefreshT


成功搜索到框架


Paste_Image.png

這是我整理的開發(fā)常用Category 用pod 搜索 TTCategory 就可以

github連接:https://github.com/yangyangFeng/TTCategory.git

大家有新的,好用的category也可以發(fā)給我我回持續(xù)更新.

一逞姿、創(chuàng)建的github倉庫

1 進(jìn)入Github網(wǎng)站www.github.com登陸自己的賬號(hào)后

2 建立一個(gè)新的倉庫


創(chuàng)建新的倉庫

3 填寫倉庫信息


填寫倉庫信息

4 創(chuàng)建完畢后


前面的步驟比較簡單相信大家很容易就能clone到本地,如果沒有g(shù)ithub個(gè)客戶端的可以去下一個(gè),沒有的話用命令也是可以的


接下來把你想要托管的代碼放入本地倉庫中


這里看到 .podspec 和TTcategory 是同一級目錄,下面設(shè)置 podspec 文件,文件路徑的時(shí)候要用到這里.

四辞嗡、注冊TRUNK

在注冊trunk之前,我們需要確認(rèn)當(dāng)前的CocoaPods版本是否足夠新滞造。trunk需要pod在0.33及以上版本续室,如果你不滿足要求,打開Terminal使用ruby的gem命令更新pod:

sudo geminstallcocoapods

更新結(jié)束后谒养,我們開始注冊trunk:

pod trunk register aaaaaaag@163.com'fengyangyang'--verbose輸入你的郵箱,并設(shè)置你的昵稱.隨后會(huì)給你發(fā)送一封驗(yàn)證郵件.

郵箱以及用戶名請對號(hào)入座挺狰。用戶名我使用的是Github上的用戶名。--verbose參數(shù)是為了便于輸出注冊過程中的調(diào)試信息买窟。執(zhí)行上面的語句

后丰泊,你的郵箱將會(huì)受到一封帶有驗(yàn)證鏈接的郵件,如果沒有請去垃圾箱找找始绍,有可能被屏蔽了瞳购。點(diǎn)擊郵件的鏈接就完成了trunk注冊流程。使用下面的命令可以

向trunk服務(wù)器查詢自己的注冊信息:

pod trunk me

輸出如下信息就表示你注冊成功亏推,可以進(jìn)行下面的流程:


五学赛、添加Podspec

為你的代碼添加podspec描述文件;

$pod lib lint

六、配置podspec描述文件

這一步與更換trunk方式前的操作完全一樣吞杭。什么是podspec描述文件呢盏浇?簡單地講就是讓CocoaPods搜索引擎知道你的代碼的作者、版本號(hào)芽狗、源代碼地址缠捌、依賴庫等信息的文件。任何支持CocoaPods的開源代碼都必須有podspec文件。CocoaPods在github中用一個(gè)repo來管理所有支持CocoaPods的開源代碼:https://github.com/CocoaPods/Specs曼月。

podspec文件很簡單,但是第一次做不是很容易.我推薦看一下 貓爪的 blog點(diǎn)擊打開鏈接

blog里面介紹的很詳細(xì),在此也要感謝貓爪,為我解答了遇到的問題.

設(shè)置好podspec后,我們要驗(yàn)證一下,podspec 時(shí)候通過驗(yàn)證

$pod lib lint

如果一切正常谊却,這條命令執(zhí)行完后會(huì)出現(xiàn)下面的輸出:

-> 你的庫名 (1.0.0) 你的庫名 passed validation.

到此,pod驗(yàn)證就結(jié)束了哑芹。 需要說明的是炎辨,在執(zhí)行pod驗(yàn)證命令的時(shí)候,打印出了任何warning或者error信息聪姿,驗(yàn)證都會(huì)失敳晗簟!如果驗(yàn)證出現(xiàn)異常末购,打印的信息會(huì)很詳細(xì)破喻,大家可以根據(jù)對應(yīng)提示做出修改。

七盟榴、本地git倉庫修改內(nèi)容上傳到github倉庫

依次執(zhí)行以下命令:

$ git add -A && gitcommit-m"Release 1.0.0."$ git tag'1.0.0'$ git push--tags$ git push originmaster

八曹质、現(xiàn)在如果你的 podspec通過驗(yàn)證了,代碼push 到github并且 打好tag,那么現(xiàn)在可以進(jìn)行最后一步了.將podspec文件通過trunk推送給CocoaPods服務(wù)器(PS:如果這部分出錯(cuò),那么你需要先對應(yīng)錯(cuò)誤修改,然后重復(fù) 5~8 過程)

$ pod trunkpush./文件名.podspec? ? 如果接下來沒有提示任何error 和警告的話,那么恭喜你!你的代碼就已經(jīng)上傳到cocoapod上了.

推薦拓展閱讀


正規(guī)的倉庫都應(yīng)該有一個(gè)license文件,Pods依賴庫對這個(gè)文件的要求更嚴(yán)擎场,是必須要有的羽德。因此最好在這里讓github創(chuàng)建一個(gè),也可以自己后續(xù)再創(chuàng)建迅办。我使用的license類型是MIT宅静。

把項(xiàng)目clone到本地然后在根目錄下新建MyPodDemo.podspec

或使用命令

$ pod spec create?MyPodDemo

Spec文件編寫:

Pod::Spec.new do |s|

s.name = "MyPodDemo"

s.version = "0.0.1"

s.summary = "A short description of MyPodDemo."

s.description = <<-DESC

A longer description of MyPodDemo in Markdown format.

* Think: Why did you write this? What is the focus? What does it do?

* CocoaPods will be using this to generate tags, and improve search results.

* Try to keep it short, snappy and to the point.

* Finally, don't worry about the indent, CocoaPods strips it!

DESC

s.homepage = "https://github.com/goingta/MyPodDemo"

s.license = "MIT"

s.author = { "goingta" => "tangle1128@gmail.com" }

s.source = { :git => "https://github.com/goingta/MyPodDemo.git", :tag => "0.0.1" }

s.source_files = "MyPodDemo/Src", "MyPodDemo/Src/**/*.{h,m}"

s.requires_arc = true

# s.framework = "SomeFramework"

# s.frameworks = "SomeFramework", "AnotherFramework"

# s.library = "iconv"

# s.libraries = "iconv", "xml2"

# s.dependency "JSONKit", "~> 1.4"

# s.dependency "AFNetworking", "~> 2.2.4"

end

自解析:

name: 導(dǎo)入pod后的目錄名

version: 當(dāng)前版本號(hào)

deployment_target: 配置的target

prefix_header_file: 預(yù)編譯頭文件路徑,將該文件的內(nèi)容插入到Pod的pch文件內(nèi)

source: 來源的具體路徑站欺,是http鏈接還是本地路徑

requires_arc: 是否需要arc

source_files: 指定該目錄下包含哪些文件

其他可選參數(shù)還包括:

dependency: 指定依賴姨夹,如果依賴的庫不存在或者依賴庫的版本不符合要求將會(huì)報(bào)錯(cuò)

libraries: 指定導(dǎo)入的庫,比如sqlite3

frameworks: 指定導(dǎo)入的framework

weak_frameworks: 弱鏈接矾策,比如說一個(gè)項(xiàng)目同時(shí)兼容iOS6和iOS7匀伏,但某一個(gè)framework只在iOS7上有,這時(shí)候如果用強(qiáng)鏈接蝴韭,那么在iOS7上運(yùn)行就會(huì)crash,使用weak_frameworks可以避免這種情況熙侍。

整個(gè)podspec語法是一個(gè)嵌套結(jié)構(gòu)從Pod::Spec.new do

|s|到最后一個(gè)end是最大的循環(huán)榄鉴,表示整個(gè)podspec導(dǎo)入的文件。中間每一個(gè)subspec到end結(jié)束是一個(gè)子目錄蛉抓,Pods會(huì)為每個(gè)

subspec創(chuàng)建一個(gè)邏輯目錄庆尘,相當(dāng)于Xcode的group概念。|**|中間是subspec的名字巷送,可以隨便命名驶忌,但后面使用的名稱必須一致。

通配符說明

a{bb,bc}def.{h,m}表示四個(gè)文件abbdef.h abbdef.m abcdef.h abcdef.m

*.{h,m,mm}表示所有的.h .m .mm文件

Class/**/*.{h,m}表示Class目錄下的所有.h .m文件

寫完podspec文件后使用pod spec lint驗(yàn)證spec是否合格,有error則需要修改


spec文件驗(yàn)證

上傳代碼至github

上傳podspec文件到CocoaPods倉庫(fork一下,修改完成后在push上去等待審核)

將我們剛剛生成的MyPodDemo.spec 文件上傳到Cocoapods官方specs倉庫中 :

鏈接為:https://github.com/CocoaPods/Specs

私有庫實(shí)現(xiàn),編寫podfile

如果由于某些原因我們編寫的庫不能公開,但是又想使用pods來進(jìn)行管理,要怎么辦呢?

首先我們要將我們剛剛在github上建的倉庫改為Private(不然還用Public搞毛啊)

然后修改我們項(xiàng)目的podfile,與已加入Cocopods倉庫的公有庫相比我們只需要指明私有庫低git地址,如下:

platform :ios, '6.0'

pod 'MyPodDemo', :git => 'https://github.com/goingta/MyPodDemo.git' //私有庫

pod 'CocoaLumberjack'//公有庫

版本控制和沖突(引用自http://objccn.io/issue-6-4/)

CocoaPods 使用語義版本控制 – Semantic

Versioning?命名約定來解決對版本的依賴。由于沖突解決系統(tǒng)建立在非重大變更的補(bǔ)丁版本之間付魔,這使得解決依賴關(guān)系變得容易很多聊品。例如,兩個(gè)不同

的 pods 依賴于 CocoaLumberjack

的兩個(gè)版本几苍,假設(shè)一個(gè)依賴于2.3.1翻屈,另一個(gè)依賴于?2.3.3,此時(shí)沖突解決系統(tǒng)可以使用最新的版本?2.3.3妻坝,因?yàn)檫@個(gè)可以向后

與?2.3.1?兼容伸眶。

但這并不總是有效。有許多第三方庫并不使用這樣的約定刽宪,這讓解決方案變得非常復(fù)雜厘贼。

當(dāng)然,總會(huì)有一些沖突需要手動(dòng)解決圣拄。如果一個(gè)庫依賴于 CocoaLumberjack 的?1.2.5嘴秸,另外一個(gè)庫則依賴于?2.3.1,那么只有最終用戶通過明確指定使用某個(gè)版本來解決沖突售担。

配置非ARC文件(8.5號(hào)補(bǔ)充)

前幾天項(xiàng)目中由于歷史原因,導(dǎo)致有一個(gè)私有的pods庫中某幾個(gè)文件是在非ARC時(shí)代寫的,如果要進(jìn)行修改工程量浩大,于是乎要對這幾個(gè)文件單獨(dú)處

理,這幾個(gè)文件不使用arc其他文件使用arc,網(wǎng)上查了一些資料,只需要對source_file進(jìn)行修改并排除那幾個(gè)不使用ARC的文件就可以了,大

致修改如下:

Pod::Spec.new do |s| s.name = "MyPodDemo" s.version = "0.0.1" s.summary = "A short description of MyPodDemo. s.homepage = "https://github.com/goingta/MyPodDemo" s.license = "MIT" s.author = { "goingta" => "tangle1128@gmail.com" } s.source = { :git => "https://github.com/goingta/MyPodDemo.git", :tag => "0.0.1" } s.source_files = "MyPodDemo"non_arc_files = 'MyPodDemo/NoArcFile1.{h,m}','MyPodDemo/NoArcFile2.{h,m}'s.requires_arc = trues.exclude_files = non_arc_filess.subspec 'no-arc' do |sna|sna.requires_arc = falsesna.source_files = non_arc_filesendend

回退Cocoapods歷史版本(2015.3.17號(hào)補(bǔ)充)

查看當(dāng)前安裝了哪些版本

gem list --local | grep cocoapods

如果你安裝了多個(gè)版本(如0.35和0.20.2)那么你將看到

cocoapods (0.34, 0.20.2)

cocoapods-core (0.33, 0.20.2)

cocoapods-downloader (0.2.0, 0.1.2)

先刪除已經(jīng)裝過的版本(可能有幾個(gè),卸載的時(shí)候會(huì)讓你輸入1,2..n選擇卸載那個(gè)版本

sudo gem uninstall cocoapods

或者強(qiáng)制卸載某一個(gè)版本

gem uninstall cocoapods -v 0.20.2

安裝某一個(gè)版本

sudo gem install cocoapods -v 0.35.0

處理?Use the `$(inherited)` flag 異常(2015.6.03補(bǔ)充)

有時(shí)候在pod update之后會(huì)遇到下面錯(cuò)誤:

- Use the `$(inherited)` flag, or

- Remove the build settings from the target.

雖然對項(xiàng)目編譯沒什么影響,但是看著還是挺不舒服的.解決辦法就是

找到工程的 targets 點(diǎn)擊工程名 ?Build Settings -> Other linker flags -> 添加 $(inherited)




Cocoapods制作

1赁遗、創(chuàng)建podspec文件

創(chuàng)建命令

$ pod speccreateLXToolBar

podspec內(nèi)容設(shè)置

##? Be sure to run `pod spec lint LXToolBar.podspec' to ensure this is a#? valid spec and to remove all comments including this before submitting the spec.##? To learn more about Podspec attributes see http://docs.cocoapods.org/specification.html#? To see working Podspecs in the CocoaPods repo see https://github.com/CocoaPods/Specs/#Pod::Spec.newdo|s|? s.name? ? ? ? ="LXToolBar"s.version? ? ? ="0.0.1"s.summary? ? ? ="定制的工具條,類似UITabBar族铆,使用AutoLayout技術(shù)岩四,支持橫豎屏切換"s.homepage? ? ="https://github.com/xx-li/LXToolBar"s.license? ? ? ='MIT's.author? ? ? = {"xx-li"=>"13348782277@163.com"}? s.platform? ? = :ios,'6.0's.source? ? ? = { :git =>"https://github.com/xx-li/LXToolBar.git", :tag =>"0.0.1"}? s.source_files? ='LXToolBar/*','LXToolBar/**/*.{h,m}'s.exclude_files ='LXToolBarDemo's.frameworks ='Foundation','CoreGraphics','UIKit's.requires_arc =true# s.xcconfig = { "HEADER_SEARCH_PATHS" => "$(SDKROOT)/usr/include/libxml2" }s.dependency"LXLayoutButton","~> 0.0.1"end

2、本地git倉庫修改內(nèi)容上傳到github倉庫

$git add -A&& git commit -m"Release 1.0.0."$git tag'1.0.0'$git push --tags$git push origin master

該文件是ruby文件哥攘,里面的條目都很容易知道含義剖煌。

其中需要說明的又幾個(gè)參數(shù):

s.license

Pods依賴庫使用的license類型,大家填上自己對應(yīng)的選擇即可逝淹。

s.source_files

表示源文件的路徑耕姊,注意這個(gè)路徑是相對podspec文件而言的。

s.frameworks

需要用到的frameworks栅葡,不需要加.frameworks后綴茉兰。

3、上傳

CocoaPods 0.33中加入了Trunk服務(wù)欣簇。

要想使用Trunk服務(wù)规脸,首先你需要注冊自己的電腦。這很簡單熊咽,只要你指明你的郵箱地址(一般為spec文件中的)和名稱即可莫鸭。

$pod trunk register13348782277@163.com"xx-li"--description='你的描述'

至此,可以通過以下命令來方便地發(fā)布和升級你的Pod横殴!可以在后面加--verbose來查看log

$ pod trunkpushNAME.podspec

當(dāng)然被因,如果你的pod是由多人維護(hù)的,你也可以添加其他維護(hù)者

podtrunk add-owner ARAnalytics kyle@cocoapods.org

4、碰到的問題

使用pod trunk register 13348782277@163.com "xx-li"無法收到郵件

將郵箱換成QQ郵箱后OK

執(zhí)行pod trunk register無法收到郵件梨与,然后換成其他郵箱執(zhí)行push堕花,報(bào)錯(cuò):[!] You are not allowed to push new versions for this pod.

可以先調(diào)用pod trunk me查看當(dāng)前電腦注冊的信息

lixinxingdeiMac:LXLayoutButtonlixinxing$pod trunk me? ? -Name:xx-li? -Email:x@devlxx.com? -Since:November10th,02:47-Pods:-LXToolBar-Sessions:-November10th,02:47-March18th,201600:34.IP:218.17.157.19Description:iMac27-November11th,00:38-March18th,201600:52.IP:218.17.157.19Description:iMac27-November11th,00:55-March18th,201601:14.IP:218.17.157.19Description:iMac27

可以調(diào)用pod trunk info LXLayoutButton查看被禁止的pod的信息

lixinxingdeiMac:LXLayoutButtonlixinxing$podtrunkinfoLXLayoutButtonLXLayoutButton-Versions:-0.0.1(2015-04-1301:47:39UTC)-Owners:-xx-li<13348782277@163.com>

如果剛好此pod所擁有的這個(gè)郵箱無法收到郵件,那就只有更換郵箱了蛋欣,更換郵箱需要申訴

5航徙、參考博文

CocoaPods詳解之----制作篇

Publish Your Pods on CocoaPods with Trunk

CocoaPods







1.怎么查看本地有多少個(gè)repos呢?

命令 ?pod repo可以知道本地有幾個(gè)repo!!

SZ-lingdaiping:TestPodFrameworkDemo yohunl$ pod repo

master

- Type: git (master)

- URL:https://github.com/CocoaPods/Specs.git

- Path: /Users/yohunl/.cocoapods/repos/master

1 repo

剛剛從中可以看出,其不僅列出了本地共有多少個(gè)repo,還包括每個(gè)repo的地址

2.對于一個(gè)repo下有很多個(gè)podspec,例如master下有成百上千個(gè),那么我們怎么統(tǒng)一驗(yàn)證他們是否都符合規(guī)范呢?

例如我們可以用命令進(jìn)入~/.cocoapods/repos/yohunlPodSpecs下執(zhí)行的pod

repo lint .(有一個(gè)點(diǎn)的)是驗(yàn)證這個(gè)repo下所有的

/Users/yohunl/.cocoapods/repos/yohunl

SZ-lingdaiping:yohunl yohunl$ pod repo lint .

Linting spec repo `yohunl`

.

Analyzed 1 podspecs files.

All the specs passed validation.

3.cocoapods的常用命令

pod list ?列出所有可用的第三方庫

pod search query 搜包含query的第三方庫 ? 注意:這兩個(gè)命令只搜存在于本地/Users/yohunl/.cocoapods/ 下的文件

如果搜索網(wǎng)絡(luò)的,可以先更新本地 ?pod repo update master,然后再搜索

pod lib create frameworkName ?創(chuàng)建一個(gè)framework工程

pod lib lint 驗(yàn)證一個(gè)podspec文件是否有錯(cuò)誤

podinstall--no-repo-update錯(cuò)誤

這里的參數(shù)—no-repo-update,是告訴cocoapods不要更新repo.有么有感覺每次pod install都很慢,那是因?yàn)槊恳淮味紩?huì)先更新本地的repo,加上此參數(shù),就跳過了這個(gè)過程,將會(huì)很快

pod init 可以建立一個(gè)空的podfile

建立pod的spec文件 ? pod spec create spec名字http://www.theonlylars.com/blog/2013/01/20/cocoapods-creating-a-pod-spec/

pod install命令時(shí)會(huì)引發(fā)許多操作。要想深入了解這個(gè)命令執(zhí)行的詳細(xì)內(nèi)容陷虎,可以在這個(gè)命令后面加上--verbose

4.其它使用我們建立的framework的方式

當(dāng)我們添加

source'https://github.com/yohunl/yohunlSpecs.git'

source'https://github.com/CocoaPods/Specs.git'

并且執(zhí)行pod install后


進(jìn)入.cocoapods文件夾,可以看到 ?又多了一個(gè)repo:yohunl!!!

這說明什么問題呢?

這說明我么之前的

pod repo add yohunlSpecs ?git@github.com:yohunl/yohunlSpecs.git

pod repo push yohunlSpecs YohunlUtilsPod.podspec

這兩句話只是為了給https://github.com/yohunl/yohunlSpecs中添加spec文件啊.當(dāng)添加完成后,其實(shí)我們可以刪除添加到本地的repo了

刪除repo的命令

pod repo remove yohunlSpecs ? ? [pod repo remove ?repo名稱]


我們刪除我們添加的私有庫 [哈哈,其實(shí)你都顯示了隱藏目錄了,也可以直接進(jìn)去直接刪除文件夾的!]

pod repo remove yohunl

pod repo remove yohunlSpecs

刪除后,可以看到


你再執(zhí)行pod install

發(fā)現(xiàn) 系統(tǒng)會(huì)自己根據(jù)

source'https://github.com/yohunl/yohunlSpecs.git'

source'https://github.com/CocoaPods/Specs.git'

去下載對應(yīng)的repos

如果不加入repos(也就是不添加podspec文件到系統(tǒng)的.cocopods文件夾下).能不能使用cocoapods呢?也是可以的

target?'TestPodFrameworkDemo'?do

pod?'YohunlUtilsPod'?,?:path?=>?'/Users/yohunl/YohunlUtilsPod'

end

target?'TestPodFrameworkDemoTests'?do

end

當(dāng)我們下載了一個(gè)含有podspec文件的代碼后,如果想使用它,可以直接通過pod的path指定路徑 (以前還可以使用 :local,不過現(xiàn)在已經(jīng)被:path取代了)..cocopods文件夾下的?注意:此處:path后面的路徑是指podspec文件所在目錄的路徑

執(zhí)行 pod install

也是可以的


不過這種方式添加的,cocoapods會(huì)放在 Development Pods文件夾下

下面這種方式也是可以的 ,并不需要將podspec加入到私有倉庫

#source?'https://github.com/yohunl/yohunlSpecs.git'

#source?'https://github.com/CocoaPods/Specs.git'

target?'TestPodFrameworkDemo'?do

#pod?'YohunlUtilsPod'?,?:path?=>?'/Users/yohunl/YohunlUtilsPod'

pod?'YohunlUtilsPod',:git?=>?'https://github.com/yohunl/YohunlUtilsPod.git'

end

target?'TestPodFrameworkDemoTests'?do

end

還有以下的方式

#pod?'YohunlUtilsPod'?,?:path?=>?'/Users/yohunl/YohunlUtilsPod'? #可以

#pod?'YohunlUtilsPod',:git?=>?'https://github.com/yohunl/YohunlUtilsPod.git'? #可以

#pod?'YohunlUtilsPod',:podspec?=>?'/Users/yohunl/YohunlUtilsPod/YohunlUtilsPod.podspec'? #指定podspec文件,可以

#pod?'YohunlUtilsPod',:podspec?=>?'https://github.com/yohunl/YohunlUtilsPod/blob/master/YohunlUtilsPod.podspec'? #經(jīng)過測試,這種方式不行

#pod?'YohunlUtilsPod',:podspec?=&

gt;?'https://github.com/yohunl/YohunlUtilsPod.git/YohunlUtilsPod

/YohunlUtilsPod.podspec'?#測試不行,提示找不到podspec文件

如果你能夠確定你的podspec文件是正確可用的話,完全可以直接向https://github.com/yohunl/yohunlSpecs添加podspec文件(當(dāng)然要符合格式要求哦)

5.打包framework的第三方插件命令

cocoapods的插件cocoapods-packager來完成類庫的打包,安裝命令sudo?gem?install?cocoapods-packager ?它的好處是,需要特別強(qiáng)調(diào)的是到踏,該插件通過對引用的三方庫進(jìn)行重命名很好的解決了類庫命名沖突的問題

參考文檔

http://www.cnblogs.com/brycezhang/p/4117180.html使用CocoaPods開發(fā)并打包靜態(tài)庫

http://www.iwangke.me/2013/04/18/advanced-cocoapods/#jtss-tsina

http://www.iwangke.me/2013/04/18/advanced-cocoapods/

http://eric-gao.iteye.com/blog/2128283提交framework到cocoapods官方去

http://www.cocoachina.com/ios/20150508/11785.html建立私有庫

http://blog.sigmapoint.pl/automatic-build-of-static-library-for-ios-for-many-architectures/




發(fā)布自己的pods到CocoaPods trunk

時(shí)間?2014-11-12 00:00:00iloss

原文http://www.iloss.me/post/kai-fa/2014-11-12-creat-pod

主題CocoaPods

之前有寫過一次自己制作pods提交到cocoapods但是2014年5月20日Cocoapods不在接受向CocoaPods/Specs的pull request,改為trunk服務(wù)。

以前我們用的podspec為ruby格式尚猿,而trunk帶來了更方便的json格式窝稿,以后可以用json來配置pod。 之前我們發(fā)布的pod也會(huì)轉(zhuǎn)換未json文件

準(zhǔn)備

首先更新了用trunk之后凿掂,CocoaPods 需要0.33版本以上的伴榔,用pod --version查看,如果版本低庄萎,需要更新踪少,之前有介紹更新方法。

下一步注冊trunk

pod trunk register orta@cocoapods.org 'Orta Therox' --description='macbook air'

你注冊的時(shí)候需要替換郵箱和名字糠涛,加上--verbose可以看到詳細(xì)信息援奢。

然后順利的話你會(huì)收到一份郵件,需要點(diǎn)擊驗(yàn)證忍捡。

pod trunk me //查看自己的注冊信息


當(dāng)然集漾,如果你的pod是由多人維護(hù)的,你也可以添加其他維護(hù)者

pod trunk add-owner ARAnalytics kyle@cocoapods.org

創(chuàng)建podspec

執(zhí)行命令:

pod spec create HZWebViewController

會(huì)在當(dāng)前目錄下生成HZWebViewController.podspec文件砸脊,然后我們編輯這個(gè)文件具篇。

podspec文件里面有很多注釋。我們看個(gè)例子

一眼看去就很明白了凌埂,不用一一解釋了驱显,當(dāng)然,這里的配置項(xiàng)遠(yuǎn)遠(yuǎn)多于這些瞳抓。

ok這里配置完成之后埃疫,需要把你的源碼push到github上,tag一個(gè)版本號(hào)并且發(fā)布一個(gè)release版本挨下,這樣podspec文件中的s.source的值才能是準(zhǔn)確的。

這些操作也不屬于本文的所研究的范疇脐湾。

提交

上面的工作完成之后臭笆,我們就可以開始trunk push了

pod trunk push命令會(huì)首先驗(yàn)證你本地的podspec文件(是否有錯(cuò)誤),之后會(huì)上傳spec文件到trunk,最后會(huì)將你上傳的podspec文件轉(zhuǎn)換為需要的json文件

第一步驗(yàn)證podspec文件也可以自己去做pod spec lint Peanut.podspec

成功部署之后愁铺,CocoaPods會(huì)在Twitter上@你

我們可以看看我們提交的名字為:HZWebViewController的pod

pod search HZWebViewController


我們也可以在本地的~/.cocoapods路徑下看到,轉(zhuǎn)換之后的json文件


補(bǔ)充 Claim your Pod

如果你之前提交過pod鹰霍,那么trunk之后你需要去(Claim your Pod)認(rèn)領(lǐng)

在這個(gè)頁面:https://trunk.cocoapods.org/claims/new

輸入你的信息,如下圖:


send之后就開始等待茵乱,官方提示是過了過渡期就你就可以提交新版本了

這樣就愉快的結(jié)束了

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末茂洒,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子瓶竭,更是在濱河造成了極大的恐慌督勺,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,324評論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件斤贰,死亡現(xiàn)場離奇詭異智哀,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)荧恍,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,356評論 3 392
  • 文/潘曉璐 我一進(jìn)店門瓷叫,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人送巡,你說我怎么就攤上這事摹菠。” “怎么了骗爆?”我有些...
    開封第一講書人閱讀 162,328評論 0 353
  • 文/不壞的土叔 我叫張陵次氨,是天一觀的道長。 經(jīng)常有香客問我淮腾,道長糟需,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,147評論 1 292
  • 正文 為了忘掉前任谷朝,我火速辦了婚禮洲押,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘圆凰。我一直安慰自己杈帐,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,160評論 6 388
  • 文/花漫 我一把揭開白布专钉。 她就那樣靜靜地躺著挑童,像睡著了一般。 火紅的嫁衣襯著肌膚如雪跃须。 梳的紋絲不亂的頭發(fā)上站叼,一...
    開封第一講書人閱讀 51,115評論 1 296
  • 那天,我揣著相機(jī)與錄音菇民,去河邊找鬼尽楔。 笑死投储,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的阔馋。 我是一名探鬼主播玛荞,決...
    沈念sama閱讀 40,025評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼呕寝!你這毒婦竟也來了勋眯?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,867評論 0 274
  • 序言:老撾萬榮一對情侶失蹤下梢,失蹤者是張志新(化名)和其女友劉穎客蹋,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體怔球,經(jīng)...
    沈念sama閱讀 45,307評論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡嚼酝,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,528評論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了竟坛。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片闽巩。...
    茶點(diǎn)故事閱讀 39,688評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖担汤,靈堂內(nèi)的尸體忽然破棺而出涎跨,到底是詐尸還是另有隱情,我是刑警寧澤崭歧,帶...
    沈念sama閱讀 35,409評論 5 343
  • 正文 年R本政府宣布隅很,位于F島的核電站,受9級特大地震影響率碾,放射性物質(zhì)發(fā)生泄漏叔营。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,001評論 3 325
  • 文/蒙蒙 一所宰、第九天 我趴在偏房一處隱蔽的房頂上張望绒尊。 院中可真熱鬧,春花似錦仔粥、人聲如沸婴谱。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,657評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽谭羔。三九已至,卻和暖如春麦向,著一層夾襖步出監(jiān)牢的瞬間瘟裸,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,811評論 1 268
  • 我被黑心中介騙來泰國打工诵竭, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留话告,地道東北人十办。 一個(gè)月前我還...
    沈念sama閱讀 47,685評論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像超棺,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子呵燕,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,573評論 2 353

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

  • 網(wǎng)上將自己的項(xiàng)目做成Pod 的文檔很多棠绘,但是有些文檔已經(jīng)很老了,不適合新手上手再扭,經(jīng)過這兩天的研究我決定還是自己寫一...
    黃魚兒啦啦啦閱讀 7,125評論 10 17
  • 要解除循環(huán)依賴泛范,引入包管理技術(shù)cocoapods會(huì)讓我們更有效率让虐。pod不允許組件間有循環(huán)依賴,若有pod ins...
    cs_mark閱讀 2,094評論 0 1
  • Ruby 安裝 要安裝cocospods 首先需要安裝ruby罢荡,可以先安裝xcode赡突,再安裝macport ,最后...
    山天大畜閱讀 1,854評論 0 1
  • 目錄 [創(chuàng)建與維護(hù)](# 1)創(chuàng)建并設(shè)置一個(gè)私有的Spec Repo創(chuàng)建PodLib創(chuàng)建lib所對應(yīng)的podspe...
    水在玩焱閱讀 8,300評論 1 10
  • 當(dāng)一種編程語言應(yīng)用于企業(yè)級開發(fā)区赵,為了提高代碼的復(fù)用率惭缰,偉大的程序員們將一些可以復(fù)用的公共的代碼封裝起來,形成第三方...
    SvenDai閱讀 1,662評論 1 3