CocoaPods上传个人第三方库基本流程

前言:

之前写完**EWPhotoPicker**后尝试上传CocoaPods,毕竟通过CocoaPods管理要更方便,在上传过程中遇到了各种各样的问题,虽然网上攻略很多,但是有的有时效性的问题,也有的可能没有遇到我所遇到的问题,所以就想把这次上传方式总结出来,也算做个笔记,给大家个参考.

一,创建一个项目并上传GitHub.

先把项目功能实现,大家应该都能理解,实现功能后把自己所做的库用一个文件夹装起来,记得包含.bundle资源文件.
项目目录
上传git我使用的是GitHub Desktop,方式我这里就不赘述了,不管是用命令行上传,source tree上传都无所谓.
保证Github上有这个项目就可以了.

二,新建.podspec描述文件.

将终端CD到项目路径,之后输入

pod spec create EWPhotoPicker

create后面跟着的就是项目名称.
指令完成后项目目录下会多一个EWPhotoPicker.podspec文件
项目目录
我们需要编辑这个描述文件,内容如下:

Pod::Spec.new do |s|
  # 项目名称,也就是pod使用这个库时候的名称
  s.name         = "EWPhotoPicker" 
  # 版本,自己定一个版本迭代就行,如果要更新就把其版本号往上加
  s.version      = "0.0.7"
  # 主要标题
  s.summary      = "a swift photo picker"
  # 详细描述(必须大于主要标题的长度)
  s.description  = <<-DESC
       一个自定制的实现首个cell是相机的相册
                   DESC
  # 仓库主页,之前项目上传后获取的项目网址
  s.homepage     = "https://github.com/Wangliquan/EWPhotoPicker"
  # MIT许可证,这个就这么填不用改
  s.license      = "MIT"
  # 作者信息,填写自己的信息
  s.author       = { "wangliquan" => "[email protected]" }
  # 支持的ios版本
  s.platform     = :ios,'8.0'
  # 仓库地址,也是上传后获取的git地址,tag获取写法表示以版本号作为tag
  s.source       = { :git => "https://github.com/WangLiquan/EWPhotoPicker.git", :tag => "#{s.version}" }
  # 自己编写的库在项目中的路径,这个要注意下,下面我会详细说明
  s.source_files = "EWPhotoPicker/EWPhotoPicker/*.swift"
  # 调用的framework
  s.framework    = "UIKit","Foundation","Photos"
  # 使用arc
  s.requires_arc = true
  # 资源文件路径
  s.resource     = "EWPhotoPicker/EWPhotoPicker/EWPhotoPicker.bundle"
  # 使用的swift版本
  s.swift_version = '4.2'
end

s.source_files这个刚开始我就走到了坑里,这个路径是在项目中你所想要上传的库的文件路径,因为我建立项目时候没想那么多,所以全叫EWPhotoPicker了,填写时候就有点乱.最终我填写的路径是

  s.source_files = "EWPhotoPicker/EWPhotoPicker/*.swift"

项目路径
路径最后的*.swift代表着所有swift文件.如果是OC的话则是*.{h,m}代表所有.h和.m文件.
配置文件基本就是这样,编辑完保存后,使用

pod lib lint

来检测文件是不是符合规则,如果显示error,则根据提示进行修改,如果是warning,我建议也看一下,对能够修改的提前修改,也可以用过–allow-warnings来忽略.

三,将.podspec文件上传到github,并把tag传到github.

之前填写配置文件时有提过,cocoapods获取tag就是库的版本,所以我们需要保证配置文件中的s.version与项目的tag相同.
所以我们先在终端中为库添加tag.

git tag 0.0.1

再将tag上传到github中

git push origin 0.0.1

一定要保证这个tag与配置文件中的s.version保持一致,更新时候也是如此.

四,注册trunk,并使用trunk上传到CocoaPods.

在终端中输入如下指令注册trunk.

扫描二维码关注公众号,回复: 5821540 查看本文章
pod trunk register 邮箱 '用户名' --verbose

点击邮箱的验证连接.就注册成功了,之后可以输入指令来进行验证.

pod trunk me 

正确显示
只要正确显示了类似信息,我们就可以上传库了.
输入如下指令.

pod trunk push EWPhotoPicker.podspec

如果报了warning,可以使用–allow-warnings来忽略

pod trunk push EWPhotoPicker.podspec --allow-warnings

如下显示就代表上传成功啦!撒花!
上传成功

五,其他问题.

1.上传成功后搜索不到.

上传成功后,我们使用

pod search EWPhotoPicker

没有找到自己的库,这是因为本地的CocoaPods没有更新,只要调用下

///更新本地索引库
pod setup 
///删除旧的检索索引文件
rm ~/Library/Caches/CocoaPods/search_index.json

之后在search就能找到了.

2.上传的库测试使用时发现库内的类找不到

有可能是因为权限设置的问题,我们需要外部引用的类与方法都必须用public或者open前缀来保证允许外部引用.

3.bundle文件的获取方式.

/// 获取图片
public struct EWBundle {
    static public func imageFromBundle(_ imageName: String) -> UIImage? {
        var bundle = Bundle(for: EWPickerManager.self)
        if let resourcePath = bundle.path(forResource: "EWPhotoPicker", ofType: "bundle") {
            if let resourcesBundle = Bundle(path: resourcePath) {
                bundle = resourcesBundle
            }
        }
        if let image = UIImage(named: imageName, in: bundle, compatibleWith: nil){
            return image
        }
        return nil
    }
}

4.更新问题

更新库非常简单,只要把更新下配置文件中的version,然后连同代码变更一块提交到github远程,然后再重新打个tag,保证与version相同,再将tag上传到github远程.
最后再执行一次

pod trunk push EWPhotoPicker.podspec --allow-warnings

总结:

至此文章全部结束,这个上传过程刚开始做时候可能会觉得有些繁琐,但了解步骤后其实还好,之后更新版本之类的操作就很简单了,有问题欢迎探讨.

另:

我上传的库是一个自定义相册,实现首个cell是相机的功能,有兴趣的可以看下.
git地址: EWPhotoPicker

猜你喜欢

转载自blog.csdn.net/weixin_43566445/article/details/84371655