Github地址?zhangxiaomeng1 (ZXM) · GitHub
正文目錄
一. 創(chuàng)建公有Pod庫(kù)
1、注冊(cè)CocoaPods賬戶信息
2、創(chuàng)建共享庫(kù)文件并上傳到公有倉(cāng)庫(kù)
3、編輯.podspec文件
4、打tag, 發(fā)布一個(gè)release版本
5、發(fā)布自己的庫(kù)描述文件podspec給cocoapods
6、關(guān)于查找和使用新創(chuàng)建的庫(kù)
7、更新維護(hù)podspec
二. 創(chuàng)建私有Pod庫(kù),整體思路:
1.創(chuàng)建一個(gè)私有spec repo 管理所有私有spec文件;
2.創(chuàng)建Pod所需要的項(xiàng)目工程文件,并且有可訪問(wèn)的項(xiàng)目版本控制地址;
3.創(chuàng)建Pod所對(duì)應(yīng)的podspec文件;
4.驗(yàn)證podspec文件是否可用;
5.向私有的spec repo里添加podspec文件;
6.新建個(gè)項(xiàng)目測(cè)試自己的私有庫(kù);
7.更新podspec,建不同的版本;
一. 創(chuàng)建公有Pod庫(kù)
1. 創(chuàng)建一個(gè)工程 ,打開(kāi)終端,切換到你要?jiǎng)?chuàng)建的位置的目錄,
cd /Users/zhangxiaomeng/Desktop/Repertory/OC/MyPods/XMLineChartView
pod lib create XMLineChartView
當(dāng)被問(wèn)及創(chuàng)建Swift還是OC項(xiàng)目,按自己要求回答,我選擇ObjC;
當(dāng)被問(wèn)及是否創(chuàng)建一個(gè)demo應(yīng)用包含在工程里,根據(jù)需要,如果需要寫一個(gè)demo示例,就選擇Yes,否則選擇NO,我這里選擇Yes;
當(dāng)被問(wèn)及是否需要使用測(cè)試Framwork,選擇NO;
當(dāng)被問(wèn)及是否需要做接界面調(diào)試,我這里選擇NO;
還有一個(gè)就是工程文件的前綴,我這里是自己的名字的縮寫,這個(gè)隨意寫;
2.填寫podspec信息,這個(gè)文件主要是用來(lái)描述pod的版本號(hào),首頁(yè)(homepage),作者信心等,具體的可以參看官方offical reference page
README如果你使用過(guò)GitHub,你肯定知道README文件的重要性,這個(gè)文件可以使用Markdown語(yǔ)法,主要展示在GitHub工程上的首頁(yè)。README文件對(duì)于使用這個(gè)pod庫(kù)的人來(lái)說(shuō),有和沒(méi)有這個(gè)文件,區(qū)別是很明顯的,此外這還有助于創(chuàng)建一個(gè)高質(zhì)量的CocoaPods Quality Index;
LICENSE要想是Spec倉(cāng)庫(kù)接收,就必須包含一個(gè)license。命令pod lib create自動(dòng)創(chuàng)建使用的是MITlicense;
其實(shí)通過(guò)pod lib lint這個(gè)命令,Cocoapods已經(jīng)幫我們創(chuàng)建了一個(gè)模板我們只需要在里面根據(jù)需要你進(jìn)行配置即可.沒(méi)有用到的注釋(#開(kāi)頭的)可以刪除掉,看起來(lái)舒服一些.

接下來(lái),我們做一個(gè)遠(yuǎn)程驗(yàn)證
pod lib lint?XMLineChartView.podspec --allow-warnings
只要見(jiàn)到passed validation就是成功通過(guò)了驗(yàn)證.
通過(guò)以上步驟,我們只是創(chuàng)建了一個(gè)合格的空的工程,并沒(méi)有實(shí)現(xiàn)任何功能,接下來(lái)我們就需要把自己要實(shí)現(xiàn)的功能代碼方進(jìn)去.

找到工程中ReplaceMe文件,替換就可以.
如果你在創(chuàng)建工程時(shí)候創(chuàng)建了一個(gè)包含demo的工程,那么你可以先切換到工程的Example文件目錄下面使用命令:
pod install
成功以后你就可以在demo文件中使用你的功能文件了.如果不能導(dǎo)入,那么可以commond + B編譯一下再導(dǎo)入使用
3.我們還沒(méi)有在GitHub上面創(chuàng)建相關(guān)的倉(cāng)庫(kù),因此可以先進(jìn)入GitHub賬戶創(chuàng)建倉(cāng)庫(kù)

4. 提交自己的pod
Step 1: 接下來(lái)就需要把自己的工程推送到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
//添加版本號(hào)
$ git tag -m "first release" "0.1.0"
$ git push --tags
Step 2 :驗(yàn)證
終端切換到LPodTest.podspec文件所在的目錄下面,運(yùn)行命令
pod lib lint --allow-warnings
如果出錯(cuò):
[!] 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倉(cāng)庫(kù)
在這里有個(gè)pod trunk工具需要實(shí)現(xiàn)(只需要配置一次即可)。trunk工具是為了認(rèn)證用戶信息(包括設(shè)備)而存在的,只有注冊(cè)認(rèn)證通過(guò)了,才能夠發(fā)布公開(kāi)庫(kù)。
注冊(cè)trunk:
$ pod trunk register 郵箱?'名稱' --description='描述'
替換自己的郵箱名稱和描述
注冊(cè)成功后提示:
[!] Please verify the session by clicking the link in the verification email that has been sent to13162255392@163.com
需要我們接受認(rèn)證郵件并點(diǎn)擊附帶鏈接確認(rèn)。當(dāng)我們完成注冊(cè)后,以后不需要此步驟。最后使用trunk工具,發(fā)布公開(kāi)庫(kù)。
$ 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!
如果出錯(cuò):
[!] The spec did not pass validation, due to 2 errors.
解決
pod trunk push --allow-warnings --use-libraries
6. pod search 檢驗(yàn)是否可用大多情況下會(huì)出現(xiàn)這個(gè)問(wèn)題:
[!] Unable to find a podwithname, author, summary,ordescriptionmatching `LPodTest
這主要是因?yàn)樵诒镜厮饕锩鏇](méi)有, 解決辦法
pod setup (不行,實(shí)用方法二)
pod repo update(不行,試用方法三)
前往這個(gè)路徑下~/Library/Caches/CocoaPods刪除search_index.json文件 , 或者使用終端命令刪除:
rm ~/Library/Caches/CocoaPods/search_index.json
然后重新搜索.

打包類庫(kù)
需要使用一個(gè)cocoapods的插件cocoapods-packager來(lái)完成類庫(kù)的打包。當(dāng)然也可以手動(dòng)編譯打包,但是過(guò)程會(huì)相當(dāng)繁瑣。
安裝打包插件
終端執(zhí)行以下命令
sudo gem install cocoapods-packager
打包
命令很簡(jiǎn)單,執(zhí)行
pod package BZLib.podspec --library --force
其中--library指定打包成.a文件,如果不帶上將會(huì)打包成.framework文件。--force是指強(qiáng)制覆蓋。最終的目錄結(jié)構(gòu)如下
修改spec文件
#s.source_files = 'ABTestFrameWork/Classes/**/*'
??s.vendored_frameworks ='ABTestFrameWork-1.0.5/ios/ABTestFrameWork.framework'
(.a是s.vendored_libraries,.framework是s.vendored_frameworks。)

最后執(zhí)行?pod trunk push --allow-warnings --use-libraries
二.創(chuàng)建私有庫(kù)
1、如果想利用pod安裝私有庫(kù),那么就得創(chuàng)建和cocoapods官方一樣的結(jié)構(gòu),我們想來(lái)看看cocoapods官方的結(jié)構(gòu),cocoapods所有公共庫(kù)文件都存放在CocoaPods spec遠(yuǎn)端文件地址,如果在電腦上安裝了cocoapods它會(huì)從這個(gè)地址clone一份到本地,每次pod update 都會(huì)更新這個(gè)本地倉(cāng)庫(kù),首先先創(chuàng)建一個(gè)私有的庫(kù) ,由于github的私有倉(cāng)庫(kù)是收費(fèi)的,這里用coding碼市創(chuàng)建私有倉(cāng)庫(kù),如果和其他人協(xié)同開(kāi)發(fā),只要把該倉(cāng)庫(kù)的權(quán)限添加給他就行。
在coding碼市在創(chuàng)建2個(gè)倉(cāng)庫(kù),一個(gè)倉(cāng)庫(kù)存放spec文件, 一個(gè)存源代碼,

創(chuàng)建完遠(yuǎn)端的spec XMSpec,在終端執(zhí)行
pod repo add XMSpec https://git.coding.net/n34/XMSpec.gi
然后執(zhí)行
open ~/.cocoapods/repos?
會(huì)開(kāi)看到在repos中創(chuàng)建了一個(gè)私有的倉(cāng)庫(kù),master是cocoapods官方的

2.創(chuàng)建工程和編輯spec文件
cd /Users/zhangxiaomeng/Desktop/Repertory/OC/MyPods/XSPrivate/XSCategorys
pod lib create XSCategorys
3、上傳到coding和打tag

4、驗(yàn)證.podspec文件
pod lib lint XSCategorys.podspec --allow-warnings

報(bào)錯(cuò)有可能?

5、向私有的庫(kù)里添加podspec文件
pod repo push XMSpec?XSCategorys.podspec

6.驗(yàn)證一下結(jié)果;
pod search XSCategory

[!] Unable to find a pod with name, author, summary, or description matching `XSManager`
解決辦法:
rm ~/Library/Caches/CocoaPods/search_index.json
7、新建一個(gè)項(xiàng)目進(jìn)行驗(yàn)證
xcode新建項(xiàng)目 在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'
