Github地址?zhangxiaomeng1 (ZXM) · GitHub
正文目錄
一. 創建公有Pod庫
1、注冊CocoaPods賬戶信息
2、創建共享庫文件并上傳到公有倉庫
3、編輯.podspec文件
4、打tag, 發布一個release版本
5、發布自己的庫描述文件podspec給cocoapods
6、關于查找和使用新創建的庫
7、更新維護podspec
二. 創建私有Pod庫,整體思路:
1.創建一個私有spec repo 管理所有私有spec文件;
2.創建Pod所需要的項目工程文件,并且有可訪問的項目版本控制地址;
3.創建Pod所對應的podspec文件;
4.驗證podspec文件是否可用;
5.向私有的spec repo里添加podspec文件;
6.新建個項目測試自己的私有庫;
7.更新podspec,建不同的版本;
一. 創建公有Pod庫
1. 創建一個工程 ,打開終端,切換到你要創建的位置的目錄,
cd /Users/zhangxiaomeng/Desktop/Repertory/OC/MyPods/XMLineChartView
pod lib create XMLineChartView
當被問及創建Swift還是OC項目,按自己要求回答,我選擇ObjC;
當被問及是否創建一個demo應用包含在工程里,根據需要,如果需要寫一個demo示例,就選擇Yes,否則選擇NO,我這里選擇Yes;
當被問及是否需要使用測試Framwork,選擇NO;
當被問及是否需要做接界面調試,我這里選擇NO;
還有一個就是工程文件的前綴,我這里是自己的名字的縮寫,這個隨意寫;
2.填寫podspec信息,這個文件主要是用來描述pod的版本號,首頁(homepage),作者信心等,具體的可以參看官方offical reference page
README如果你使用過GitHub,你肯定知道README文件的重要性,這個文件可以使用Markdown語法,主要展示在GitHub工程上的首頁。README文件對于使用這個pod庫的人來說,有和沒有這個文件,區別是很明顯的,此外這還有助于創建一個高質量的CocoaPods Quality Index;
LICENSE要想是Spec倉庫接收,就必須包含一個license。命令pod lib create自動創建使用的是MITlicense;
其實通過pod lib lint這個命令,Cocoapods已經幫我們創建了一個模板我們只需要在里面根據需要你進行配置即可.沒有用到的注釋(#開頭的)可以刪除掉,看起來舒服一些.
接下來,我們做一個遠程驗證
pod lib lint?XMLineChartView.podspec --allow-warnings
只要見到passed validation就是成功通過了驗證.
通過以上步驟,我們只是創建了一個合格的空的工程,并沒有實現任何功能,接下來我們就需要把自己要實現的功能代碼方進去.
找到工程中ReplaceMe文件,替換就可以.
如果你在創建工程時候創建了一個包含demo的工程,那么你可以先切換到工程的Example文件目錄下面使用命令:
pod install
成功以后你就可以在demo文件中使用你的功能文件了.如果不能導入,那么可以commond + B編譯一下再導入使用
3.我們還沒有在GitHub上面創建相關的倉庫,因此可以先進入GitHub賬戶創建倉庫
4. 提交自己的pod
Step 1: 接下來就需要把自己的工程推送到Github:
?git add .
?git commit -m “Initial Commit"
?git remote add origin https://github.com//YourPodName.git // replacewith your github.com username
? git push -u origin master
//添加版本號
$ git tag -m "first release" "0.1.0"
$ git push --tags
Step 2 :驗證
終端切換到LPodTest.podspec文件所在的目錄下面,運行命令
pod lib lint --allow-warnings
如果出錯:
[!] QXMFatherHomeTbaListMoreVC_Category did not pass validation, due to 2 errors.
You can use the `--no-clean` option to inspect any issue.
解決:
pod lib lint --allow-warnings --use-libraries
5. 提交pod 到Specs倉庫
在這里有個pod trunk工具需要實現(只需要配置一次即可)。trunk工具是為了認證用戶信息(包括設備)而存在的,只有注冊認證通過了,才能夠發布公開庫。
注冊trunk:
$ pod trunk register 郵箱?'名稱' --description='描述'
替換自己的郵箱名稱和描述
注冊成功后提示:
[!] Please verify the session by clicking the link in the verification email that has been sent to13162255392@163.com
需要我們接受認證郵件并點擊附帶鏈接確認。當我們完成注冊后,以后不需要此步驟。最后使用trunk工具,發布公開庫。
$ pod trunk push XMLineChartView.podspec --allow-warnings
Updating spec repo `master`
--------------------------------------------------------------------------------
???? Congrats
???? XMLineChartView (1.1.3) successfully published
???? March 25th, 18:55
???? https://cocoapods.org/pods/XMLineChartView
???? Tell your friends!
如果出錯:
[!] The spec did not pass validation, due to 2 errors.
解決
pod trunk push --allow-warnings --use-libraries
6. pod search 檢驗是否可用大多情況下會出現這個問題:
[!] Unable to find a podwithname, author, summary,ordescriptionmatching `LPodTest
這主要是因為在本地索引里面沒有, 解決辦法
pod setup (不行,實用方法二)
pod repo update(不行,試用方法三)
前往這個路徑下~/Library/Caches/CocoaPods刪除search_index.json文件 , 或者使用終端命令刪除:
rm ~/Library/Caches/CocoaPods/search_index.json
然后重新搜索.
打包類庫
需要使用一個cocoapods的插件cocoapods-packager來完成類庫的打包。當然也可以手動編譯打包,但是過程會相當繁瑣。
安裝打包插件
終端執行以下命令
sudo gem install cocoapods-packager
打包
命令很簡單,執行
pod package BZLib.podspec --library --force
其中--library指定打包成.a文件,如果不帶上將會打包成.framework文件。--force是指強制覆蓋。最終的目錄結構如下
修改spec文件
#s.source_files = 'ABTestFrameWork/Classes/**/*'
??s.vendored_frameworks ='ABTestFrameWork-1.0.5/ios/ABTestFrameWork.framework'
(.a是s.vendored_libraries,.framework是s.vendored_frameworks。)
最后執行?pod trunk push --allow-warnings --use-libraries
二.創建私有庫
1、如果想利用pod安裝私有庫,那么就得創建和cocoapods官方一樣的結構,我們想來看看cocoapods官方的結構,cocoapods所有公共庫文件都存放在CocoaPods spec遠端文件地址,如果在電腦上安裝了cocoapods它會從這個地址clone一份到本地,每次pod update 都會更新這個本地倉庫,首先先創建一個私有的庫 ,由于github的私有倉庫是收費的,這里用coding碼市創建私有倉庫,如果和其他人協同開發,只要把該倉庫的權限添加給他就行。
在coding碼市在創建2個倉庫,一個倉庫存放spec文件, 一個存源代碼,
創建完遠端的spec XMSpec,在終端執行
pod repo add XMSpec https://git.coding.net/n34/XMSpec.gi
然后執行
open ~/.cocoapods/repos?
會開看到在repos中創建了一個私有的倉庫,master是cocoapods官方的
2.創建工程和編輯spec文件
cd /Users/zhangxiaomeng/Desktop/Repertory/OC/MyPods/XSPrivate/XSCategorys
pod lib create XSCategorys
3、上傳到coding和打tag
4、驗證.podspec文件
pod lib lint XSCategorys.podspec --allow-warnings
報錯有可能?
5、向私有的庫里添加podspec文件
pod repo push XMSpec?XSCategorys.podspec
6.驗證一下結果;
pod search XSCategory
[!] Unable to find a pod with name, author, summary, or description matching `XSManager`
解決辦法:
rm ~/Library/Caches/CocoaPods/search_index.json
7、新建一個項目進行驗證
xcode新建項目 在podfile中添加
pod 'XSCategorys', '~> 0.0.2'
如果提示'unable to find a specification for'
需要在podfile文件中添加源地址
source 'https://github.com/CocoaPods/Specs.git'
source 'https://git.coding.net/n34/XMSpec.git'