cocoapods系列教程---讓自己的開源框架支持cocoapods

cocoapods系列教程---安裝與使用
cocoapods系列教程---Podfile文件
cocoapods系列教程---Podfile.lock文件 和 Spec Repo
cocoapods系列教程---spec文件
cocoapods系列教程---原理篇
cocoapods系列教程---讓自己的開源框架支持cocoapods
cocoapods系列教程---模塊化設(shè)計(jì)
cocoapods系列教程---創(chuàng)建私有pods

參考:http://studentdeng.github.io/blog/2013/09/13/cocoapods-tutorial/

提交代碼到代碼托管平臺

既然是開源,要求代碼任何人都能夠訪問,這里選擇github,當(dāng)然也可以用其他平臺如oschina等,項(xiàng)目必須是公開項(xiàng)目.比如我的這個(gè):https://github.com/iOSSinger/SGExtension.git

創(chuàng)建spec文件

  • 將代碼克隆到本地,如果本地已經(jīng)存在,直接跳過這一步.

  • 創(chuàng)建.podspec文件,切換到項(xiàng)目根目錄,創(chuàng)建spec文件:

    //切換到項(xiàng)目根目錄
    cd SGExtenion
    
    //創(chuàng)建spec文件
    pod spec create SGExtension
    
    
  • 用xcode打開 SGExtension.podspec,里面有英文注釋,我這里直接給簡單模板,其實(shí)就是去掉了注釋,詳細(xì)的設(shè)置看這里

Pod::Spec.new do |spec|

spec.name                  = 'SGExtension'

spec.version               = '1.0.2'

spec.ios.deployment_target = '8.0'

spec.license               = 'MIT'

spec.homepage              = 'https://github.com/iOSSinger'

spec.author                = { "iOSSinger" => "747616044@qq.com" }

spec.summary               = '各種工具的合集'

spec.source                = { :git => 'https://github.com/iOSSinger/SGExtension.git', :tag => spec.version }

spec.source_files          = "SGExtension/**/{*.h,*.m}"

spec.resources             = "SGExtension/source.bundle"

spec.frameworks            = 'UIKit'

spec.library               = 'z'

spec.requires_arc          = true

end

解釋下每行的意思:

  • spec.name
    名字即碗,pod search 搜索的關(guān)鍵詞,注意這里一定要和.podspec的名稱一樣,否則報(bào)錯(cuò)

  • spec.version
    版本號

  • spec.ios.deployment_target
    支持的ios最低版本

  • spec.license
    許可證,一般MIT,這里提醒一下,根目錄下必須要有LICENSE這個(gè)文件,可以直接把我項(xiàng)目中的copy一份,改下作者名字即可.一般github創(chuàng)建倉庫的時(shí)候可以選擇許可為MIT,會(huì)自動(dòng)幫你生成該文件.

  • spec.homepage
    項(xiàng)目主頁地址,要求必須能訪問

  • spec.author
    作者信息

  • spec.summary
    項(xiàng)目簡介

  • spec.source
    項(xiàng)目的地址,填上項(xiàng)目的github地址,tag => spec.version表示git項(xiàng)目的tag值與上面的spec的版本一致,這里是 1.0.2 .

  • spec.source_files
    項(xiàng)目源文件,主要是.h和.m文件,

    • *表示匹配所有文件
    • {.h,.m} 表示匹配所有以.h和.m結(jié)尾的文件
    • ** 表示匹配所有子目錄,以及遞歸子目錄
  • spec.resources
    項(xiàng)目所需的資源文件,比如圖片

  • spec.frameworks
    項(xiàng)目的依賴框架,比如UIKit,不需要后綴名

  • spec.library
    項(xiàng)目依賴的庫文件(這個(gè)是系統(tǒng)的庫文件),不需要后綴名,比如sqlite,libz等.以lib開頭的需要省略掉lib這三個(gè)字母.例如:libz需要簡寫為z否則報(bào)錯(cuò).

  • spec.requires_arc
    是否是arc,一般true

如果你的項(xiàng)目依賴了別的pod項(xiàng)目,可以這樣寫:

spec.dependency = 'AFNetworking'

提交代碼,并打上tag
//提交代碼
git push

//打tag
git tag 1.0.2

//將tag推送到遠(yuǎn)端
git push origin --tags

附上目錄:

Paste_Image.png
驗(yàn)證podspec文件
pod spec lint SGExtemnsion.podspec

這一步如果報(bào)錯(cuò),根據(jù)錯(cuò)誤自行修改,根據(jù)大致意思能看出來個(gè)大概,終端會(huì)給出哪一行出錯(cuò)了.一般就是語法錯(cuò)誤,資源找不到,git地址不對或者不能訪問.指定的文件如{.h,.m}找不到,一般再檢查檢查基本沒問題.

2018.1更新: 有時(shí)候明明代碼沒問題(很確定),但是還是不通過,可以嘗試清理下緩存:

//獲取已經(jīng)緩存的列表
pod cache list

//清除指定的緩存
pod cache clean xxx(緩存的名字,上一步可獲取)
注冊trunk,并提交spec文件cocoapods倉庫
  • 注冊chunk,查看是否注冊過

    pod trunk me
    
    
  • 如果沒有注冊,那么注冊:

    pod trunk register 747616044@qq.com "iOSSinger"
      
    

    填上郵箱用戶名就可以了.注冊完成之后會(huì)給你的郵箱發(fā)個(gè)郵件,進(jìn)入郵箱郵件里面有個(gè)鏈接,需要點(diǎn)擊確認(rèn)一下.然后再查看下是否注冊成功:

    pod trunk me
    
    
  • 提交spec文件到 CocoaPods 中心倉庫

    pod trunk push SGExtension.podspec 
    
    

    如果前面都沒問題,這一步基本也沒啥問題.不過網(wǎng)速比較慢可能要等很久,這一步建議翻墻,不然有可能真的很慢.

  • 然后驗(yàn)證一下,是否可以查到

    pod search SGExtension
    
    

如果能夠查到,恭喜你 !,如果查不到,往下看

  • 解決方案:

    • 查看上一步(提交到代碼倉庫)是否成功,再次執(zhí)行提交:
    pod trunk push SGExtension.podspec
    
    

    如果出現(xiàn)如下信息:

    [!] Unable to accept duplicate entry for: SGExtension (1.0.2)
    
    

    那么說明已經(jīng)提交到cocoapods倉庫成功,那么有可能就是本地倉庫沒有更新.更新本地倉庫:

    pod repo update
    
    
    • 再次執(zhí)行 pod search SGExtension 命令,如果還搜索不到,繼續(xù)往下看:
    rm ~/Library/Caches/CocoaPods/search_index.json  
     
    

    這句話是移除已經(jīng)生成的搜索目錄緩存文件,移除之后,執(zhí)行pod search會(huì)重新生成一份最新的緩存列表,基本到這里就差不多了.

    • 如果還有問題,那就需要終極大招,但是不推薦用,時(shí)間很長,除非翻墻.

      pod repo remove master  
      pod setup
      
      

      或者

      sudo rm -fr ~/.cocoapods/repos/master
      pod setup
      
      

      這兩種寫法的意思都是移除本地cocoapods倉庫,重新從官網(wǎng)拉取一遍.可能時(shí)間比較長,所以不建議用,如果網(wǎng)速度快可以考慮使用,也可以翻墻.整個(gè)倉庫打下大約500M+(截止當(dāng)前時(shí)間).

集成到項(xiàng)目中試試
  target '項(xiàng)目名' do
  pod 'SGExtension'
  end

多人共同維護(hù)你的開源項(xiàng)目

如果需要多個(gè)人維護(hù)一個(gè)庫,每個(gè)人都應(yīng)該有權(quán)限push提交spec文件;第一個(gè)push的人可以被認(rèn)為是管理員,可以再添加子管理員,這樣子管理員就有權(quán)限push了

pod trunk add-owner 郵箱地址

移除某個(gè)管理員

pod trunk remove-owner 郵箱地址

* pod lib lintpod spec lint 有什么區(qū)別
  • pod lib lint 不需要聯(lián)網(wǎng)
  • pod spec lint 會(huì)聯(lián)網(wǎng)檢查sepc repo,并且關(guān)聯(lián)tag
    大功告成,喝杯12年的拉菲睡一覺~.
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末碗硬,一起剝皮案震驚了整個(gè)濱河市骑疆,隨后出現(xiàn)的幾起案子幅垮,更是在濱河造成了極大的恐慌,老刑警劉巖位他,帶你破解...
    沈念sama閱讀 206,602評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件恃慧,死亡現(xiàn)場離奇詭異呵扛,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)隔节,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,442評論 2 382
  • 文/潘曉璐 我一進(jìn)店門鹅经,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人怎诫,你說我怎么就攤上這事瘾晃。” “怎么了幻妓?”我有些...
    開封第一講書人閱讀 152,878評論 0 344
  • 文/不壞的土叔 我叫張陵蹦误,是天一觀的道長。 經(jīng)常有香客問我肉津,道長强胰,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,306評論 1 279
  • 正文 為了忘掉前任妹沙,我火速辦了婚禮偶洋,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘距糖。我一直安慰自己玄窝,他們只是感情好牵寺,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,330評論 5 373
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著恩脂,像睡著了一般缸剪。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上东亦,一...
    開封第一講書人閱讀 49,071評論 1 285
  • 那天杏节,我揣著相機(jī)與錄音,去河邊找鬼典阵。 笑死奋渔,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的壮啊。 我是一名探鬼主播嫉鲸,決...
    沈念sama閱讀 38,382評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼歹啼!你這毒婦竟也來了玄渗?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,006評論 0 259
  • 序言:老撾萬榮一對情侶失蹤狸眼,失蹤者是張志新(化名)和其女友劉穎藤树,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體拓萌,經(jīng)...
    沈念sama閱讀 43,512評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡岁钓,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,965評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了微王。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片屡限。...
    茶點(diǎn)故事閱讀 38,094評論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖炕倘,靈堂內(nèi)的尸體忽然破棺而出钧大,到底是詐尸還是另有隱情,我是刑警寧澤罩旋,帶...
    沈念sama閱讀 33,732評論 4 323
  • 正文 年R本政府宣布啊央,位于F島的核電站,受9級特大地震影響瘸恼,放射性物質(zhì)發(fā)生泄漏劣挫。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,283評論 3 307
  • 文/蒙蒙 一东帅、第九天 我趴在偏房一處隱蔽的房頂上張望压固。 院中可真熱鬧,春花似錦靠闭、人聲如沸帐我。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,286評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽拦键。三九已至谣光,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間芬为,已是汗流浹背萄金。 一陣腳步聲響...
    開封第一講書人閱讀 31,512評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留媚朦,地道東北人氧敢。 一個(gè)月前我還...
    沈念sama閱讀 45,536評論 2 354
  • 正文 我出身青樓,卻偏偏與公主長得像询张,于是被迫代替她去往敵國和親孙乖。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,828評論 2 345

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