Cocoapods 創(chuàng)建私有庫實現(xiàn)項目模塊化管理

前言

項目私有化目的

項目書寫的時候肯定是剛開始比較簡單贩虾,功能也比較少,模塊比較少肯定能滿足項目的需求仰泻,隨著項目模塊的增多,項目的代碼量也逐漸增加背亥,很有可能會有多人進行開發(fā),提交合并代碼會很頭痛悬赏,模塊化給我們一個很好的解決方式,讓我們開始吧娄徊。

創(chuàng)建私有庫 spec repo

spec repo 是所有的Pods的一個索引闽颇,就是一個容器,所有公開的Pods都在這個里面寄锐,他實際是一個Git倉庫remote端 在GitHub上兵多,但是當你使用了Cocoapods后他會被clone到本地的~/.cocoapods/repos目錄下,可以進入到這個目錄看到master文件夾就是這個官方的Spec Repo了橄仆。這個master目錄的結構是這個樣子的

#~/.cocoapods/repos 大致目錄是這樣的
├── Specs 
         └── [SPEC_NAME] 
                  └── [VERSION] 
                           └── [SPEC_NAME].podspec

所以我們需要創(chuàng)建一個類似master結構的spec repo github 私有倉庫是收費的剩膘, 我選擇了Coding 還有其他的服務 像 gitLab、開源中國盆顾、Bitbucket怠褐、CSDN。

在terminal創(chuàng)建 repos

# pod repo add [Private Repo Name]  [HTTPS clone URL]
$ pod repo add WMCommon https://git.coding.net/fufu62/WSPCommon.git

此時如果成功的話進入到~/.cocoapods/repos目錄下就可以看到WMCommon這個目錄了您宪。至此第一步創(chuàng)建私有Spec Repo完成奈懒。

創(chuàng)建 podspec 文件

已經(jīng)有了現(xiàn)成的項目,需要給這個項目創(chuàng)建一個podspec文件宪巨,創(chuàng)建它需要執(zhí)行Cocoapods的另外一個命令磷杏,官方文檔在這里

在本地項目目錄下創(chuàng)建
$ pod spec create WPCommon

執(zhí)行完之后,就創(chuàng)建了一個podspec文件捏卓,他其中會包含很多內容极祸,可以按照我之前介紹的進行編輯,沒用的刪掉。

Pod::Spec.new do |s|
s.name = "WPCommon"
s.version = "0.2"
s.summary = "the project for WPCommon"
s.homepage = "https://git.coding.net/fufu62/WSPCommon.git"
s.license = "MIT"
s.author             = { "ISPWang" => "sanpeng123@126.com" }
s.platform = :ios, "7.1"
s.ios.deployment_target = "7.1"
s.source = { :git => "https://git.coding.net/fufu62/WSPCommon.git", :tag => "0.1" }
s.source_files = "CommonTest/CommonTest/Mine/Controller/**/*.{h,m}"
s.frameworks = "UIKit"
s.requires_arc = true
end
# 編輯完成之后使用驗證命令驗證一下
$ pod lib lint
WPCommon passed validation. #驗證無錯誤
# 可以進入下一步了遥金。沒有驗證過去 根據(jù)錯誤提示進行修改 podspec文件

本地測試pod spec文件

我們可以創(chuàng)建一個新的項目浴捆,在這個項目的Podfile文件中直接指定剛才創(chuàng)建編輯好的podspec文件,看是否可用汰规。 在Podfile中我們可以這樣編輯汤功,有兩種方式

platform :ios, '7.1'
pod ‘WPCommon', :path => ‘~/Code/WSPCommon/CommonTest'      # 指定路徑
pod 'WPCommon ', :podspec => '~/Code/WSPCommon/CommonTest/WPCommon.podspec'

然后執(zhí)行pod install命令安裝依賴,打開項目工程溜哮,可以看到庫文件都被加載到Pods子項目中了滔金,不過它們并沒有在Pods目錄下,而是跟測試項目一樣存在于Development Pods/WPCommon中茂嗓,這是因為我們是在本地測試餐茵,而沒有把podspec文件添加到Spec Repo中的緣故。
在項目中編寫代碼述吸,測試庫文件無誤后就可以開始下一步了忿族,提交podspec到Spec Repo中。

提交步驟

# 提交代碼
git add -A && git commit -m "Release 0.1"
# 打tag
git tag  -m “new version” ‘0.1'
# 把tag推到遠程倉庫
git push --tags
# 將本地的master分支推送到遠程倉庫
git push origin master

Spec Repo提交pod spec

向Spec Repo提交podspec需要完成兩點一個是podspec必須通過驗證無誤蝌矛,在一個就是刪掉無用的注釋(這個不是必須的道批,為了規(guī)范還是刪掉吧)。 向我們的私有Spec Repo提交podspec只需要一個命令

$ pod repo push WMCommon WPCommon.podsepc #前面是本地Repo名字 后面是pod spec名字
完成之后這個組件庫就添加到我們的私有Spec Repo中了入撒,可以進入到~/.cocoapods/repos/WTSpecs目錄下查看

.
├── LICENSE
├── WPCommon
│      └── 0.1
│               └── WPCommon.podspec
         └── 0.2
│               └── WPCommon.podspec
└── README.md

再去看我們的Spec Repo遠端倉庫隆豹,也有了一次提交,這個podspec也已經(jīng)被Push上去了茅逮。

pod search WPCommon

-> WPCommon (0.2)
   A short test for  of WPCommon.
   pod 'WPCommon', '~> 0.2'
   - Homepage: https://git.coding.net/fufu62/WSPCommon.git
   - Source:   https://git.coding.net/fufu62/WSPCommon.git

   - Versions: 0.2, 0.1 [WMCommon repo]

使用制作好的Pod

在Pod file 文件里增加私有庫文件即可
source 'https://github.com/CocoaPods/Specs.git'
source 'https://git.coding.net/fufu62/WSPCommon.git'

platform:ios,’8.0’
target "cocoapodsTest" do
pod 'MJRefresh'
pod 'SDWebImage', '~> 3.8.1'
pod 'WPCommon', '~> 0.2'
end
# 快速更新狀態(tài)
pod update --no-repo-update

中間會出現(xiàn)警告—no-clean或者error ?

Assuming you are using git for that repo, can you run git status? If the repo is clean it would say something like nothing to commit, working directory clean.
Sorry, can you run git status --porcelain, that’s the exact command it runs

pod repo push  WMCommon WMCommon.podspec --allow-warnings --verbose 
// --allow-warnings : 允許 警告璃赡,有一些警告是代碼自身帶的。
// --use-libraries : 私有庫献雅、靜態(tài)庫引用的時候加上 
// —verbose : lint顯示詳情

框架中如果使用Xib加載crash的情況
出現(xiàn)通過mainBundle加載不了碉考,無法獲取Xib

  [NSBundle bundleForClass:[self class] 獲取bundle 
// 這樣之后,無論是通過copy文件夾方式還是CocoaPods下載安裝的方式挺身,都能正常使用xib進行初始化了

CocoaPods下載框架中圖片無法正常顯示通過ImageName

  • 通過CocoaPods下載安裝侯谁,如果xib中直接填寫好的圖片,則圖片資源能直接顯示瞒渠,如果通過代碼"[UIImage imageNamed:@""]"去設置的話良蒸,則圖片資源根本顯示不了
//改變代碼圖片路徑
// 圖片路徑
#define WMCommonSrcName(file) [@"WMCommon.bundle" stringByAppendingPathComponent:file]
#define WMCommonFrameworkSrcName(file) [@"Frameworks/WMCommon.framework/WMCommon.bundle" stringByAppendingPathComponent:file]
WMCommonSrcName(file) 為通過copy文件夾方式獲取圖片路徑的宏
WMCommonFrameworkSrcName(file) 為通過cocoapods下載安裝獲取圖片路徑的宏
之后修改代碼中設置圖片的方式如下:
UIImage *img = [UIImage imageNamed:WMCommonSrcName(@"image.png")]?:[UIImage imageNamed:WMCommonFrameworkSrcName(@"image.png")];

參照

使用Cocoapods創(chuàng)建私有pod spec
iOS CocoaPods 私有庫 steps and tips
CocoaPods 詳解之——更新篇
iOS移動端架構的那些事

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市伍玖,隨后出現(xiàn)的幾起案子嫩痰,更是在濱河造成了極大的恐慌,老刑警劉巖窍箍,帶你破解...
    沈念sama閱讀 211,042評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件串纺,死亡現(xiàn)場離奇詭異丽旅,居然都是意外死亡,警方通過查閱死者的電腦和手機纺棺,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,996評論 2 384
  • 文/潘曉璐 我一進店門榄笙,熙熙樓的掌柜王于貴愁眉苦臉地迎上來祷蝌,“玉大人茅撞,你說我怎么就攤上這事巨朦。” “怎么了糊啡?”我有些...
    開封第一講書人閱讀 156,674評論 0 345
  • 文/不壞的土叔 我叫張陵拄查,是天一觀的道長。 經(jīng)常有香客問我棚蓄,道長,這世上最難降的妖魔是什么梭依? 我笑而不...
    開封第一講書人閱讀 56,340評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮役拴,結果婚禮上邪蛔,老公的妹妹穿的比我還像新娘。我一直安慰自己扎狱,他們只是感情好,可當我...
    茶點故事閱讀 65,404評論 5 384
  • 文/花漫 我一把揭開白布淤击。 她就那樣靜靜地躺著故源,像睡著了一般。 火紅的嫁衣襯著肌膚如雪印机。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,749評論 1 289
  • 那天射赛,我揣著相機與錄音奶是,去河邊找鬼竣灌。 笑死秆麸,一個胖子當著我的面吹牛,可吹牛的內容都是我干的沮趣。 我是一名探鬼主播,決...
    沈念sama閱讀 38,902評論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼驻龟,長吁一口氣:“原來是場噩夢啊……” “哼育叁!你這毒婦竟也來了?” 一聲冷哼從身側響起豪嗽,我...
    開封第一講書人閱讀 37,662評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎隐锭,沒想到半個月后计贰,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,110評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡荞怒,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,451評論 2 325
  • 正文 我和宋清朗相戀三年秧秉,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片象迎。...
    茶點故事閱讀 38,577評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡砾淌,死狀恐怖啦撮,靈堂內的尸體忽然破棺而出汪厨,到底是詐尸還是另有隱情,我是刑警寧澤骄崩,帶...
    沈念sama閱讀 34,258評論 4 328
  • 正文 年R本政府宣布,位于F島的核電站抠璃,受9級特大地震影響,放射性物質發(fā)生泄漏窿春。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,848評論 3 312
  • 文/蒙蒙 一旧乞、第九天 我趴在偏房一處隱蔽的房頂上張望磅氨。 院中可真熱鬧,春花似錦烦租、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,726評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至粪小,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間量没,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,952評論 1 264
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留猾担,地道東北人刺下。 一個月前我還...
    沈念sama閱讀 46,271評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像橘茉,于是被迫代替她去往敵國和親姨丈。 傳聞我的和親對象是個殘疾皇子擅腰,可洞房花燭夜當晚...
    茶點故事閱讀 43,452評論 2 348

推薦閱讀更多精彩內容