cocoapods創(chuàng)建遠(yuǎn)程私有庫(kù)及相關(guān)踩坑

??最近因?yàn)轫?xiàng)目需求變多且很多工具會(huì)在不同的項(xiàng)目中重復(fù)使用,因此需要把常用的工具或者封裝的庫(kù)進(jìn)行剝離;于是就想要像其他的三方庫(kù)一樣使用cocoapods的方式進(jìn)行管理。接下來(lái)就讓我們一步步來(lái)實(shí)現(xiàn)它吧!
??以下的 Repository 為項(xiàng)目庫(kù)的待位名稱,操作的時(shí)候更換成自己的庫(kù)名即可。

一.在GitHub上創(chuàng)建\color{red}{項(xiàng)目索引私有庫(kù)}

新建庫(kù)

填寫庫(kù)信息

二.創(chuàng)建本地私有庫(kù)索引文件,并與遠(yuǎn)程私有索引庫(kù)進(jìn)行關(guān)聯(lián)

?1.如何查看本地索引庫(kù):
??使用如下命令查看本地已經(jīng)存在的索引:

pod repo  

查看索引

??正常情況下只會(huì)有一個(gè) master 我涂鴉掉的就是自己添加的本地索引庫(kù)。
?2.添加一個(gè)自己的索引并與遠(yuǎn)程庫(kù)進(jìn)行關(guān)聯(lián)
??執(zhí)行如下命令行為自己增加一個(gè)本地索引并關(guān)聯(lián)到遠(yuǎn)程庫(kù)

pod repo add RepositorySpec [GitHub上創(chuàng)建的索引庫(kù)地址](https://xxx.git/)

??這一步完成后再使用 pod repo 命令即可看到自己創(chuàng)建的本地索引了。

三.創(chuàng)建\color{red}{項(xiàng)目私有庫(kù)}

?在GitHub上創(chuàng)建一個(gè)項(xiàng)目私有庫(kù),運(yùn)來(lái)存放真正需要pod安裝的代碼;創(chuàng)建步驟同第一步(命名去掉Spec即可)。
注意:\color{red}{這個(gè)庫(kù)是真正的代碼庫(kù),第一步創(chuàng)建的是索引庫(kù),是為項(xiàng)目庫(kù)做索引的}

四.創(chuàng)建模板工程,并推送到遠(yuǎn)程代碼庫(kù)

?1.創(chuàng)建模板工程:
??新建一個(gè)項(xiàng)目存放文件夾并在終端cd到文件夾目錄下:
??使用如下命令創(chuàng)建新的模板工程:

pod lib create Repository(庫(kù)名)

??執(zhí)行命令后會(huì)出現(xiàn)以下界面,如下圖:


新建工程模板

?2.替換代碼文件
??生成工程后Xcode 會(huì)自動(dòng)將其打開,然后我們需要找到 ReplaceMe.m 文件,并將其在Finder中打開,然后將自己的代碼放到這個(gè)位置,刪除 ReplaceMe.m 文件,完成代碼的替換。

更換自己的庫(kù)代碼

文件替換

?3.安裝替換的代碼文件
??在終端cd到項(xiàng)目的Example目錄下,執(zhí)行 pod install 工程會(huì)自動(dòng)將你剛才替換的文件代碼更新到pod文件夾相應(yīng)的位置下,如下圖:
更新pod代碼

pod執(zhí)行后的效果

?4.修改podspec文件配置
??打開工程中的Repository.podspec文件,對(duì)其中的內(nèi)容進(jìn)行修改;
?5.驗(yàn)證倉(cāng)庫(kù)并推送模板工程到遠(yuǎn)程倉(cāng)庫(kù)
??使用終端cd 到項(xiàng)目的根目錄,執(zhí)行如下命令驗(yàn)證:

pod lib lint
pod lib lint --allow-warnings (warning 驗(yàn)證不通過(guò)時(shí)使用此命令)
驗(yàn)證podspec

??使用git命令提交到遠(yuǎn)程倉(cāng)庫(kù);(用SourceTree管理的直接使用SourceTree進(jìn)行操作,主要目的是把項(xiàng)目推送到遠(yuǎn)端倉(cāng)庫(kù),采用什么方式都可)

git status 
git add .
git commit -m'注釋'
git remote add origin https://xxx/Repository.git 
(將本地庫(kù)與遠(yuǎn)程代碼倉(cāng)庫(kù)進(jìn)行關(guān)聯(lián))
git push origin master  (提交到遠(yuǎn)程倉(cāng)庫(kù))

五.設(shè)置Tag并推送到遠(yuǎn)程管理庫(kù)

?1.使用如下命令打tag并推送:

git tag '0.1.0'
git push --tags
推送tag

?2.使用如下命令進(jìn)行驗(yàn)證:(這一步不做的話在push的時(shí)候也會(huì)進(jìn)行驗(yàn)證)

pod spec lint --allow-warnings (驗(yàn)證遠(yuǎn)程)

?3.將本地的私有索引庫(kù)推送到遠(yuǎn)端庫(kù)

pod repo push RepositorySpec Repository.podspec --allow-warnings

??成功后就可以在你GitHub的Tags中找到發(fā)布的版,如圖:


成功推送的私有庫(kù)版本tag

六.私有庫(kù)的使用

劃重點(diǎn):打開podfile文件,在頂部source 添加一個(gè)索引\color{red}{GitHub上的私有索引庫(kù)地址} 注意是\color{red}{索引庫(kù)地址}不是庫(kù)的地址,如圖:

podfile添加索引庫(kù)源地址

??添加完索引源地址之后再加上pod命令:

pod 'Repository'

??至此終端執(zhí)行pod install即可安裝使用。完美!

幾個(gè)注意點(diǎn)及問(wèn)題:

  • 創(chuàng)建私有庫(kù)的時(shí)候,建議不要選擇使用 README 創(chuàng)建,因?yàn)閯?chuàng)建模板項(xiàng)目的時(shí)候會(huì)自動(dòng)創(chuàng)建一個(gè) README 文件,在提交的時(shí)候會(huì)產(chǎn)生沖突,一般會(huì)使用模板里的。
  • 當(dāng)遇到如下錯(cuò)誤時(shí),一般是你的文件路徑不對(duì),驗(yàn)證會(huì)不通過(guò);這里是路徑是和Repository.podspec文件同級(jí)去取的。
 [iOS] file patterns: The `source_files` pattern did not match any file.
  • 驗(yàn)證時(shí)可能會(huì)遇到各種問(wèn)題通過(guò)不了,我也是走過(guò)了不少坑,如果有遇到問(wèn)題的可以給我留言,助你渡劫。

  • 使用碼云創(chuàng)建私有庫(kù)的需要把podspec文件中的源地址更換一下,如下圖:


    更換源地址
  • 當(dāng)你的私有庫(kù)需要依賴于另一個(gè)私有庫(kù)的時(shí)候驗(yàn)證會(huì)報(bào)錯(cuò),需要在驗(yàn)證的時(shí)候指定所有的索引源地址,比如我項(xiàng)目中當(dāng)前引用了GitHub中的AFN以及自己的私有庫(kù),就需要在source中指定索引庫(kù)來(lái)源,如下(多個(gè)索引庫(kù)來(lái)源采取 “,”來(lái)分隔開):

pod lib lint --sources= [cocoapods地址](https://github.com/CocoaPods/Specs.git),[自己的私有庫(kù)索引地址](https://xxxSpec.git) --allow-warnings
  • 當(dāng)你的私有庫(kù)中包含靜態(tài)庫(kù)時(shí),需要采用如下命令(當(dāng)然這些,命令是可以組合使用的):
 pod lib lint --use-libraries
  • 引入的三方庫(kù)里面含有framework的時(shí)候 pod install 會(huì)報(bào)錯(cuò),如下圖:
framework問(wèn)題

此時(shí)可以在podfile中加入如下代碼解決(此問(wèn)題也可采取將 use_frameworks!注釋掉解決,前提是不需要 use_frameworks!):

pre_install do |installer| Pod::Installer::Xcode::TargetValidator.send(:define_method, :verify_no_static_framework_transitive_dependencies) {}
  • 在私有庫(kù)中使用到其他三方庫(kù)的時(shí)候?qū)氲念^文件在.h中會(huì)報(bào)錯(cuò)找不到,需要放到.m文件中才行;

  • 使用pod repo push 將 .podsepc 文件推送到索引庫(kù)時(shí)報(bào)錯(cuò):
    [!] /usr/bin/git -C /Users/sunjuncheng/.cocoapods/repos/xxxSpec pull Your configuration specifies to merge with the ref 'refs/heads/master' from the remote, but no such ref was fetched.
    大概率是你的索引庫(kù)中沒有任何文件,在索引庫(kù)中隨便放一個(gè)文件即可(一般會(huì)選擇初始化一個(gè) README.md)。

  • 如果是Swift庫(kù)需要指定Swift版本:

s.swift_versions = '5'

暫且更新至此,后續(xù)有新的內(nèi)容會(huì)繼續(xù)補(bǔ)充。

參考內(nèi)容:

最后編輯于
?著作權(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)容