組件化第一步:構建私有pod庫

目的:

構建自己的一個組件混巧,放在公司的私有pod庫中
然后可以通過cocoapod來導入這個pod庫

在構建私有庫之前趟大,先了解以下幾個基本基本...概念

repo(repository倉庫)

repo只是google用Python腳本寫的調(diào)用git的一個腳本横殴,主要是用來下載钩蚊、管理Android項目的軟件倉庫锻霎。

Pod(代碼庫)

分為
公有庫:放在外網(wǎng)上庙睡,其他開發(fā)者是可以訪問使用的
私有庫:放在本地或者內(nèi)網(wǎng)上事富,只有公司內(nèi)部的人員可以使用

創(chuàng)建公有Pod庫或者私有Pod庫, 實際上原理是一樣的, 都是基于git服務和repo協(xié)議技俐,不一樣的是, 兩者的版本索引查詢方式不一樣, 公有庫的podspec由CocoaPods/Specs管理, 而內(nèi)部私有使用的pod庫需要自己建立一個倉庫(Spec Repo)來管理podspec

podspec文件(spec說明書)

創(chuàng)建pod庫的時候會用到podspec文件將lib的一些信息,比如:版本號统台、作者名雕擂,鏈接地址等,以及其中用到的包括資源贱勃、源碼井赌、需要引用的framework,以及第三庫等等組織起來

Spec Repo(存放spec的倉庫)

Spec Repo,顧名思義,就是存放Spec文件的倉庫贵扰,就是一個容器仇穗,所有公開的Pods都在這個里面,是一個Git倉庫remote端.執(zhí)行 pod setup命令會clone該倉庫到本地的~/.cocoapods/repos目錄下戚绕,可以進入到這個目錄看到master文件夾就是這個官方的Spec Repo了纹坐。

Spec Repo倉庫保存了依賴庫的名稱,版本號,以及spec文件.
因為Spec Repo存放了所有的spec文件,所以很明顯它是一種集中式的依賴庫管理工具.

創(chuàng)建公有Pod庫或者私有Pod庫, 實際上原理是一樣的, 都是基于git服務和repo協(xié)議, 不一樣的是, 兩者的版本索引查詢方式不一樣, 公有庫的podspec由CocoaPods/Specs管理, 而內(nèi)部私有使用的pod庫需要自己建立一個倉庫來管理podspec.

好了,下面我們正式來構建私有的pod庫

構建私有pod庫

  1. 在公司的私有Git服務器上創(chuàng)建git倉庫:盛放自己的功能組件

    1. 必須有文件夾
    2. 必須有LICENSE文件(這個好像是通用的舞丛,如果創(chuàng)建項目的時候沒有耘子,直接從其他項目中拷過來一個就行)
    3. 必須有 庫描述文件.podspec
    
  2. 在公司的私有Git服務器上創(chuàng)建git倉庫用來做內(nèi)部私有庫的Spec Repo(盛放所有功能組件的spec)

     "這個Spec Repo必須添加到本地,否則組件clone不下來"
         pod repo add 庫的名字  庫的地址
         比如:pod repo add ymtSpecs git@git.yaomaitong.net:iOSPods/ymtSpecs.git
     執(zhí)行這個命令的人球切,必須得有這個庫的操作權限
     
     將ymtSpecs添加到本地repo, 添加成功后可以在/.cocoapods/repos/目錄下可以看到官方的specs:master和剛剛加入的specs:ymtSpecs
    
  3. 編寫自己庫的podspec文件谷誓,自己的組件里放一份。

    Pod::Spec.new do |s|
     s.name         = "TestModule"
     s.version      = "0.0.5"   //版本號最好與組件中的tag保持一致欧聘,否則使用的時候拉取不到最新組件
     s.summary      = "Test"
     s.homepage     = "http://gitlab.100credit.cn/xxx/TestModule"
     s.license      = "MIT"
     s.author             = { "yyy@163.com" => "yyy@163.com" }
     s.platform     = :ios
     s.source       = { :git => "http://gitlab.100credit.cn/xxx/TestModule.git", :tag => "#{s.version}" }
     s.source_files = "TestModule"  //文件夾下全部拷貝片林,還有一種寫法: TestModule/*.{h,m} 
    end
    
  4. 將這個文件放到spec repo一份

  1. 修改podspec中的version
  2. 提交代碼端盆,打Tag怀骤,注意:這個tag記得要提價到origin,默認是只在工作副本中打Tag焕妙,"tag = podspec中的version"
  3. pod repo push [Specs庫名] Category.podspec 將podspec推送到 spec Repo中

遇到的問題

  1. The NAME.podspec specification does not validate
用pod spec lint --verbose 驗證一下蒋伦,會打印出很多的詳細信息,此時打臃偃怠:The spec did not pass validation, due to 1 warning (but you can use `--allow-warnings` to ignore it).
所以痕届,我重新使用pod repo push Specs xx.podspec --allow-warnings 就成功了
  1. fatal: unable to access '...url...': Failed to connect to ...host... port 443: Operation timed out
    更新某個庫時,連接超時末患。
    解決步驟:
    1). pod repo 列出所有(公有庫研叫、私有庫的)本地庫,查看 cocoapods的本地庫路徑璧针,一般都是.cocoapods/repos/master
    2). 從報錯信息中嚷炉,可以看到操作失敗的三方庫的名稱、版本號探橱,使用shell命令 find進行查找
    find ~/.cocoapods/repos/master -iname 名稱申屹,會返回在本地庫中的路徑绘证。前往該路徑
    3). 三方庫文件夾下會有多個版本文件夾,找到報錯信息中的版本號對應的文件夾哗讥,里面會有一個xxx.podspec.json嚷那,替換json中source下git地址(可以直接Google,也可以在GitHub上搜索該庫名稱杆煞,看項目介紹魏宽,是否是這個庫的鏡像)。

參考文獻: https://segmentfault.com/a/1190000007947371

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末决乎,一起剝皮案震驚了整個濱河市湖员,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌瑞驱,老刑警劉巖娘摔,帶你破解...
    沈念sama閱讀 207,113評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異唤反,居然都是意外死亡凳寺,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評論 2 381
  • 文/潘曉璐 我一進店門彤侍,熙熙樓的掌柜王于貴愁眉苦臉地迎上來肠缨,“玉大人,你說我怎么就攤上這事盏阶∩罐龋” “怎么了?”我有些...
    開封第一講書人閱讀 153,340評論 0 344
  • 文/不壞的土叔 我叫張陵名斟,是天一觀的道長脑慧。 經(jīng)常有香客問我,道長砰盐,這世上最難降的妖魔是什么闷袒? 我笑而不...
    開封第一講書人閱讀 55,449評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮岩梳,結果婚禮上囊骤,老公的妹妹穿的比我還像新娘。我一直安慰自己冀值,他們只是感情好也物,可當我...
    茶點故事閱讀 64,445評論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著列疗,像睡著了一般滑蚯。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上作彤,一...
    開封第一講書人閱讀 49,166評論 1 284
  • 那天膘魄,我揣著相機與錄音乌逐,去河邊找鬼。 笑死创葡,一個胖子當著我的面吹牛浙踢,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播灿渴,決...
    沈念sama閱讀 38,442評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼洛波,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了骚露?” 一聲冷哼從身側(cè)響起蹬挤,我...
    開封第一講書人閱讀 37,105評論 0 261
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎棘幸,沒想到半個月后焰扳,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,601評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡误续,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,066評論 2 325
  • 正文 我和宋清朗相戀三年吨悍,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片蹋嵌。...
    茶點故事閱讀 38,161評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡蹦魔,死狀恐怖炫隶,靈堂內(nèi)的尸體忽然破棺而出狂巢,到底是詐尸還是另有隱情延窜,我是刑警寧澤,帶...
    沈念sama閱讀 33,792評論 4 323
  • 正文 年R本政府宣布腺办,位于F島的核電站焰手,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏菇晃。R本人自食惡果不足惜册倒,卻給世界環(huán)境...
    茶點故事閱讀 39,351評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望磺送。 院中可真熱鬧,春花似錦灿意、人聲如沸估灿。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,352評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽馅袁。三九已至,卻和暖如春荒辕,著一層夾襖步出監(jiān)牢的瞬間汗销,已是汗流浹背犹褒。 一陣腳步聲響...
    開封第一講書人閱讀 31,584評論 1 261
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留弛针,地道東北人叠骑。 一個月前我還...
    沈念sama閱讀 45,618評論 2 355
  • 正文 我出身青樓,卻偏偏與公主長得像削茁,于是被迫代替她去往敵國和親宙枷。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 42,916評論 2 344

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