
前言
因?yàn)楣卷?xiàng)目中引入私有庫很久了,一直想寫一篇關(guān)于創(chuàng)建私有庫的步驟總結(jié)。這幾天正好比較閑,在同事Bartholomew大熊的幫助下,完成了這篇文章。
具體私有庫是什么,就不再贅述,直接開始創(chuàng)建私有庫啦。
下面我們就直接開始!Go!
詳細(xì)步驟
1.創(chuàng)建私有庫
首先我們要?jiǎng)?chuàng)建兩個(gè)私有倉庫。一個(gè)倉庫是存放代碼的倉庫JATestKit(帶上README.md和LICENSE),一個(gè)是索引庫JAPrivateRepos,兩個(gè)庫的關(guān)系就好比AFNetworking和cocoapod的關(guān)系,換句話說,你的索引庫對于你的代碼庫來說,就相當(dāng)于cocoapod,你創(chuàng)建的所有代碼庫都存放在索引庫里。
因?yàn)镚itHub的私有庫需要收費(fèi),我這里使用的是coding.net創(chuàng)建的私有庫。
創(chuàng)建私有庫的步驟在這里就不詳細(xì)寫了......因?yàn)樘唵瘟藒

創(chuàng)建完成之后,我們先不管代碼庫。先將索引庫添加到本地的cocoapods/repos目錄下。
到在終端中執(zhí)行如下命令
cd .cocoapods/repos
pod repo add JAPrivateRepos https://git.coding.net/Plotac/JAPrivateRepos.git
即pod repo add +你的索引庫名稱 +索引庫地址
回車,出現(xiàn)如下所示就成功辣~

此時(shí)可以進(jìn)入.cocoapods/repos目錄下驗(yàn)證一下是否創(chuàng)建成功

今后你的所有私有庫,在不更改索引庫的情況下,都會在這個(gè)文件里。
Nice!Next!
2.創(chuàng)建Pod項(xiàng)目工程文件
接下來要?jiǎng)?chuàng)建podspecs代碼庫 ,代碼如下
pod lib create JATestKit_Local
即pod lib create +代碼庫名稱。
我這里把它放在了桌面。
執(zhí)行命令,成功后,桌面就會出現(xiàn)
JATestKit_Local文件夾了。
緊接著,終端上會出現(xiàn)幾個(gè)問題,如下圖

全部回答完之后,會自動(dòng)執(zhí)行pod install命令創(chuàng)建項(xiàng)目并生成依賴。若出現(xiàn)下圖所示,說明Pod項(xiàng)目工程文件就創(chuàng)建成功了!

3.配置Pod項(xiàng)目工程文件
打開我們剛剛clone下來的 JATestKit_Local。
JATestKit_Local -> Example -> JATestKit_Local.xcworkspace
展開Podspec Metadata文件,點(diǎn)擊JATestKit_Local.podspec,開始編輯。

編輯完之后,我們可以驗(yàn)證一下這個(gè)文件是否可用。cd到這個(gè)文件中,執(zhí)行一行命令:
pod lib lint JATestKit_Local.podspec
出現(xiàn)如圖所示的情況,就是成功了喲~

如果沒有成功,就要重新編輯,把warning和error全部消除。
4.向私有庫中提交Pod工程文件
現(xiàn)在我們的Pod工程文件podspec已經(jīng)制作好了。
打開JATestKit_Local.xcworkspace,我們在如圖所示的目錄下創(chuàng)建一個(gè)類JATestClass,記得要把里面Classes里面自動(dòng)生成的ReplaceMe.m文件刪除~

我們在JATestClass.h文件中聲明一個(gè)方法,并在.m文件中實(shí)現(xiàn)它。
.h中
- (void)ja_test;
.m中
- (void)ja_test {
NSLog(@"Private Specs:success");
}
等一下我們就用這個(gè)方法來驗(yàn)證私有庫是否可用。
接下來,就該將代碼上傳到coding.net的倉庫里啦~
命令如下:
git add .
git commit -m "commit"
git remote add origin https://git.coding.net/Plotac/JATestKit.git
git push -u origin master
然后,在push的時(shí)候,華麗麗的失敗了- 0-。

這是因?yàn)閭}庫里的README.MD、LICENSE和我們podspecs里的沖突了。
解決沖突:
git pull origin master
git pull origin master --allow-unrelated-histories
然后解決沖突之后再提交
git add .
git commit -m 'commit2'
并且重新push到git上去。
命令:
git pull origin master
git push -u origin master
tips:如果中間出現(xiàn)錯(cuò)誤可用如下命令查看狀態(tài)
git status
成功以后,coding.net上就有了我們的代碼了~

5.標(biāo)記tag
code上傳成功以后,標(biāo)記tag
git tag 0.1.0
git push origin 0.1.0

6.將私有庫放到索引庫里
在第一步中,我們已經(jīng)將索引庫clone到了我們的cocoapods/repos目錄下了。
cd到JATestKit_Local,執(zhí)行命令:
pod repo push JAPrivateRepos JATestKit_Local.podspec
即pod repo push +索引庫名 +podspec名
出現(xiàn)下圖,說明你就大功告成了,撒花,鼓掌??

驗(yàn)證一下:
pod search JATestKit_Local

至此,私有庫的制作就完成了。
7.驗(yàn)證
接下來,我們新建一個(gè)工程PrivateSpecsTest,測試一下是否正常使用。
Podfile:
source 'https://git.coding.net/Plotac/JAPrivateRepos.git'
platform :ios, '8.0'
target 'PrivateSpecsTest' do
pod 'JATestKit_Local', '0.1.0'
end
然后:
pod install
打開工程后就發(fā)現(xiàn)導(dǎo)入成功啦~:

在ViewController里,導(dǎo)入頭文件
#import "JATestClass.h"
- (void)viewDidLoad {
[super viewDidLoad];
JATestClass *obj = [[JATestClass alloc]init];
[obj ja_test];
}
Command+R ..
控制臺輸出:

干的漂亮!
8.更新版本
私有庫已經(jīng)制作成功了,現(xiàn)在我們就要對自己的庫進(jìn)行更新維護(hù),提交新版本~
打開例子工程:
JATestKit_Local -> Example -JATestKit_Local.xcworkspace
比如說,我們要給我們的JATestClass類擴(kuò)充一個(gè)新的方法。
.h中
- (void)ja_newTest;
.m中
- (void)ja_newTest {
NSLog(@"Update Success");
}
點(diǎn)擊JATestKit_Local.podspec,開始編輯:

如果你的更新有很多內(nèi)容,可以在詳細(xì)介紹里面完善,這里只做一個(gè)例子。
更改之后,提交:
git add .
git commit -m 'commit666'
git pull origin master(先拉一下代碼,防止多人開發(fā)的時(shí)候別人有提交的代碼)
git push -u origin master
標(biāo)記新的tag
git tag 0.1.2
git push origin 0.1.2
Push到索引庫里
pod repo push JAPrivateRepos JATestKit_Local.podspec
如果沒有出現(xiàn)error和warning,就說明成功了
搜索一下
pod search JATestKit_Local
更新成功

棒棒噠!??
至此,私有庫的制作和更新就全部完成~
有錯(cuò)誤不對的地方還望多多指教,感謝閱讀。
參考資料:
使用Cocoapods創(chuàng)建私有podspec
Creating Your First CocoaPod
再次感謝 Bartholomew大熊 的幫助~