Swift 組件化開發之創建遠程私有庫

好好學習,天天向上

前言

組件化的優點

優點

  • 降低耦合度
  • 組件單獨開發,獨立測試
  • 多人協作開發

缺點

  • 版本同步的問題

組件化劃分

基礎組件

基礎配置(經常用到的宏,常量),分類,網絡(AFN、SDW二次封裝)、工具類(日期時間的處理,文件處理,設備處理)

功能組件

控間(彈幕、輪播器、選項卡);功能(斷點續傳,音頻處理)

業務組件

業務線一,業務線二

正文

前面都是開場白,直接進入主題

步驟歸納:

  1. 創建遠程索引庫
  2. 將遠程索引庫添加到本地
  3. 創建本地私有庫,完成測試
  4. 修改Spec文件
  5. 提交私有庫代碼并增加tag
  6. 提交spec至私有索引庫
  7. 測試

步驟詳細說明:

0.插播一下即將用到的pod命令

  • pod repo add 索引庫名稱 索引庫地址: 添加自己的索引庫
  • pod lib create 組件名:在本地創建一個基于pod模板的git倉庫
  • pod lib lint: 本地庫驗證
  • pod spec lint: 遠程庫驗證
  • pod repo push 索引庫名稱 .podspec文件: 先將pod索引添加到本地的索引庫,然后會自動推送到遠程的索引庫

1. 創建私有索引庫

遠程索引庫創建是以常用的【碼云】為例的,如下圖所示。

1.png

2. 將私有索引庫添加到本地

2.1 通過pod repo命令行,查看pod源地址

2.png

如上圖,目前我的本地只有一個github上的公有索引庫。

2.2 通過插播的pod命令,添加遠程索引庫到本地

執行以下命令:
pod repo add KPSpecs https://gitee.com/katypei/KPSpecs.git

2.3 驗證索引庫是否添加到本地成功

重新執行pod repo即可。

3.png

如上圖所示,及添加成功。

3.創建本地私有庫(此處以KPExtension為例)

3.1 在【碼云】創建組件庫,庫名為KPExtension

3.2 通過pod命令,在本地創建一個基于pod模板的git倉庫,倉庫名如3.1

pod lib create KPExtension

使用以上命令,需要進行一些信息的配置

5.png

以上配置針對個人需要進行配置,此處因為我本人是希望創建一個swift的遠程私有庫,所以此處語言我選擇了Swift。配置完成之后,會自動打開一個響應的Example項目。該項目如下:

7.png

將需要放到該私有庫的文件替換Classes文件夾中的Replace.swift。如下所示:

8.png

3.將上述文件拖動到對應位置(也就是之前ReplaceMe.swift之前所在的文件夾下),如下圖所示:

9.png

4. 執行pod install命令,在Example中進行測試,確保組件可用。

4.修改Spec文件

10.png

以下是Spec文件簡單介紹

  s.name         = "KPExtension(倉庫名稱)"
  s.version      = "0.0.1(版本號,這里跟下面s.source中的tag有關)"
  s.summary      = "對你自己倉庫的簡單描述,不要寫太多字"
  s.description  = "這個是詳細描述,需要比s.summary的要長,不然會出現警告"
  s.homepage     = "倉庫首頁地址,如https://github.com/KityPei/KPExtension"
  s.license      = "MIT"
  s.author       = { 'KityPei' => 'kity_pei@163.com' }
  # source存放的地址是代碼的真正地址
  s.source       = { :git => "倉庫對應的git地址,如https://gitee.com/katypei/KPExtension.git", :tag => "#{s.version}" }
  # pod install時真正下載下來的文件路徑,這里指定的是你倉庫下的Classes目錄中的所有.h和.m文件(填寫的是相對地址)
  # ** 通配目錄

  s.source_files  = 'KPExtension/Classes/**/*'

  # s.resource_bundles = {
  #   'KPExtension' => ['KPExtension/Assets/*.png']
  # }

  # s.public_header_files = 'Pod/Classes/**/*.h'
  # s.frameworks = 'UIKit', 'MapKit'
  # s.library = "sqlite3" # 框架依賴系統的sqlite3

主要需要修改的地方:

s.name         = "KPExtension"
s.version      = '0.0.1'
s.summary      = '常用到的分類'
s.homepage     = 'https://gitee.com/katypei'
s.source       = { :git => 'https://gitee.com/katypei/KPExtension.git', :tag => s.version.to_s }

非常重要的事情
s.source要修改成對應的git地址
s.source要修改成對應的git地址
s.source要修改成對應的git地址

5. 提交私有庫代碼并增加tag

5.1 將代碼提交到組件倉庫,常用的git命令,git工具就不說了

git add .  // 工作時的所有變化提交到暫存區
git commit -m '注釋'   // 提交到版本庫
git remote add origin https://gitee.com/katypei/KPExtension.git
git push -u origin master

5.2 打上tag

git tag '0.0.1'
git push --tags

6. 提交spec至私有索引庫

6.1 本地驗證Spec的必填字段

pod lib lint

驗證通過如下圖:

本地驗證通過.png

6.2 遠程驗證Spec

pod spec lint

驗證通過如下圖:

遠端驗證通過.png

6.3 提交podspec

執行以下命令,將我們的代碼直接push到本地索引庫KPSpecs,推送后會自動幫我們同步到遠程索引庫

pod repo push KPSpecs KPExtension.podspec 

成功可以如下圖所示:

添加到私有索引庫成功.png

成功也可以如下圖所示:

使用Finder查找,路徑應該如下:

~/.cocoapods/repos/
文件顯示.png

7. 測試

測試就不多說了,注意事項就是要指定pod源,否則可能找不到創建的私有遠程。

即在podfile文件中添加:

source 'https://github.com/CocoaPods/Specs.git'  # github的公有索引庫
source 'https://gitee.com/katypei/KPSpecs.git' # 自己的私有索引庫

踩坑之旅

問題一:

在進行本地驗證的時候,出現以下錯誤:

11.png

出現這種情況的原因:

因為制作的是Swift的私有庫,沒有指定Swift語言的版本,驗證器默認使用的是Swift 3.2,可能會出現問題,希望指定Swift語言的版本。

解決方案:

  1. 使用pod lib lint --alow-warnings命令忽略驗證過程中的警告(使用的該命令應該注意你包裝過的庫盡量是沒問題的);
  2. 修改.podspec文件,新增一行s.swift_version = '4.0',指定Swift語言的版本,當然馬上就出Swift 5.0了;
  3. 在工程目錄執行echo "4.0" > .swift-version,在驗證配置文件的時候執行pod spec lint prcject.podspec --swift-version=4.0 –verbose指定Swift的版本。
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 227,533評論 6 531
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,055評論 3 414
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 175,365評論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,561評論 1 307
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,346評論 6 404
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 54,889評論 1 321
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 42,978評論 3 439
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,118評論 0 286
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,637評論 1 333
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,558評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,739評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,246評論 5 355
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 43,980評論 3 346
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,362評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,619評論 1 280
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,347評論 3 390
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,702評論 2 370

推薦閱讀更多精彩內容