最近公司要把我們的產(chǎn)品活動盒子上傳到cocoapods,遇到了一些新坑,所以決定自己重新總結(jié)一下,做一下詳細的記錄。
1. 步驟總結(jié)
- 把庫上傳到github
- 創(chuàng)建podspec文件和LICENSE文件
- 使用trunk上傳到pod
- 驗證是否成功
2. 上傳到github
我這里說一下上傳到組織類型的github賬號要怎么操作,現(xiàn)在有兩個github賬號,一個是mcmore,組織賬號,另一個是ljcoder2015,是我個人的github賬號,我是mcmore這個組織的成員。
首先mcmore創(chuàng)建一個名為hezi-sdk-for-ios的倉庫,接著用ljcoder2015這個賬號Fork一下這個倉庫,clone這個倉庫到本地。
git clone git@github.com:ljcoder2015/hezi-sdk-for-ios.git
把庫拷貝到這個本地倉庫中,然后提交到github上,具體指令為
git add -Agit commit -m "更改說明"
git push
這個時候需要去github上創(chuàng)建一個pull request,向mcmore提交合并請求

等mcmore同意合并后,我們就發(fā)現(xiàn)mcmore創(chuàng)建的倉庫已經(jīng)有我們上傳的庫了。關(guān)于Fork的其它內(nèi)容可以查看https://linux.cn/article-4292-1-rss.html
3. 創(chuàng)建podspec和LICENSE文件
用vim創(chuàng)建HeziSDK.podspec,HeziSDK是你的庫名,注意,如果使用自帶文本編輯器編輯,可能會引發(fā)格式錯誤。
cd 你的倉庫目錄 vim HeziSDK.podspec
插入下面的內(nèi)容
Pod::Spec.new do |s|
s.name = 'HeziSDK's.version = '1.2.1'
s.license = 'MIT'
s.summary = '活動盒子SDK'
s.homepage = 'https://github.com/mcmore/hezi-sdk-for-ios'
s.authors = { 'mcmore' => 'ljcoder@163.com' }
s.source = { :git => "https://github.com/mcmore/hezi-sdk-for-ios.git", :tag => "1.2.1"}
s.requires_arc = trues.ios.deployment_target = '7.0'
s.source_files = "HeziSDK/*.{h,m}", "HeziSDK/HeziSDK.a"
s.source = "HeziSDK/HeziSDK.bundle"
s.frameworks = 'UIKit'
end
只需要把以下內(nèi)容改成你自己的即可
s.name :庫的名字
s.version : 版本,要和github上的倉庫tag對應(yīng)
s.license :授權(quán)s.summary :描述
s.homepage = github倉庫主頁
s.authors :作者名字和聯(lián)系郵箱
s.source :倉庫地址
s.requires_arc : 是否ARC
s.ios.deployment_target : 最低支持的系統(tǒng)版本
s.source_files : 資源文件
s.source : bundle文件
s.frameworks :所需的framework,多個用英文逗號隔開
創(chuàng)建授權(quán)文件LICENSEvim LICENSE我用的是MIT的許可協(xié)議,內(nèi)容是拷貝維基百科上MIT許可證的聲明
Copyright (C) <year> <copyright holders>
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
<year> <copyright holders>替換這里的內(nèi)容為你自己的即可。
4. 使用trunk上傳到pod
- 上傳前的準備
在上傳之前,需要把新添加的LICENSE文件和HeziSDK.podspec push到mcmore組織號的對應(yīng)倉庫里面。并叫組織號管理員添加一個tag,這個tag要和你的podspec文件中的版本對應(yīng),不然驗證會出錯。注意一下,一定是企業(yè)號的倉庫添加tag才行,你自己給自己的倉庫添加tag是沒用的
git tag -a 1.2.1 -m 'my version 1.2.1'
git push origin --tags
git tag 指令說名可以看這里https://git-scm.com/book/zh/v1/Git-%E5%9F%BA%E7%A1%80-%E6%89%93%E6%A0%87%E7%AD%BE
- 使用trunk上傳pod
在注冊trunk之前,我們需要確認當前的CocoaPods版本是否足夠新。trunk需要pod在0.33及以上版本,如果你不滿足要求,打開Terminal使用ruby的gem命令更新pod:
sudo gem install cocoapods
更新結(jié)束后,我們開始注冊trunk:
pod trunk register ljcoder@163.com 'mcmore' --verbose
ljcoder@163.com 是郵箱。mcmor是用戶名。--verbose參數(shù)是為了便于輸出注冊過程中的調(diào)試信息。執(zhí)行上面的語句后,你的郵箱將會受到一封帶有驗證鏈接的郵件,如果沒有請去垃圾箱找找,有可能被屏蔽了。點擊郵件的鏈接就完成了trunk注冊流程。使用下面的命令可以向trunk服務(wù)器查詢自己的注冊信息:
pod trunk me
輸出如下信息就表示你注冊成功,就可以上傳了。
pod trunk push HeziSDK.podspec
出現(xiàn)下面的信息,表示上傳成功了。

pod search HeziSDK
執(zhí)行后可以查看到信息表明成功,趕緊新建一個工程試試吧。
push時可能會遇見的錯誤
ERROR | [iOS] unknown: Encountered an unknown error (Simulator iPhone 4s is not available.) during validation.
這個錯誤是因為是用的Xcode 8打包的庫,已經(jīng)不支持iPhone 4s了,解決這個問題的辦法就是升級pod到新版本即可。