iOS開發(fā) - CocoaPods遠程私有庫從0到1
1. ****創(chuàng)建主工程
路徑:/Users/Funky/Desktop/CocoaPodRemoteLib/MyMainProject/MyMainProject.xcodeproj
2. ****在碼云(****http://git.oschina.net/****)上創(chuàng)建一個自己的遠程私有索引庫,用來存放私有框架的詳細描述信息****.podspec****文件

3. ****創(chuàng)建本地的私有索引庫文件夾,并與遠程私有索引庫進行關(guān)聯(lián)
3.1 $ pod repo(查看本地已存在的索引庫)
master
Type: git (master)
Path: /Users/Funky/.cocoapods/repos/master
3.2 添加本地私有索引庫并與遠程私有庫
$ pod repo add MyProjectSpec https://git.oschina.net/funky_hs/myprojectspec.git
3.3 再次查看本地已存在的索引庫 $ pod repo

**4 ****在代碼托管平臺碼云(****http://git.oschina.net/****)創(chuàng)建一個用來存放項目基礎(chǔ)組件的倉庫****MyProjectBase **

5 ****快速創(chuàng)建模板測試工程(測試基礎(chǔ)組件)
5.1 快速創(chuàng)建模板測試工程 在/Users/Funky/Desktop/CocoaPodRemoteLib路徑下
cd /Users/Funky/Desktop/CocoaPodRemoteLib
$ pod lib create MyProjectBase (快速創(chuàng)建)

5.2 填寫以上信息后Xcode會自動打開測試工程,在測試模板工程文件夾下,我們可以看到如下:

5.3 用Category去替換Replace.m文件,在回到Example路徑下,重新執(zhí)行pod install操作
$ cd /Users/Funky/Desktop/CocoaPodRemoteLib/MyProjectBase/Example
$ pod install
此時打開模板測試工程,我們可以看到Pods > Development Pods > MyProjectBase > MyProjectBase > Classes > Category > (.h .m)
我們可以在模板測試工程中進行修改和操作!
6 ****將上面的模板測試工程,提交到第四步創(chuàng)建的遠程代碼倉庫
$ cd /Users/Funky/Desktop/CocoaPodRemoteLib/MyProjectBase
$ git status
$ git add .
$ git commit -m'基礎(chǔ)組件測試工程'
編輯MyProjectBase 模版工程的MyProjectBase.podspec文件

$ pod lib lint (驗證上一步編輯的 MyProjectBase.podspec文件)
如果有ERROR,則需要去一個個修改完成,例如某個Category的.m文件沒有正確的引入依賴庫等都會造成ERROR,解決好所有的ERROR后,驗證結(jié)果如下:

這是一個警告,目前也并沒有找到合適的解決辦法,我們添加 --allow-warnings進行忽略
$ pod lib lint --allow-warnings
此時 MyProjectBase passed validation. 則說明驗證通過
$ git status
$ git add .
$ git commit -m '編輯spec文件'
$ git remote add origin https://git.oschina.net/funky_hs/myprojectbase.git (將本地庫與遠程代碼倉庫進行關(guān)聯(lián))
$ git push origin master (提交到遠程倉庫)
$ git tag '0.1.0' (要與MyProjectBase.podspec文件中的tag值保持一致)
$ git push --tags(將tag提交到遠程)
$ pod spec lint --allow-warnings(驗證遠程是否正確,注意:Username與Password一定要填寫正確)
如果 Username與Password 填寫不正確,則:
- ERROR | [iOS] unknown: Encountered an unknown error ([!] /usr/bin/git clone http://git.oschina.net/funky_hs/myprojectbase.git /var/folders/d_/1bsk9q6n63zgbj5cwjg4m_wr0000gn/T/d20170427-3621-13rl3wf --template= --single-branch --depth 1 --branch 0.1.0
MyProjectBase.podspec passed validation.
表明驗證通過
7 ****將****podspec****文件提交到本地的私有索引庫
$ pod repo

$ pod repo push MyProjectSpec MyProjectBase.podspec

表示提交成功,此時遠程私有庫到此就已結(jié)束
注意:提交后,依然會驗證 podspec文件,驗證通過后 會自動上傳到在遠程spec索引庫,不信的話你可以看看在第二步創(chuàng)建的Spec遠程私有索引庫,是不是多了一個MyProjectBase/ 0.1.0文件!
注意 如果報 [!] The
Name.podspecspecification does not validate.錯誤執(zhí)行下面這段代碼切記:
pod repo push 本地repo名 NAME.podspec --verbose --use-libraries --allow-warnings
8 ****主工程利用****Pods****使用我們自己的私有框架
$ cd /Users/Funky/Desktop/CocoaPodRemoteLib/MyMainProject
$ pod init
用Xcode打開編輯Podfile文件

$ pod install
打開MyMainProject.xcworkspace,此時在pod中可以找到遠程私有庫的代碼
9 ****添加及修改基礎(chǔ)組件內(nèi)容
如下圖:

在本地的基礎(chǔ)組件的Classes路徑下 又新增了兩個文件夾(Base,Tool)
$ cd /Users/Funky/Desktop/CocoaPodRemoteLib/MyProjectBase
編輯MyProjectBase 模版工程的MyProjectBase.podspec文件

$ git status
$ git add .
$ git commit -m'新增Base,Tool文件內(nèi)容'
$ git push origin master (提交到遠程)
$ git tag '0.2.0'
$ git push --tags
$ pod repo push MyProjectSpec MyProjectBase.podspec
$ cd /Users/Funky/Desktop/CocoaPodRemoteLib/MyMainProject
修改Podfile文件

$ pod install
10 ****在基礎(chǔ)組件****MyProjectBase****內(nèi)部生成子庫
問題描述:當(dāng)我們執(zhí)行完第九步后,我們發(fā)現(xiàn)主工程的Pods中并沒有按文件夾(Base,Category,Tool)進行不同類的劃分,同時當(dāng)我們僅僅想引入一個Category庫時,連同Base,Tool也引入進項目中,這就太惡心了!
參照AFNetworking

修改MyProjectBase.podspec文件

$ cd /Users/Funky/Desktop/CocoaPodRemoteLib/MyProjectBase
$ git status
$ git add .
$ git commit -m'生成子庫文件夾'
$ git push origin master (提交到遠程)
$ git tag '0.2.0'
$ git push --tags
$ pod repo push MyProjectSpec MyProjectBase.podspec
$ cd /Users/Funky/Desktop/CocoaPodRemoteLib/MyMainProject
修改Podfile文件

$ pod install
就現(xiàn)在 快打開主工程看一看吧!
有不理解或者發(fā)現(xiàn)博主存在理解操作不正確的地方,歡迎評論,我會及時修正!