如何與cocoapod關(guān)聯(lián)果复,在cocoapod中能搜索并引用到項(xiàng)目中,自定義寫的第三方庫渤昌。也就是:上傳代碼到cocoapod虽抄。
要想上傳代碼到cocoapod,首先,需要有一個gitlab或者github賬號独柑,并且把自己將要制作成的第三方庫的代碼的工程傳到gitlab或者github上迈窟,此操作在名稱為:“iOS ssh keys 和 mac下使用github 上傳代碼” 和“GitHub 使用”,的文章中忌栅,有具體闡述车酣,其中,上傳gitlab和github的步驟和方法基本一樣索绪,差別不大湖员。
下面就拿gitlab說一下吧!
接下來的步驟基于 工程與gitlab已經(jīng)建立好聯(lián)系瑞驱,本地的工程可以通過終端或者常用工具sourceTree,進(jìn)行更新和上傳修改的本地工程代碼娘摔。(注意:在首次上傳項(xiàng)目,沒有任何提交節(jié)點(diǎn)的時候唤反,需要對工程進(jìn)行ignore操作(不然后來再ignore會有很多問題)凳寺,這在sourceTree里面可以配置,如下的地方:ignore的具體內(nèi)容可以直接在gitHub上搜索gitignore彤侍,里面有很多類型開發(fā)語言的ignore文件肠缨,找到oc語言的,就可以了)
話題回來盏阶,接著說晒奕,比如已經(jīng)搞好的:本地項(xiàng)目,工程名字wgjPublicTest, 在gitlab上創(chuàng)建的用于儲存publicTest工程的project的名字為publicOne。這只是可以進(jìn)行上傳和拉取等一些代碼的線上和本地的操作名斟,還沒有和cocoapod產(chǎn)生關(guān)系吴汪,那么下面就開始讓他們發(fā)生點(diǎn)關(guān)系吧:
-
終端進(jìn)入本地工程,pod spec create wgjPublicTest,操作后蒸眠,本地的工程文件里面出現(xiàn):wgjPublicTest.podspec漾橙,編寫 podspec 文件,可以使用Vim ,或者Xcode , Sublime也可以楞卡,這是一個Ruby文件霜运。此文件的一些內(nèi)容已經(jīng)自動生成脾歇,我們針對這個文件需要做一些修改。我用Sublime工具打開淘捡,文件格式在如下圖中進(jìn)行選擇藕各,選擇ruby。
01.png
文件中:
Pod::Spec.new do |s|
# 名稱 使用的時候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"
# 框架是否使用的ARC
s.requires_arc = true
end
其中l(wèi)icense,如果后來本地驗(yàn)證的時候激况,報錯的話,可以隨便建一個git touch, 在里面隨便寫點(diǎn)內(nèi)容膘魄。
下面有份示例:
編寫完成后乌逐,先進(jìn)行本地檢查
pod lib lint wgjPublicTest.podspec;如果報錯创葡,就是.podspec文件里面東西沒有寫對浙踢,進(jìn)行修改即可。工程里面.podspec文件完成之后灿渴,終端:pod repo ,列出pod本地的一些東西洛波。此時發(fā)現(xiàn),只有master, 這是pod 本地默認(rèn)的一個骚露,也就是平常我們使用cocoapod進(jìn)行導(dǎo)入三方庫的一些本地目錄蹬挤。這里需要我們建一個自己的:(Adding a repo needs a
NAME
and aURL
.)pod repo add wgjT https://wgj@gitlab.com/wgj/WgjPublic.git,其中棘幸,wgjT就是在本地pod目錄中和master并列的一個文件夾闻伶,鏈接中的WgjPublic是自己在gitlab上建立的一個project,這個project就是以后盛放自定義第三方工程們(就是只有幾k大小的那些.podspec文件)的一個project够话。這個project需要在命令執(zhí)行前建的(不用初始化操作,創(chuàng)建空的就行光绕,若后來pod search 不到的話女嘲,就改為權(quán)限為:public(private應(yīng)該也是可以的),再試诞帐,若改不了權(quán)限欣尼,刪除,重新創(chuàng)建)停蕉,而wgjT則是執(zhí)行命令后愕鼓,自動生成的。
pod repo 一下慧起,看一下列表菇晃,發(fā)現(xiàn)有了。接下來需要做什么呢蚓挤?推給pod遠(yuǎn)程磺送,進(jìn)入帶有wgjPublicTest.podspec的工程的目錄驻子,終端:pod repo push wgjT wgjPublicTest.podspec,此時估灿,也許會發(fā)現(xiàn)錯誤崇呵,需要注意:1. 利用sourceTree,把本地wgjPublicTest工程修改的東西提交,其中就包括.podspec文件馅袁;提交完成之后域慷,需要打一個標(biāo)簽,因?yàn)閏ocoapod版本控制的一些操作和這個標(biāo)簽有關(guān)汗销。2.注意.podspec文件里面的 homepage 和 source 的地址有沒有寫錯犹褒,針對此文章示例需寫的是publicOne的地址路徑。
此時大溜,就差不多完成了化漆,pod search wgjPublic,找一下看有沒有钦奋,此時發(fā)現(xiàn)有了座云,好激動。不要太高興付材,建一個項(xiàng)目朦拖,測試一下能不能正常導(dǎo)入自己制作的第三方,握草厌衔,發(fā)現(xiàn)能搜索出來璧帝,但是不能導(dǎo)入測試項(xiàng)目,什么原因呢富寿,可能是:缺少source這個東西睬隶,示例:
source 'https://wgj@gitlab.com/wgj/WgjPublic.git'
source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '7.0'
target 'PodTest002' do
pod 'AFNetworking', '3.1.0'
pod 'wgjPublicTest', '0.0.1'
end
到此,終于可以了页徐!
注:如果不想source引入或者是自己能search到苏潜,但是別人search 不到,那就需要是直接發(fā)到cocoapod的master主干了(pod trunk push **. podspec,沒有發(fā)布到cocoapod主干master)变勇,這樣的話恤左,在創(chuàng)建過程中,本地的pod庫目錄中也就不用建自己的文件夾搀绣,而是用的master飞袋。
wgjT和WgjPublic分別是本地pod里面的一個文件夾和gitlab上一個存儲第三方的project,這兩個其實(shí)是對應(yīng)的链患,取相同的名字比較好巧鸭。這個類似于一個倉,這個倉可以被其他開發(fā)者用麻捻,例如蹄皱,其他的開發(fā)者可以在本地pod中添加這個倉:pod repo add DFSpecs https://wgj@gitlab.com/chenrj/DFSpecs.git览闰,---pod lib lint wgj_GitlabTest01.podspec--- pod repo push DFSpecs wgj_GitlabTest01.podspec,當(dāng)然巷折,這個需要權(quán)限压鉴,需要被加入成員。