代码上传的前提是Github上已经配置好(包括忽略文件和Lincence),且代码在Github.
1、检查cocoapods版本
cocoapods版本要确保大于0.33.0,如果不满足执行命令更新pod版本,命令如下:
pod --version //查看pod版本
sudo gem install cocoapods //更新pod
- 切记最好不要使用beta版本
2、注册邮箱和用户
pod trunk register email@**.com 'username' --verbose
成功之后要打开邮箱进行验证,内容大致如下:
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
点击链接进行验证,链接上用个地方点击‘terminal’,直接返回终端
成功之后可以用命令测试
pod trunk me
信息大致如下:
3、给代码打tag并推到github
将路径切换到工程目录下 执行命令如下:
git tag 0.0.1 // 给代码打tag,0.0.1 是你的版本号
git push --tag // 推送tag到github
git tag // 查看所有的tag
删除本地tag git tag -d 版本号
删除远程tag git push origin --delete tag 版本号
4、创建并配置podspec
将路径切换到工程目录下 执行命令
pod spec create Refresh //Refresh一般和工程名保持一致(非强制)
执行结束生成一个Refresh.podspec,里面的信息请自行查看。
下面是一些最基本的信息(已删除注释等):
Pod::Spec.new do |s|
s.name = 'SCPeriodicScrollView'
s.version = '0.0.1' #些处的版本要和上面设置的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
对于.podspec文件也可以找到一个第三方库的东西拿出来修改一下就可以。
5、验证podspec文件
-
以下验证部分 需要进入到.podspec 所在的文件夹
执行命令验证.podspec中的填写信息
pod lib lint
如果有错误的话它会提示。但是注意的是如果有警告也是不会验证通过的,对于无关紧要的警告(包括代码中的)可以使用命令
pod lib lint --allow-warnings //忽略警告
下面我主要说下可能遇到的问题:
-
源文件路径不正确
s.source_files = "Refresh/Refresh/Source*.{h,m}"
s.public_header_files = "Refresh/Refresh/Source/*.h"
source_files和public_header_files 目录一定要从你的工程根目录算起
-
依赖库
s.dependency "JSONKit" //不写版本号直接更新最新的依赖库
-
描述长度问题
s.summary = "123"
s.description = "1234"
description的长度一定要比summary的长
-
Tag问题
如果pods中已经有一个版本,如果将些删掉,然后修改代码重新提交成相同的tag,那么,再用Pods集成的时候还是上一个版本的代码
-
依赖问题([iOS] unknown: Encountered an unknown error (Unable to find a specification for
LGBaseModule
depended upon byLGInteractionModule
)
添加--sources, 私有库地址放到cocoapods仓库地址之前,用逗号(,)分隔
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
执行命令
pod trunk push Refresh.podspec //推送代码到Cocoapods
同样如果有不紧要的警告也要加--allow-warnings
pod trunk push Refresh.podspec --allow-warnings //推送代码到Cocoapods
7、上传成功之后pods更新
代码库传入 pods之后如果 'pod search 库名' 搜索不到那么要进行<pre>pod setup</pre>操作。setup的操作是将本地仓库和服务器进行同步,同步之后也可能会出现还是搜索不到,但是在cocoapods 官网上明明可以搜的到,这时要做的是下面的操作
执行命令清除搜索索引,因为新添加的库不在索引范围内
rm ~/Library/Caches/CocoaPods/search_index.json
执行完毕之后再重新search(可能会卡在 Creating search index for spec repo 'master'.. 不要急,慢慢等...) ,这时会生成新的搜索索引,新的搜索索引将会包含你的库
其它:
删除cocoapods中某一个库版本
pod trunk delete 库名 库版本号