程式碼管理 | 建立並管理自己的公有Cocopods庫
前言
隨著專案的發展,版本迭代,程式碼的重構,我們專案中一般會有很多有業務功能行性公共的元件,
app中可能多處都會使用到,甚至別的專案中也需要使用。比如我們 A 專案中有一個語音評測的功能,
前期只是在 A 專案裡面需要用到,後面在另一不同專案繪本閱讀需要用到相同語音評測的功能。
此時我們一般有兩種做法,
一是直接將這部分程式碼copy到繪本閱讀這個專案中;
二是將語音評測這部分邏輯給抽取出來,然後在分別在兩處使用。
很明顯在專案初期,或者時間緊迫的情況下,第一種方式很好的能夠勝任工作,我們前期也是這麼做的,
但是我發現到了隨著專案的推移和發展,這樣做的時間成本太大了,效率也很低下,有很多隱患(評測邏輯一旦有變動,你需要改動兩次,而且你沒法保證兩次的改動一致)。
所以把公司的公共元件抽離出來,使用 Cocoapods 整合管理是一種非常好的解決方案,這樣的話,後續只要維護更新好這個公共元件,所有使用到的工程 pod install/pod update 下即可使用到最新的版本,達到一處更改多處使用的效果而且工程管理更加高效。
一、註冊CocoaPods賬戶資訊
想要建立一個開源pod庫, 首先我們需要註冊CocoaPods, 這裡使用trunk方式, 作為一個iOS開發人員你一定安裝了CocoaPods, 那麼只需要在終端執行:
pod trunk register 郵箱地址 '使用者名稱' --verbose
這裡我們一般使用github郵箱和使用者名稱, 然後在你的郵箱中會收到確認郵件, 在瀏覽器中點選連結確認即註冊成功, 成功之後可以終端執行:
檢視自己的註冊資訊, 以後當你有了自己的開源Pod庫, 也可以用此方式隨時檢視自己釋出過的Pods;
# pod註冊資訊,開源pod庫
pod trunk me
二、建立共享庫的檔案倉庫
這裡從頭建立一個共享庫,以便對整個建立過程更加清楚。在terminal中建立一個全新的工程。這個檔案倉庫是你公共類庫的維護倉庫,新版本和修改可以通過這個倉庫釋出。
共享庫需要三個必不可少的部分:
A. 共享資料夾(資料夾存放著你要共享的內容, 也就是其他人pod得到的檔案,
.podspec檔案中的source_files需要指定此檔案路徑及檔案型別);
B. LICENSE檔案(預設一般選擇MIT);
C. 庫描述檔案.podspec(本庫的各項資訊描述, 需要提交給CocoaPods,
pod通過這個檔案查詢到你共享的庫,).
在terminal 中輸入
$ pod lib create 新的庫名
在建立庫的時候,會詢問你關於對新建庫的一些要求,根據自己的要求配置好就OK,可以參考Using Pod Lib Create
三、 配置好檔案倉庫後上傳到公用倉庫github | gitlab
把自己共享庫需要的檔案放置到工程中的指定位置
之後,將新建的專案push到遠端服務端github | gitlab。具體的操作需要先在github上建立一個空的repo,然後使用命令列提交。
git add -A
git commit -m "first commit"
//這裡替換成自己的 github上的專案地址
git remote add origin https://github.com/fangmeigithub/JWJOpenServe.git
git push -u origin master
提交成功後,github上面的新建工程變為類似下圖這樣的樣子。
四、編輯並驗證 .podspec檔案
這裡也有倆值得注意的地方;
s.version = '1.0.0' //這裡的版本和之後提交到github上的release 版的tag必須一致
s.summary = '進無盡的公開庫' //這裡必須修改,不修改的話下面的驗證時會報錯
編寫完成後, 我們需要驗證.podspec檔案的合法性, 這裡需要終端cd到.podspec檔案所在資料夾, 執行:
pod lib lint JM_ActionSheet.podspec
如有警告或者錯誤請重新檢查你的編寫正確性, 如果沒有問題會出現
五、給檔案倉庫打tag, 釋出一個release版本
一切準備就緒後, 我們需要在你的git倉庫裡面存在一個與.podspec檔案中一致的version, 這裡你可以在你的git倉庫中的releases一項去手動釋出, 也可以在當前資料夾下使用終端命令【釋出之前可以把git上新的變更先提交發布出去】:
git tag -m 'first release' '1.0.1'
//推送tag到遠端倉庫
git push --tag
成功之後即可在你的releases裡面看到這個tag的版本.
六、釋出自己的庫描述檔案podspec給cocoapods
同樣在這個資料夾下, 終端執行:
pod trunk push JWJOPenKit.podspec
這一步需要等很久,如果最後沒有報錯的話:
將你的庫檔案.podspec檔案提交到公有的specs上面, 這一步做的操作是驗證你的podspec檔案是否合法+提交到specs中(等同於fork;commit;push)+將上傳的podspec檔案轉成json格式檔案),成功後會出現Congrats資訊噢~
至此,你的共享庫就可以被其他人通過 Cocoapods 所使用了。
七、更新維護podspec
如果有錯誤或者需要迭代版本,修改工程檔案後推送到遠端倉庫後, 需要修改podspec中的版本號, 並重新打tag上傳, 再進行新一輪的驗證和釋出, 當然, 建立一個演示demo工程供其他開發者下載檢視並不會影響我們的pod庫。【在示例文字庫中製作演示demo好像需要匯入元件的原始檔,使用 pod好像匯入不進來,無法直接使用。當然你也可以把元件原始碼檔案庫和Dome分開,把 Dome作為對外公開的工程演示用例】
八、關於查詢和使用新建立的庫
當你釋出共享庫成功後,是可以馬上供其他人使用的,但是當你自己使用 pod search XXX的時候卻發現本地搜尋不到:
解決辦法:
pod setup成功後生成的~/Library/Caches/CocoaPods/search_index.json檔案, 是用來查詢的索引檔案, 終端輸入:
rm ~/Library/Caches/CocoaPods/search_index.json
刪除~/Library/Caches/CocoaPods目錄下的search_index.json檔案, 刪除成功後再執行:pod search 庫名, 等待輸出:Creating search index for spec repo 'master'.. Done! 稍等片刻就會出現你想要的結果~
參考文章
相關文章
- 建立你自己的本地倉庫(Maven倉庫管理-Nexus)Maven
- 建立公有pod庫
- CocoaPods公有庫的建立
- MVVM開發——vue元件(如何管理並完善自己的模版庫)MVVMVue元件
- 建立自己的日常管理工具
- 建立管理MySQL資料庫的shell指令碼MySql資料庫指令碼
- Nuget管理自己的專案庫
- [譯] 從現有的程式碼庫建立 Swift 包管理器Swift
- cocopods 簡單建立第三方類庫,及庫的更新
- 資料庫管理員許可權認證&&密碼檔案的建立和管理資料庫密碼
- 原始碼資料庫管理程式 (轉)原始碼資料庫
- 建立銷售管理資料庫資料庫
- 使用SourceTree管理GitLab程式碼倉庫Gitlab
- CocoaPods建立公有Pod庫方法總結
- 小程式封裝wx.request請求並建立介面管理檔案封裝
- 公有云管理系統的主要作用是什麼?
- 使用Docker搭建自己的Bitwarden密碼管理服務Docker密碼
- 自建 iOS 靜態庫並用 pod 管理iOS
- 程式設計師如何管理好自己的思維?程式設計師
- 建立自己的.net類庫 (轉)
- 2 Day DBA-管理方案物件-關於方案物件管理許可權-管理資料庫中儲存的程式程式碼物件資料庫
- 批次管理(一):批次建立&批次物料的初始入庫
- 程式碼管理(三)sourcetree 的使用
- Facebook是如何管理程式碼的
- weblogic管理2 - 建立並啟動一個managed serverWebServer
- 一般管理系統與公有云管理系統的區別是什麼?
- 手把手教你用 Nuget 管理自己的專案庫
- Git命令程式碼管理Git
- svn程式碼版本管理
- 自己封裝雙快取管理框架 Android 庫封裝快取框架Android
- Lumen 自己設計的版本管理
- **CI中建立你自己的類庫
- 管理(002):建立密碼檔案示例密碼
- 谷歌程式碼庫已超過 20 億行程式碼,他們是如何管理的?谷歌行程
- oracle 索引的建立與管理Oracle索引
- 利用公司SVN伺服器使用CocoaPods管理自己的私有庫伺服器
- 星外主機管理系統與ZKEYS公有云管理系統對比
- 教程|雲幫手部署Windows公有云管理系統Windows