CocoaPods 創(chuàng)建私有 podspec

Cocoapods是非常好用的一個iOS
依賴管理工具钟沛,使用它可以方便的管理和更新項目中所使用到的第三方庫闷叉,以及將自己的項目中的公共組件交由它去管理。

前言

創(chuàng)建一個開源pod庫医增,需要注冊CocoaPods奕纫,終端執(zhí)行:

pod trunk register 郵箱地址 '用戶名' --verbose

這里我們一般使用github郵箱和用戶名, 然后在你的郵箱中會收到確認郵件, 在瀏覽器中點擊鏈接確認即注冊成功署惯;

注冊成功

查看自己的注冊信息又官,以后當你有了自己的開源Pod庫延刘,也可以用此方式隨時查看自己發(fā)布過的Pods;終端執(zhí)行:

pod trunk me
注冊信息

使用Cocoapods創(chuàng)建私有的podspec庫包含以下幾個步驟:

  • 創(chuàng)建并設置一個私有的 Spec Repo
  • 創(chuàng)建 Pod 的所需要的項目工程文件六敬,并且有可訪問的項目版本控制地址碘赖。
  • 創(chuàng)建 pod 所對應的 podspec 文件
  • 本地測試配置好的 podspec 文件是否可用
  • 向私有的 Spec Repo 中提交 podspec
  • 在個人項目中的 Podfile 中增加剛剛制作好的 pod 并使用
  • 更新維護 podspec
1. 創(chuàng)建私有 Spec Repo

Spec Repo 是所有的 Pods 的一個索引,就是一個容器,所有公開的 Pods 都在這個里面普泡,他實際是一個 Git 倉庫 remote端GitHub上播掷,但是當你使用了 Cocoapods 后他會被 clone 到本地的 ~/.cocoapods/repos 目錄下,可以進入到這個目錄看到 master
文件夾就是這個官方的 Spec Repo 了.

創(chuàng)建一個類似于 master 的私有 Spec Repo

  • git 上創(chuàng)建私有庫索引庫撼班,得到地址如下:
git@gitlab.**.com:**/**/specs.git
  • 在本地添加一個自己的遠程索引庫歧匈,地址為上面創(chuàng)建的私有庫索引庫地址
pod repo add **-specs https://**.com:**/**/specs.git

執(zhí)行成功后在 ~/.cocoapods/repos 目錄下可以看到 **-specs 這個目錄.

2. 創(chuàng)建Pod項目工程文件

如果是有現(xiàn)有的組件項目,并且在 Git 的版本管理下砰嘁,那么這一步就算完成了件炉,可以直接進行下一步了.
使用 pod 創(chuàng)建 Pod 項目, 相關的文檔介紹是Using Pod Lib Create

  • cd 到要創(chuàng)建項目的目錄,然后 Terminal 執(zhí)行:

    pod lib create 項目名稱
    

之后他會問你幾個問題:

1.你想使用哪種語言
2.是否需要一個例子工程般码;
3.選擇一個測試框架妻率;
4.是否基于View測試乱顾;
5.類的前綴板祝;
這幾個問題的具體介紹可以去看官方文檔.
問完這幾個問題他會自動執(zhí)行 pod install 命令創(chuàng)建項目并生成依賴。

接下來就是向 Pod 文件夾中添加庫文件和資源走净,并配置 podspec 文件券时,我把共有組件放入 Pod/Classes 中,然后進入Example 文件夾執(zhí)行 pod update 命令伏伯,再打開項目工程可以看到剛剛添加的組件已經(jīng)在 Pods 子工程下 Development Pods/BitautoTool 下了.

PS:這里需要注意的是每當你向 Pod 中添加了新的文件或者以后更新了 podspec 的版本都需要重新執(zhí)行一遍 pod update 命令

測試無誤后需要將該項目添加并推送到遠端倉庫.
因為 podspec 文件中獲取 Git 版本控制的項目需要 tag 號橘洞,所以我們需要打上一個 tag.

然后開始編輯 podspec 文件,沒有涉及到的字段可以去官方文檔查閱.

編輯完 podspec 文件后驗證這個文件是否可用说搅,詳情見 CocoaPods創(chuàng)建公有pod庫

3. 創(chuàng)建podspec文件

如果從 第2步跳過來 的(否則跳過此步)炸枣,已經(jīng)有了現(xiàn)成的項目,那么就需要給這個項目創(chuàng)建一個 podspec 文件弄唧,創(chuàng)建它需要執(zhí)行 Cocoapods
的另外一個命令适肠,官方文檔,Terminal 執(zhí)行:

pod spec create podspec名稱 git@**.com:WP/APP/**.git

執(zhí)行完之后候引,就創(chuàng)建了一個 podspec 文件侯养,他其中會包含很多內(nèi)容,可以按照我之前介紹的進行編輯澄干,沒用的刪掉逛揩。編輯完成之后使用驗證命令驗證一下,詳情見 CocoaPods創(chuàng)建公有pod庫
驗證無誤就可以進入下一步了.

4. 本地測試podspec文件

我們可以創(chuàng)建一個新的項目麸俘,在這個項目的 Podfile 文件中直接指定剛才創(chuàng)建編輯好的 podspec 文件辩稽,看是否可用。 在 Podfile 中我們可以這樣編輯从媚,有兩種方式:

platform :ios, '8.0'

pod 'BitautoTool', :path => '/Users/**/Documents/BitautoTool'      # 指定路徑
pod 'BitautoTool', :podspec => '/Users/**/Documents/BitautoTool/BitautoTool.podspec'  # 指定podspec文件

然后執(zhí)行 pod install 命令安裝依賴逞泄,打開項目工程,可以看到庫文件都被加載到 Pods 子項目中了,不過它們并沒有在Pods目錄下炭懊,而是跟測試項目一樣存在于 Development Pods/BitautoTool 中并级,這是因為我們是在本地測試,而沒有把 podspec 文件添加到Spec Repo 中的緣故.

5. 向Spec Repo提交podspec

向私有 Spec Repo 提交 podspec 只需要一個命令

pod repo push bitauto-specs BitautoTool.podspec --allow-warnings --use-libraries --verbose --no-clean --skip-import-validation

前面是本地 Repo 名字侮腹,后面是 podspec 名字
--use-libraries:使用libraries和frameworks
--allow-warnings:忽略警告
--verbose:詳細輸出
--skip-import-validation:lint 將跳過驗證 pod 是否可以導入

完成之后這個組件庫就添加到我們的私有 Spec Repo 中了嘲碧,可以進入到 ~/.cocoapods/repos/bitauto-specs 目錄下查看。

再去看我們的 Spec Repo 遠端倉庫父阻,也有了一次提交愈涩,這個podspec也已經(jīng)被 Push 上去了。

至此加矛,我們的這個組件庫就已經(jīng)制作添加完成了履婉,使用 pod search 命令就可以查到我們自己的庫了。

更新庫的時候如果提示找不到本地庫斟览,終端執(zhí)行以下命令:

git reset --hard

然后再執(zhí)行

pod repo push 本地倉庫名 **.podspec

刪除一個私有 Spec Repo毁腿,

pod repo remove bitauto-specs

這樣這個 Spec Repo 就在本地刪除了袭灯,我們還可以通過以下命令加回來

pod repo add bitauto-specs git@**.com:WP/APP/**.git

如果我們要刪除私有 Spec Repo 下的某一個 podspec 怎么操作呢掩幢,此時無需借助 Cocoapods,只需要 cd~/.cocoapods/repos/bitauto-specs 目錄下苛坚,刪掉庫目錄

rm -Rf BitautoTool

然后在將 Git 的變動 push 到遠端倉庫即可

git add --all .
git ci -m "remove unuseful pods"
git push origin master

升級 Xcode14+ 后執(zhí)行 pod lib lint 報錯

    1. 修改 podspec:
s.pod_target_xcconfig = { 'EXCLUDED_ARCHS[sdk=iphonesimulator*]' => 'arm64' }
s.user_target_xcconfig = { 'EXCLUDED_ARCHS[sdk=iphonesimulator*]' => 'arm64' }
    1. pod lib lint 添加
--skip-import-validation
  • m1
sudo arch -arm64 gem install ffi

參考資料

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末妓羊,一起剝皮案震驚了整個濱河市胯究,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌躁绸,老刑警劉巖裕循,帶你破解...
    沈念sama閱讀 216,470評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異净刮,居然都是意外死亡剥哑,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,393評論 3 392
  • 文/潘曉璐 我一進店門庭瑰,熙熙樓的掌柜王于貴愁眉苦臉地迎上來星持,“玉大人,你說我怎么就攤上這事弹灭《皆荩” “怎么了?”我有些...
    開封第一講書人閱讀 162,577評論 0 353
  • 文/不壞的土叔 我叫張陵穷吮,是天一觀的道長逻翁。 經(jīng)常有香客問我,道長捡鱼,這世上最難降的妖魔是什么八回? 我笑而不...
    開封第一講書人閱讀 58,176評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上缠诅,老公的妹妹穿的比我還像新娘溶浴。我一直安慰自己,他們只是感情好管引,可當我...
    茶點故事閱讀 67,189評論 6 388
  • 文/花漫 我一把揭開白布士败。 她就那樣靜靜地躺著,像睡著了一般褥伴。 火紅的嫁衣襯著肌膚如雪谅将。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,155評論 1 299
  • 那天重慢,我揣著相機與錄音饥臂,去河邊找鬼。 笑死似踱,一個胖子當著我的面吹牛隅熙,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播屯援,決...
    沈念sama閱讀 40,041評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼猛们,長吁一口氣:“原來是場噩夢啊……” “哼念脯!你這毒婦竟也來了狞洋?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,903評論 0 274
  • 序言:老撾萬榮一對情侶失蹤绿店,失蹤者是張志新(化名)和其女友劉穎吉懊,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體假勿,經(jīng)...
    沈念sama閱讀 45,319評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡借嗽,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,539評論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了转培。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片恶导。...
    茶點故事閱讀 39,703評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖浸须,靈堂內(nèi)的尸體忽然破棺而出惨寿,到底是詐尸還是另有隱情,我是刑警寧澤删窒,帶...
    沈念sama閱讀 35,417評論 5 343
  • 正文 年R本政府宣布裂垦,位于F島的核電站,受9級特大地震影響肌索,放射性物質(zhì)發(fā)生泄漏蕉拢。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,013評論 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望晕换。 院中可真熱鬧午乓,春花似錦、人聲如沸闸准。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,664評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽恕汇。三九已至腕唧,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間瘾英,已是汗流浹背枣接。 一陣腳步聲響...
    開封第一講書人閱讀 32,818評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留缺谴,地道東北人但惶。 一個月前我還...
    沈念sama閱讀 47,711評論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像湿蛔,于是被迫代替她去往敵國和親膀曾。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,601評論 2 353

推薦閱讀更多精彩內(nèi)容