CocoaPods遠程私有庫從0到1 (轉(zhuǎn)載)

iOS開發(fā) - CocoaPods遠程私有庫從0到1

1. ****創(chuàng)建主工程

路徑:/Users/Funky/Desktop/CocoaPodRemoteLib/MyMainProject/MyMainProject.xcodeproj

2. ****在碼云(****http://git.oschina.net/****)上創(chuàng)建一個自己的遠程私有索引庫,用來存放私有框架的詳細描述信息****.podspec****文件

image

3. ****創(chuàng)建本地的私有索引庫文件夾,并與遠程私有索引庫進行關(guān)聯(lián)

3.1 $ pod repo(查看本地已存在的索引庫)

master

3.2 添加本地私有索引庫并與遠程私有庫

$ pod repo add MyProjectSpec https://git.oschina.net/funky_hs/myprojectspec.git

3.3 再次查看本地已存在的索引庫 $ pod repo

image

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

image

5 ****快速創(chuàng)建模板測試工程(測試基礎(chǔ)組件)

5.1 快速創(chuàng)建模板測試工程 在/Users/Funky/Desktop/CocoaPodRemoteLib路徑下

cd /Users/Funky/Desktop/CocoaPodRemoteLib

$ pod lib create MyProjectBase (快速創(chuàng)建)

image

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

image

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文件

image

$ pod lib lint (驗證上一步編輯的 MyProjectBase.podspec文件)

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

image

這是一個警告,目前也并沒有找到合適的解決辦法,我們添加 --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

image

$ pod repo push MyProjectSpec MyProjectBase.podspec

image

表示提交成功,此時遠程私有庫到此就已結(jié)束

注意:提交后,依然會驗證 podspec文件,驗證通過后 會自動上傳到在遠程spec索引庫,不信的話你可以看看在第二步創(chuàng)建的Spec遠程私有索引庫,是不是多了一個MyProjectBase/ 0.1.0文件!

注意 如果報 [!] The Name.podspec specification 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文件

image

$ pod install

打開MyMainProject.xcworkspace,此時在pod中可以找到遠程私有庫的代碼

9 ****添加及修改基礎(chǔ)組件內(nèi)容

如下圖:

image

在本地的基礎(chǔ)組件的Classes路徑下 又新增了兩個文件夾(Base,Tool)

$ cd /Users/Funky/Desktop/CocoaPodRemoteLib/MyProjectBase

編輯MyProjectBase 模版工程的MyProjectBase.podspec文件

image

$ 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文件

image

$ pod install

10 ****在基礎(chǔ)組件****MyProjectBase****內(nèi)部生成子庫

問題描述:當(dāng)我們執(zhí)行完第九步后,我們發(fā)現(xiàn)主工程的Pods中并沒有按文件夾(Base,Category,Tool)進行不同類的劃分,同時當(dāng)我們僅僅想引入一個Category庫時,連同Base,Tool也引入進項目中,這就太惡心了!

參照AFNetworking

image

修改MyProjectBase.podspec文件

image

$ 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文件

image

$ pod install

就現(xiàn)在 快打開主工程看一看吧!

有不理解或者發(fā)現(xiàn)博主存在理解操作不正確的地方,歡迎評論,我會及時修正!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容