第三方库上传至Cocoapods

代码上传的前提是Github上已经配置好(包括忽略文件和Lincence),且代码在Github.

图片.png

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  

信息大致如下:

本地信息.png

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 by LGInteractionModule

添加--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
上传成功.png

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 库名 库版本号

如果上述有什么错误,欢迎指正。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容