CocoaPods創(chuàng)建公有和私有Pod庫(kù)方法總結(jié)

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'

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

相關(guān)閱讀更多精彩內(nèi)容

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