1. 程式人生 > >CocoaPods 【如何將自己寫的庫新增 CocoaPods 支援】

CocoaPods 【如何將自己寫的庫新增 CocoaPods 支援】

2015 年之前將自己的庫新增 CocoaPods 支援的過程十分複雜,而現在方便了許多。以下列出將自己的類庫新增 CocoaPods 支援的具體步驟和在此過程中遇到的一些坑。

一、首先你得有自己感覺寫的還不錯的一個類庫。

造車先得有輪子,說的就是這個道理。

你需要將你的類庫上傳到 GitHub,這個過程不再贅述。

二、註冊 trunk。

什麼是 trunk?

trunk 可以這樣來理解,它是一個允許與 CocoaPods 倉庫對接的一個埠,註冊成功後就可以向 CocoaPods 進行程式碼的提交。trunk 的註冊資訊包括你的 GitHub 使用者名稱、GitHub 賬號、你用來提交程式碼的電腦 IP 地址以及你的所有類庫展示。所以說你換了電腦之後就得重新用你的 GitHub 賬號註冊一次 trunk,這樣才允許你的當前電腦去提交類庫或者是更新你之前的提交過的類庫。

註冊 trunk 前一定要檢查自己的 CocoaPods 版本,一般是要升級到最新的 CocoaPods 版本:(下面的程式碼既可以用來安裝 CocoaPods 也可以用來升級 CocoaPods)

$ sudo gem install cocoapods

註冊 trunk:(複製下面的命令列,替換掉兩處地方,前面替換成你 GitHub 的註冊郵箱,另外一個替換成你 GitHub 的使用者名稱。而 --verbose 引數是為了便於輸出註冊過程中的除錯資訊。)

$ pod trunk register [email protected] 'CoderZYWang' --verbose

完成上面的命令列之後,你的郵箱會收到一封帶有驗證連結的郵件,全英文。沒有的話就去垃圾箱找找,可能被你遮蔽掉了。然後放心的點選連結完成 trunk 的註冊流程。


驗證註冊 trunk 是否成功:

$ pod trunk me

如果成功註冊,你將看到如下列印:

你用過幾臺 Mac 進行版本的提交,那麼下面就會顯示多少 Mac 的 IP 地址。

三、配置 .podspec 描述檔案

什麼是podspec描述檔案呢?

簡單地講就是讓 CocoaPods 搜尋引擎知道你的程式碼的作者、版本號、原始碼地址、依賴庫等資訊的檔案。任何支援 CocoaPods 的開原始碼都必須有 .podspec 檔案。CocoaPods 在 GitHub 中用一個 repo 來管理所有支援 CocoaPods 的開原始碼:

CocoaPods/Specs

配置第一步,首先 cd 到你 clone 的本地倉庫根目錄下。

建立 .podspec 描述檔案:

建立方式有兩種,第一種複製別人現成的,然後修改一些相關引數。第二種就是自己建立自己寫。(自己寫費老鼻子勁了,估計看到我這篇文章的讀者也不會寫,所以我建議大家還是找一份寫好的然後修改修改。我把我的 .podspec 檔案貼出來供大家參考)

Pod::Spec.new do |s|

  s.name         = "WZYCalendar"
  s.version      = "1.0.4"
  s.summary      = "WZYCalendar is a lightweight calendar controls for iOS."
  s.description  = <<-DESC
WZYCalendar is a lightweight calendar control that can be quickly integrated into the project for use. Less memory consumption, strong customization.
                   DESC
  s.homepage     = "https://github.com/CoderZYWang/WZYCalendar"
  s.license      = "MIT"
  s.author             = { "CoderZYWang" => "[email protected]" }
  s.social_media_url   = "http://blog.csdn.net/felicity294250051"
  s.platform     = :ios
  s.source       = { :git => "https://github.com/CoderZYWang/WZYCalendar.git", :tag => "1.0.4" }
  s.source_files  = "WZYCalendar/*.{h,m}"
  s.frameworks = 'UIKit', 'Foundation'
  s.requires_arc = true

end

再提交一份註釋供大家參考:

name: 匯入 pod 後的目錄名
version: 當前版本號
summary: 簡單描述
description: 詳細描述
homepage: 你的專案連結地址
author: 作者 GitHub 使用者名稱 ==> GitHub 郵箱
deployment_target: 配置的 target
social_media_url: 個人社交網站
prefix_header_file: 預編譯標頭檔案路徑,將該檔案的內容插入到 Pod 的 pch 檔案內
source: 來源的具體路徑,是 http 連結還是本地路徑
requires_arc: 是否需要 arc
source_files: 指定該目錄下包含哪些檔案
dependency: 指定依賴,如果依賴的庫不存在或者依賴庫的版本不符合要求將會報錯
platform: 執行平臺
libraries: 指定匯入的庫,比如 sqlite3
frameworks: 指定匯入的 framework
weak_frameworks: 弱連結,比如說一個專案同時相容iOS6和iOS7,但某一個 framework 只在 iOS7 上有,這時候如果用強連結,那麼在 iOS7 上執行就會 crash,使用 weak_frameworks 可以避免這種情況。

原版的 .podspec 檔案中有非常多的選項進行填寫,但是我們並不是每一處都要新增,如果想了解原版,可以通過下面這種形式進行建立:

$ pod spec create WZYCalendar

當然你可以先用上面的命令列進行建立,然後再將我提供的格式全選貼上過去再修改。

配置第二步,驗證 .podspec 檔案:

$ pod lib lint

這一步驟可能會出現錯誤或者是警告,認真排查錯誤,一般來說都是由於不正確的編譯生成中文標點引起的。大家可以去下載 Sublime Text 進行編寫,當然用 Xcode 開啟也是可以的。如果說錯誤資訊提示不足,可以新增 --verbose 以獲取更多資訊。如下:

$ pod lib lint --verbose

如果是出現的是警告,可以新增 --allow-warnings 進行遮蔽。如下:(Xcode 是允許警告存在的)

$ pod lib lint --allow-warnings

驗證通過後,螢幕上會顯示:

-> WZYCalendar (1.0.0)

WZYCalendar passed validation.

表示驗證通過。不通過就繼續修改。

配置第三步,打 tag 上傳到 podspec

.podspec 檔案需要指定 tag:

$ git tag '1.0.0'
$ git push --tags

提交自己的 .podspec 檔案:

$ pod trunk push WZYCalendar.podspec

這個過程是比較耗時的。成功之後就可以看到非常友好的提示:


四、檢視自己的類庫

可以使用 pod search 去檢視自己的類庫。


五、如何更新提交自己的類庫

其實原理是一樣的,再次修改 .podspec 檔案,記得將 version 和 tag 都增加小小的 1,然後再按照上面的步驟進行 驗證 .podspec、打 tag 上傳即可。

六、如何刪除已經提交到 CocoaPods 上面的類庫

pod trunk delete WZYCalendar 1.0.2

執行上面程式碼就可以刪除對應版本號的類庫了。

七、幾個常見的錯誤

① 在我們執行 git push --tags 時會報以下錯誤:

benpaobaodeiMac-2:WZYCalendar bpb$ git push --tags
Counting objects: 3, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 390 bytes | 0 bytes/s, done.
Total 3 (delta 1), reused 0 (delta 0)
remote: Resolving deltas: 100% (1/1), done.
To [email protected]:CoderZYWang/WZYCalendar.git
 * [new tag]         1.0.3 -> 1.0.3
 ! [rejected]        1.0.1 -> 1.0.1 (already exists)
 ! [rejected]        1.0.2 -> 1.0.2 (already exists)
error: failed to push some refs to '[email protected]:CoderZYWang/WZYCalendar.git'
hint: Updates were rejected because the tag already exists in the remote.

意為原來的 remote 上已經有了相同的 tag,不能重複提交。我們可以將上面帶有歎號的部分進行刪除。

git tag -d 1.0.1
git tag -d 1.0.2

刪除了帶有歎號的 tag,即可成功提交。

② 在 push 本地倉庫到遠端的時候(執行 git push origin master 時)可能會發生這樣的錯誤

error: failed to push some refs to '[email protected]:
出現這個錯誤的原因是你有在遠端庫中的檔案沒有下載下來,一般來說是 README.md 檔案沒有拉取來下。所以你需要先執行 git pull origin master 進行遠端和本地的一次拉取合併,然後再執行 git push origin master 進行新一次的提交。

相關推薦

自己新增CocoaPods用pod管理

具體步驟1 將含有你要上傳庫的專案新增到 Github2 用終端 cd 到該專案下建立.podspecpod spec create GrenealClass (GrenealClass pod新增的名

CocoaPods 如何自己新增 CocoaPods 支援

2015 年之前將自己的庫新增 CocoaPods 支援的過程十分複雜,而現在方便了許多。以下列出將自己的類庫新增 CocoaPods 支援的具體步驟和在此過程中遇到的一些坑。 一、首先你得有自己感覺寫的還不錯的一個類庫。 造車先得有輪子,說的就是這個道理。 你需要將你的

自己的開源新增cocoapods

CocoaPods提供了一種令人Amazing的方式來引入第三方庫,作為一個ios開發者,沒使用過CocoaPods是一件很遺憾的事情。我從14年開始接觸CocoaPods,並在自己的專案中廣泛使用它來引入第三方庫。我從事ios開發5年多來,積累了大量經過了驗證的類別、定製的UI等等OC程式

如何自己的一段C++程式碼封裝成.so以供其他人呼叫

1.通過自己寫的canbus函式程式碼,先生成一個libcanbus.so連結庫 canbus.cpp程式碼如下: 編譯指令如下: $ g++ -Wall -g -fPIC -c canbus.cpp -o canbus.o $ g++ -

自己程式碼整理成cocoapods管理

專案元件化管理,使用cocoapods管理,將程式碼分離,將專案模組化 一、  上傳專案原始碼 把專案原始碼上傳到gitHub倉庫再clone到本地(以iOS_Category為例--原始碼在這裡), 如果專案本來就在gitHub的倉庫中, 直接clone到本地即可

CocoaPods上製作自己

CocoaPads作為管理第三方庫的神器,有時候自己寫的好的庫也希望,放在上面去,不敢說給別人用,讓別人喜歡,最起碼自己熟悉,下次自己倒進來就能用,也有也有人喜歡把那些庫打成.a的包,這樣也可以。只要你喜歡隨便嘍。我是覺得打包成.a不太方便版本管理,不太方便升級

python如何自己的代碼打包供他人使用

format 下載安裝 -- div odin 簡單 () license find 背景: 利用setuptools來實現,所以先安裝setuptools,其實Python2.7.9及之後的版本都自帶安裝setuptools了,無需在另外安裝 如果沒有安裝setuptoo

自己的腳本添加至開機自啟動服務和chkconfig的原理

添加開機自啟動服務 Linux運維將自己寫的腳本添加至開機自啟動服務和chkconfig的原理 創建腳本測試 [root@anuo ~]# vim anuo.sh --創建個腳本 # !/bin/bash # chkconfig: 35 53 88 --指定3和5級別啟動 53的啟動的順序 88

自己的HDL代碼封裝成帶AXI總線的IP

chang center 曾經 .cn 轉載 tool tps 事情 總線 將自己寫的HDL代碼封裝成帶AXI總線的IP 1.Tools->create and package IP 2.create AXI4總線的IP 3.新建block design

如何自己的verilog模塊封裝成IP核

目錄 第二篇 hierarchy 布局 options ssi campaign mac sed 如何將自己寫的verilog模塊封裝成IP核 (2014-11-21 14:53:29) 轉載▼ 標簽: 財經 分類: 我的東東 ========

如何使用VS2017客戶端新增到ASP.NET CORE 2.2(簡單方法)

目錄 介紹 先決條件 步驟 外部參考 在VS 2017 ASP NET Core 2.2專案上使用UI安裝客戶端庫的簡便方法 介紹 Libman是一個輕量級的客戶端庫獲取工具。適用於簡單的Web應用程式或不需要高階工具的專案(例如:npm / web pack),

CocoaPods 淘寶源不能用了

檢視當前用的映象 gem source -l 刪除原有映象 gem sources --remove https://ruby.taobao.org/ 增加新的映象 gem sources -a

自己的Python程式碼打包放到PyPI上

如果是開源的Python程式碼,為了能夠讓大家更方便的使用,放到PyPI上也許是個非常不錯的主意(PyPI:Python Package Index)。剛開始我以為要將程式碼打包放到PyPI上是一件非常複雜繁瑣的事情,不過看過《Dive Into Python 3》的

c++ 之自己函式 (靜態

c++ 庫函式,分為靜態庫,靜態庫的好處就是沒有太多約束,靜態庫寫的類,可以被整合。缺點是,程式碼是直接編譯到目標檔案裡面,所以程式碼量會增加 。 庫函式分為 Win32 Application和Win32 Console Application 和MFC  庫。 Win3

如何自己的程式碼上傳到github上

接下來就是我上傳程式碼的步驟: ①首先註冊github賬號,登入,建立新倉庫 ,點選+,點選new repository 得到如下頁面,填寫倉庫名,自己隨便寫一個名字,下面的描述可寫可不寫,點選Initialize this repository  

linux下自己的shell指令碼做成系統命令

sublime啟動為例子 首先,我們一般會將本地的shell放在/usr/local/sbin/目錄下 #! /bin/bash SUBLIME_HOME = "~/Software

自己的vue元件整理成外掛,通過vue.use來使用

1,在main.js中引入components import components from './components' Vue.use(components) 2,外掛放到components資料夾中 3,components資料夾新建index.js檔案,註冊外

Python自己的模組進行打包

將專案打包成模組的想法來自於flask文件教程,這不是在PyCon上和阿明合了照嘛,這不得多看看人家的東西。有興趣的可以看看文件的專案可安裝化部分,作者將flask專案打包成一個包,使其可以再任何地方匯入專案並允許,也可以通過pip install youproject.whl的方式來安裝專案並安裝相關的依

BZOJ 3626 [LNOI2014]LCA:樹剖 + 差分 + 離線深度轉化成點權之和

scanf tor chain stdio.h dfs lca uil sin ems 題意:   給出一個n個節點的有根樹(編號為0到n-1,根節點為0,n <= 50000)。   一個點的深度定義為這個節點到根的距離+1。   設dep[i]表示點i的深度,LC

留給自己的獨白,長大了

    面臨的東西越多,就會發現,自己其實,做出什麼選擇都是那麼的無力,或許,許多人都在忙著這兒,忙著那兒,可是這些東西都是以後的一小塊,又怎麼會讓你的人生的行程就此結束,為什麼那麼在乎這一些小小的過失讓自己難過的彷彿世界要崩塌了,一步錯,步步錯,其實自己都哭的不成樣子,其實