代碼上傳的前提是Github上已經(jīng)配置好(包括忽略文件和Lincence),且代碼在Github.
1邑闺、檢查cocoapods版本
cocoapods版本要確保大于0.33.0跌前,如果不滿足執(zhí)行命令更新pod版本,命令如下:
pod --version //查看pod版本
sudo gem install cocoapods //更新pod
- 切記最好不要使用beta版本
2陡舅、注冊(cè)郵箱和用戶
pod trunk register email@**.com 'username' --verbose
成功之后要打開(kāi)郵箱進(jìn)行驗(yàn)證,內(nèi)容大致如下:
Hi usename,
Please confirm your CocoaPods session by clicking the following link:
https://trunk.cocoapods.org/sessions/verify/18996b08
If you did not request this you do not need to take any further action.
Kind regards, the CocoaPods team
點(diǎn)擊鏈接進(jìn)行驗(yàn)證抵乓,鏈接上用個(gè)地方點(diǎn)擊‘terminal’,直接返回終端
成功之后可以用命令測(cè)試
pod trunk me
信息大致如下:
3靶衍、給代碼打tag并推到github
將路徑切換到工程目錄下 執(zhí)行命令如下:
git tag 0.0.1 // 給代碼打tag,0.0.1 是你的版本號(hào)
git push --tag // 推送tag到github
git tag // 查看所有的tag
刪除本地tag git tag -d 版本號(hào)
刪除遠(yuǎn)程tag git push origin --delete tag 版本號(hào)
4灾炭、創(chuàng)建并配置podspec
將路徑切換到工程目錄下 執(zhí)行命令
pod spec create Refresh //Refresh一般和工程名保持一致(非強(qiáng)制)
執(zhí)行結(jié)束生成一個(gè)Refresh.podspec,里面的信息請(qǐng)自行查看颅眶。
下面是一些最基本的信息(已刪除注釋等):
Pod::Spec.new do |s|
s.name = 'SCPeriodicScrollView'
s.version = '0.0.1' #些處的版本要和上面設(shè)置的tag保持下一致
s.summary = 'A fast, lightweight carousel figure.'
s.description = 'A fast, lightweight carousel figure, which is based on UICollectionView.'
s.homepage = 'https://github.com/tsc000/SCPeriodicScrollView'
s.license = 'MIT'
s.author = { 'tsc000' => 'email@qq.com' }
s.platform = 'iOS'
s.ios.deployment_target = '7.0'
s.source = { :git => 'https://github.com/tsc000/SCPeriodicScrollView.git', :tag => s.version }
s.source_files = 'SCPeriodicScrollView/Source/*.{h,m}'
s.framework = 'UIKit'
s.requires_arc = true
s.dependency "SDWebImage"
end
對(duì)于.podspec文件也可以找到一個(gè)第三方庫(kù)的東西拿出來(lái)修改一下就可以蜈出。
5当纱、驗(yàn)證podspec文件
-
以下驗(yàn)證部分 需要進(jìn)入到.podspec 所在的文件夾
執(zhí)行命令驗(yàn)證.podspec中的填寫(xiě)信息
pod lib lint
如果有錯(cuò)誤的話它會(huì)提示微姊。但是注意的是如果有警告也是不會(huì)驗(yàn)證通過(guò)的再层,對(duì)于無(wú)關(guān)緊要的警告(包括代碼中的)可以使用命令
pod lib lint --allow-warnings //忽略警告
下面我主要說(shuō)下可能遇到的問(wèn)題:
-
源文件路徑不正確
s.source_files = "Refresh/Refresh/Source*.{h,m}"
s.public_header_files = "Refresh/Refresh/Source/*.h"
source_files和public_header_files 目錄一定要從你的工程根目錄算起
-
依賴庫(kù)
s.dependency "JSONKit" //不寫(xiě)版本號(hào)直接更新最新的依賴庫(kù)
-
描述長(zhǎng)度問(wèn)題
s.summary = "123"
s.description = "1234"
description的長(zhǎng)度一定要比summary的長(zhǎng)
-
Tag問(wèn)題
如果pods中已經(jīng)有一個(gè)版本雄右,如果將些刪掉,然后修改代碼重新提交成相同的tag估蹄,那么脸爱,再用Pods集成的時(shí)候還是上一個(gè)版本的代碼
-
依賴問(wèn)題([iOS] unknown: Encountered an unknown error (Unable to find a specification for
LGBaseModule
depended upon byLGInteractionModule
)
添加--sources狞玛, 私有庫(kù)地址放到cocoapods倉(cāng)庫(kù)地址之前剖笙,用逗號(hào)(卵洗,)分隔
pod lib lint --sources='https://gitee.com/SwiftLogan/PrivateRepoSpec.git, https://github.com/CocoaPods/Specs.git' --verbose
-
xcodebuild: Returned an unsuccessful exit code
添加--verbose
pod lib lint --verbose
6、將代碼推送到Cocoapods
執(zhí)行命令
pod trunk push Refresh.podspec //推送代碼到Cocoapods
同樣如果有不緊要的警告也要加--allow-warnings
pod trunk push Refresh.podspec --allow-warnings //推送代碼到Cocoapods
7弥咪、上傳成功之后pods更新
代碼庫(kù)傳入 pods之后如果 'pod search 庫(kù)名' 搜索不到那么要進(jìn)行<pre>pod setup</pre>操作过蹂。setup的操作是將本地倉(cāng)庫(kù)和服務(wù)器進(jìn)行同步,同步之后也可能會(huì)出現(xiàn)還是搜索不到酪夷,但是在cocoapods 官網(wǎng)上明明可以搜的到榴啸,這時(shí)要做的是下面的操作
執(zhí)行命令清除搜索索引,因?yàn)樾绿砑拥膸?kù)不在索引范圍內(nèi)
rm ~/Library/Caches/CocoaPods/search_index.json
執(zhí)行完畢之后再重新search(可能會(huì)卡在 Creating search index for spec repo 'master'.. 不要急,慢慢等...) 晚岭,這時(shí)會(huì)生成新的搜索索引,新的搜索索引將會(huì)包含你的庫(kù)
其它:
刪除cocoapods中某一個(gè)庫(kù)版本
pod trunk delete 庫(kù)名 庫(kù)版本號(hào)