將集成的開(kāi)源代碼上傳到Cocoapods管理

1.前期工作

  • 擁有github帳號(hào)(若沒(méi)有,前往github.com注冊(cè)即可)
  • 事先將code準(zhǔn)備好,如果是.a或者framework動(dòng)靜態(tài)庫(kù),就需要將庫(kù)提前編譯好,并且將 模擬器真機(jī) 的庫(kù)進(jìn)行合并(lipo -create 路徑1 路徑2 -output 合并文件路徑)甚亭,這樣才能讓所集成的app 集成一個(gè)庫(kù)進(jìn)而支持更多的 架構(gòu)。否則第一是在上傳檢測(cè)podspec時(shí)會(huì)有警告击胜,二是對(duì)于封裝性來(lái)考慮的話就是支持不夠狂鞋,導(dǎo)致沒(méi)人會(huì)愿意使用。
  • 說(shuō)明:這里我們以 framework 靜態(tài)庫(kù)為例潜的。

2.準(zhǔn)備工作和配置相關(guān)信息

  • 在github上創(chuàng)建工程
  • 新建工程.png
  • 打開(kāi)終端將遠(yuǎn)程倉(cāng)庫(kù)克隆到本地


    clone倉(cāng)庫(kù).png
  • 在git倉(cāng)庫(kù)目錄下創(chuàng)建.podspec配置文件(名稱和工程名保持一致)
$ cd XXXFramework
$ pod spec create XXXFramework  
  • 將已經(jīng)準(zhǔn)備好的 framework 添加到git目錄下骚揍,然后執(zhí)行命令提交
$ git add .  // 提交所有添加的文件
$ git commit -m "描述信息" // 提交修改
$ git tag '1.0.0'  // 為當(dāng)前版本標(biāo)記tag, 這個(gè)是一定要做的!!! 因?yàn)閜od需要根據(jù)版本號(hào)確定引用
$ git push --tags // 提交當(dāng)前標(biāo)記的tag
$ git push origin master // push修改到遠(yuǎn)程倉(cāng)庫(kù),git push 也可以
  • 使用終端或者Sublime編輯XXXFramework.podspec文件進(jìn)行信息配置
Pod::Spec.new do |s|
  s.name             = "XXXFramework"
  s.version          = "1.0.0"  // 這個(gè)一定要與當(dāng)前版本的tag相對(duì)應(yīng)
  s.summary          = "這里寫(xiě)簡(jiǎn)介信息"
  s.description      = <<-DESC
 這里寫(xiě)描述信息啰挪,并且盡量保證比簡(jiǎn)介信息要更多更全面信不,否則后面驗(yàn)證會(huì)有警告(雖然警告沒(méi)有影響,但是我們盡量做到驗(yàn)證的時(shí)候沒(méi)有警告)亡呵。
                       DESC
  s.homepage         = "github的項(xiàng)目地址"
  s.license          = 'MIT'
  s.author           = { "github的帳號(hào)" => "github帳號(hào)對(duì)應(yīng)的郵箱" }
  s.source           = { :git => "github上面的對(duì)應(yīng)工程的git地址(例如:https://github.com/xxxx/XXXFramework.git)", :tag => s.version }
  s.platform     = :ios
  s.ios.deployment_target = '8.0'
  # s.osx.deployment_target = '10.7'
  s.requires_arc = true

  #s.source_files = 'WZMarqueeView/*'
  # s.resources = 'Assets'

  # s.ios.exclude_files = 'Classes/osx'
  # s.osx.exclude_files = 'Classes/ios'
  # s.public_header_files = 'Classes/**/*.h'
  s.vendored_frameworks = "RoyFramework.framework" 
  s.frameworks = "Foundation", "UIKit"
end

ps: 這里面用不到的可以直接注釋掉(#).這里對(duì)可能用到的配置進(jìn)行說(shuō)明

s.name  // 導(dǎo)入pod后的目錄名
s.version // 當(dāng)前版本號(hào)
s.license // 類型抽活,這里直接填寫(xiě)MIT
s.author // 用戶信息
s.source // 所引用的代碼源地址
s.platform // 適用平臺(tái)
s.ios.deployment_target // 最低的系統(tǒng)版本
s.requires_arc // 是否要求arc
s.prefix_header_file // 預(yù)編譯頭文件路徑,將該文件的內(nèi)容插入到pod的pch文件中
===重點(diǎn)====
s.source_files   // 將上傳的代碼文件锰什,路徑從.podspec開(kāi)始下硕,如果是開(kāi)源的.h .m 文件,就需要寫(xiě)成路徑/*.{h,.m}, 例如"Classes/**/*.{h,m}
s.resources // 資源文件汁胆,圖片或者xib文件
s.vendored_frameworks // 本地最后自己打包的frameworks
s.frameworks // 指定需要使用的系統(tǒng)frameworks, 例如:UIKit, Foundation
s.preserve_paths // 本地自己導(dǎo)入的.a庫(kù)
s.dependency //指定依賴梭姓,如果依賴的庫(kù)不存在或者依賴庫(kù)的版本不符合要求將會(huì)報(bào)錯(cuò)
s.libraries // 指定導(dǎo)入的庫(kù),比如sqlite3
s.weak_frameworkds // 弱鏈接嫩码,比如說(shuō)一個(gè)項(xiàng)目同時(shí)兼容iOS和iOS7, 但某一個(gè)framework只有在iOS7上有誉尖,這時(shí)如果使用強(qiáng)連接,那么在iOS7上運(yùn)行就會(huì)crash, 使用weak_frameworks可以便面這種情況

通配符說(shuō)明

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文件

3.驗(yàn)證編寫(xiě)的 podspec 文件

  • 使用命令來(lái)驗(yàn)證編寫(xiě)的podspec文件是否正確
$ pod spec lint
如果出現(xiàn)--allow-warnings的警告那么執(zhí)行下面這句消除警告
$ pod spec lint --allow-warnings
如果出現(xiàn)錯(cuò)誤信息铸题,則按照提示進(jìn)行修改
-> XXXFramework (1.0.0)  
XXXFramework passed validation.  
出現(xiàn)上面這個(gè)顯示铡恕,則表示通過(guò)了驗(yàn)證琢感,就可以進(jìn)行下一步的操作

4.通過(guò) trunk 上傳 spec 到 cocoapods

  • 查看當(dāng)前終端的git帳號(hào)是否已經(jīng)注冊(cè)trunk
$ pod trunk me
// 如果現(xiàn)實(shí)帳號(hào)信息則表示已經(jīng)注冊(cè)過(guò)就可以直接push 面的操作:例如
 - Name:     xxx
  - Email:    xxxabc123@qq.com
  - Since:    March 27th, 04:39
  - Pods:
    - xxxxxx
  - Sessions:
    - March 27th, 04:39 - August 2nd, 04:55. IP: 116.228.209.98
// 否則就需要注冊(cè)trunk帳號(hào)
$ pod trunk register XXX@XXX.com '名字' --verbose
// 然后收到郵件之后點(diǎn)擊進(jìn)入郵件中的鏈接出現(xiàn) ACE, YOU'RE SET UP 就表示注冊(cè)成功
  • 執(zhí)行 trunk push 操作提交至 cocoapods
$ pod trunk push XXXFramework.podspec
  • 等待審核,出現(xiàn)如下信息


    審核通過(guò)探熔,發(fā)布成功

5.驗(yàn)證

  • pod repo update // 更新cocoapods本地索引
  • pod search XXXFramework // 成功之后即可搜索到
  • 若出現(xiàn)報(bào)錯(cuò)信息
    [!] Unable to find a pod with name, author, summary, or description matching XXXFramework
    則需要將之前的搜索索引刪除:
rm ~/Library/Caches/CocoaPods/search_index.json

重新搜索從遠(yuǎn)程拉取索引文件:

pod search XXXFramework

6.版本迭代和更新

  • 只需要正常提交版本到 github 倉(cāng)庫(kù), 并且一定要打 tag 標(biāo)記驹针,然后更改 .podspec 中的 version其他需要修改的信息 然后再次驗(yàn)證,通過(guò)之后使用 trunk 提交即可~
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末诀艰,一起剝皮案震驚了整個(gè)濱河市柬甥,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌涡驮,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,084評(píng)論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件喜滨,死亡現(xiàn)場(chǎng)離奇詭異捉捅,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)虽风,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,623評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門(mén)棒口,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人辜膝,你說(shuō)我怎么就攤上這事无牵。” “怎么了厂抖?”我有些...
    開(kāi)封第一講書(shū)人閱讀 163,450評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵茎毁,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我忱辅,道長(zhǎng)七蜘,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,322評(píng)論 1 293
  • 正文 為了忘掉前任墙懂,我火速辦了婚禮橡卤,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘损搬。我一直安慰自己碧库,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,370評(píng)論 6 390
  • 文/花漫 我一把揭開(kāi)白布巧勤。 她就那樣靜靜地躺著嵌灰,像睡著了一般。 火紅的嫁衣襯著肌膚如雪颅悉。 梳的紋絲不亂的頭發(fā)上伞鲫,一...
    開(kāi)封第一講書(shū)人閱讀 51,274評(píng)論 1 300
  • 那天,我揣著相機(jī)與錄音签舞,去河邊找鬼秕脓。 笑死柒瓣,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的吠架。 我是一名探鬼主播芙贫,決...
    沈念sama閱讀 40,126評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼傍药!你這毒婦竟也來(lái)了磺平?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 38,980評(píng)論 0 275
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤拐辽,失蹤者是張志新(化名)和其女友劉穎拣挪,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體俱诸,經(jīng)...
    沈念sama閱讀 45,414評(píng)論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡菠劝,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,599評(píng)論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了睁搭。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片赶诊。...
    茶點(diǎn)故事閱讀 39,773評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖园骆,靈堂內(nèi)的尸體忽然破棺而出舔痪,到底是詐尸還是另有隱情,我是刑警寧澤锌唾,帶...
    沈念sama閱讀 35,470評(píng)論 5 344
  • 正文 年R本政府宣布锄码,位于F島的核電站,受9級(jí)特大地震影響晌涕,放射性物質(zhì)發(fā)生泄漏巍耗。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,080評(píng)論 3 327
  • 文/蒙蒙 一渐排、第九天 我趴在偏房一處隱蔽的房頂上張望炬太。 院中可真熱鬧,春花似錦驯耻、人聲如沸亲族。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,713評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)霎迫。三九已至,卻和暖如春帘靡,著一層夾襖步出監(jiān)牢的瞬間知给,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,852評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留涩赢,地道東北人戈次。 一個(gè)月前我還...
    沈念sama閱讀 47,865評(píng)論 2 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像筒扒,于是被迫代替她去往敵國(guó)和親怯邪。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,689評(píng)論 2 354

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

  • 一花墩、創(chuàng)建的github倉(cāng)庫(kù)原文地址 1 進(jìn)入Github網(wǎng)站www.github.com登陸自己的賬號(hào)后 2 建立...
    freesan44閱讀 3,929評(píng)論 2 12
  • 項(xiàng)目組件化悬秉、平臺(tái)化是技術(shù)公司的共同目標(biāo),越來(lái)越多的技術(shù)公司推崇使用pod管理第三方庫(kù)以及私有組件冰蘑,一方面使項(xiàng)目架構(gòu)...
    swu_luo閱讀 21,740評(píng)論 0 39
  • Ruby 安裝 要安裝cocospods 首先需要安裝ruby和泌,可以先安裝xcode,再安裝macport 祠肥,最后...
    山天大畜閱讀 1,856評(píng)論 0 1
  • 一武氓、iOS和OSX中添加第三方依賴庫(kù)1.1 CocoaPods介紹1.2 Carthage介紹1.3 CocoaP...
    小米鍋巴閱讀 2,213評(píng)論 0 8
  • 計(jì)劃: 20170227每天三件事:12/30 第一件事:查漏,上傳搪柑,匯總聋丝,上報(bào)申請(qǐng)+第二件事:鼓勵(lì)孩子+第三件事...
    花草姐姐閱讀 133評(píng)論 3 1