天天看點

iOS 建立自己的Cocoapods公共、私有庫

作者:ITEER

1、git伺服器建立一個項目。

2、Clone項目到本地,到本地後是一個空目錄,還沒有工程。

iOS 建立自己的Cocoapods公共、私有庫

3、建立一個工程。

1.打開終端,切換到該目錄

cd /Users/lmy/Desktop/XesAppMultimedia

2、建立工程模闆

pod lib create XesAppMultimedia

3、配置相關選擇。

選擇平台

What platform do you want to use?? [ iOS / macOS ]

iOS

選擇語言

What language do you want to use?? [ Swift / ObjC ]

ObjC

是否自動生成demo,選擇Yes,友善以後測試

Would you like to include a demo application with your library? [ Yes / No ]

Yes

是否內建測試架構

Which testing frameworks will you use? [ Specta / Kiwi / None ]

None

UI 測試

Would you like to do view based testing? [ Yes / No ]

No

指定類字首

What is your class prefix?

XesApp

iOS 建立自己的Cocoapods公共、私有庫

4、執行完之後,自動打開項目。

iOS 建立自己的Cocoapods公共、私有庫

4、編寫podspec檔案。

1、 目錄下檔案介紹

  • podspec這個檔案主要是用來描述項目名稱、pod的版本号、介紹、首頁(homepage)、作者資訊、git源等,具體的可以參看官方Podspec Syntax Reference
  • README使用過GitHub的都會知道README檔案的重要性,這個檔案可以使用Markdown文法,主要展示在GitHub工程上的首頁。README檔案對于使用這個pod庫的人來說,有和沒有這個檔案,差別是很明顯的,此外這還有助于建立一個高品質的 CocoaPods Quality Index ;
  • LICENSE要想是Spec倉庫接收,就必須包含一個license。指令pod lib create 自動建立使用的是 MIT license;

2、如果用第3步的指令建立工程模闆,那麼工程的目錄下已經自動生成了.podspec(XesAppMultimedia.podspec)。如果是已有的工程或者庫檔案目錄,也可以利用Pod指令自己制作.podspec檔案,指令如下:

pod spec cretae <元件庫名>

PS注意:自動生成的podspec檔案隻是模闆,需要結合工程的庫檔案、資源目錄、遠端代碼倉庫(第1步建立的遠端代碼倉庫)修改補充podspec檔案。

iOS 建立自己的Cocoapods公共、私有庫

5、驗證.podspec檔案的格式是否正确

1、cd 到 *.podspec 檔案所在的目錄下,用到的一些指令

pod lib lint

解說:本地驗證pod能否通過驗證,如果失敗使用下面指令:pod lib lint --verbose檢視失敗原因, 或使用pod lib lint --allow-warnings忽略警告錯誤

pod spec lint

解說:本地和遠端驗證pod能否通過驗證,需要更新送出podspec到遠端specs倉庫,參考第7步,一般本地驗證通過即可送出到遠端specs倉庫

pod lib lint --verbose

解說:加--verbose可以顯示詳細的檢測過程,出錯時會顯示詳細的錯誤資訊

pod lib lint --verbose --allow-warnings

解說: 允許警告,用來解決由于代碼中存在警告導緻不能通過校驗的問題

有時候會提示一個錯誤:

iOS 建立自己的Cocoapods公共、私有庫

沒有寫簡介,把簡介填寫一下,就可以驗證通過。

有時候會提示一個錯誤:

iOS 建立自己的Cocoapods公共、私有庫

到這個提示錯誤資訊的時候,使用如下指令:

pod lib lint 檔案名稱.podspec --use-libraries --allow-warnings

相應的執行上傳指令的時候,也需要加上參數:

pod repo push GofSpecs GofKit.podspec --use-libraries --allow-warnings

pod lib lint --sources=[https://git.xxx.com/XesAppMediator...]

解說: 私有庫依賴需要添加specs源來驗證

引用目前私有庫的podFile中指定source為私有庫位址

source http://[privateLibName]/cocoaspecs.git'

source 'https://github.com/CocoaPods/Specs.git'

pod lib lint --help

解說:檢視所有可選參數,可選參數可以加多個

6.送出工程代碼

送出工程代碼到遠端代碼倉庫,可以利用git或者svn進行代碼版本管理,送出代碼到GitHub等, 初始化送出指令如下:

//初始化git版本管理倉庫,模闆代碼已經初始化過此步驟可以忽略(有.git檔案夾)

git init

//添加到暫存區

git add .

//送出到本地倉庫

git commit -a -m '送出資訊'

示例:git commit -a -m '添加pod元件庫'

iOS 建立自己的Cocoapods公共、私有庫

//打标簽,注意此标簽可能在podspec中用到,用于區分版本

git tag 1.0.0

//本地倉庫與遠端倉庫關聯(已關聯過的,可以忽略)

git remote add origin <url>

//拉取和合并本地與遠端倉庫

git pull origin master --allow-unrelated-histories

//本地倉庫代碼推送到遠端

git push --set-upstream origin master

此時如果你報錯,檢視報錯資訊中如果有:“pre-receive hook declined”

說明存在權限問題,沒有master分支的代碼送出權限。配置設定權限後,就可以push成功。

//推送标簽

git push --tags

7.送出podspec檔案

1. 開源庫送出

podspec檔案到Cocopods官方倉庫,首先在cocopods官方倉庫中新增賬號,指令如下:

pod trunk me

//(檢查是否注冊trunk)

pod trunk register 郵箱 注冊名字 --verbose

//(注冊指令)

注冊完成之後會給你的郵箱發個郵件,進入郵箱郵件裡面有個連結,需要點選确認一下.之後開始送出,切換到有.podspec檔案的元件工程根目錄執行指令

pod trunk push 元件庫名.podspec

pod trunk push 元件庫名.podspec --allow-warnings

2. 私有庫送出

私有倉庫需要先添加到本地倉庫,再push到遠端倉庫。

電腦檢視目錄:~/.cocoapods/repos/

  • 添加到本地倉庫, [email protected]/.git為遠端specs庫的位址,成功之後目錄(~/.cocoapods/repos)除了master之外,新增了一個檔案夾(元件庫名)
  • pod repo add specs倉庫名 specs遠端倉庫位址

    //示例:pod repo add XesAppMultimedia https://####.com/ /XesAppMultimedia_ spec.git

  • 檢視是否添加成功
  • pod repo list
  • push到遠端specs倉庫
  • pod repo push 本地spec庫名 本地.podsepc檔案

    //示例:pod repo push XesAppMultimedia XesAppMultimedia.podspec

  • 如果.podspec檔案存在警告時不能成功push。

解決:Pod repo push 本地spec庫名 本地.podsepc檔案 --allow-warnings

示例:pod repo push XesAppMultimedia XesAppMultimedia.podspec --allow-warnings

  • 如果已經添加過得,可以不用再添加。
  • 如果添加報錯:

删除檔案夾, 重新pod repo add, 重新pod repo push

pod repo add XesAppMultimedia https://####.com/ /XesAppMultimedia_ spec.git

pod repo push specs遠端倉庫位址 元件庫名.podspec

//示例:pod repo push https://##.com/#/XesAppMultimedia_ specs.git XesAppMultimedia.podspec

8、 檢查倉庫是否釋出成功

pod搜尋驗證:

pod search 元件庫名

如果報錯,搜尋不到,建議更新下pod:

pod update

之後仍然搜尋不到,那麼進入CocoaPods緩存目錄,删除緩存索引檔案search_index.json:

cd ~/Library/Caches/CocoaPods

ls

rm -f search_index.json

9、 pod庫檔案引入

如果是開源庫(公有的),修改podfile檔案:

如果是私有倉庫,建議在podfile檔案開頭添加source源:

最後執行指令進行安裝:

pod install

繼續閱讀