有效利用Git和CocoaPods建立自己的代码库

每个coder在漫长的coding过程中,都会有自己常用的一套工具类方案,一些工具类和一些category,如果把这些整理一下提交到cocoapods不仅会方便自己每次使用,而且给开源社区做了贡献,也会帮助自己完善自己的工具类。

在repo目录下生成podspec文件

pod spec create ZCTouchID

生成了一个podspec文件,内容格式是固定好的

  • Spec MetaData -- 主要信息

    • s.name - pod名

    • s.version - pod版本

    • s.summary - pod的简介,别人在pod search你的库之后看到的一句简介

    • s.description - pod的详细描述,必须长于简介

    • s.homepage - pod的主页,一般是github这个repo的主页

    • s.screenshots - pod的截图

  • Spec License -- 使用的开源协议

    • s.license - 使用Apache还是MIT还是其他协议
  • Author MetaData -- 作者信息

    • s.author - pod的作者
    • s.authors - pod如果有多个作者
    • s.social_media_url - pod作者的一些社交帐号主页
  • Platform Specifics -- 支持的平台和系统版本

    • s.platform - pod支持的平台

    如果pod可以在多个平台上使用就设置下面这些的参数

    • s.ios.deployment_target
    • s.osx.deployment_target
    • s.watchos.deployment_target
    • s.tvos.deployment_target
  • Source Location -- pod的源地址

    • s.source - pod的git源地址
  • Source Code -- pod的源文件

    • s.source_files - pod的源文件,可以包含.h .m .swift .cpp .mm这些
    • s.public_header_files - 一般就是pod的头文件.h居多
  • Resources -- pod用到的资源文件

    • s.resource - 单个资源文件
    • s.resources - 多个资源文件用** *这种通配符去匹配
    • s.preserve_paths
  • Project Linking -- pod需要的一些依赖

    • s.framework

    • s.frameworks - 引用到的系统的framework

    • s.library

    • s.libraries - 引用系统的一些tbz文件

  • Project Settings -- pod依赖的设置

    • s.requires_arc - 环境是arc还是mrc
    • s.xcconfig - 对工程的一些设置
    • s.dependency - pod引用了一些第三方的库

所以全部写完了的podspec成品是这个样子:

ZCTouchID_podspec文件

注意 s.source 这个地方, :tag => "#{s.version}" 如果podspec这样写,可能在下面的验证步骤会无法通过,所以解决办法是,先把这个地方改成 :branch => 'develop' 指向开发分支,通过验证之后,再改回s.version就可以。

验证podspec

验证命令 在pod目录下

pod spec lint
  • --verbose 查看编译详情,清理错误
  • --allow-warning 允许警告,为了通过编译

如果不打算上传到cocoapods,也可以使用下面的命令进行验证,该命令是使用本地的仓库进行验证

pod lib lint

推送到cocoapods的库

注册pod帐号

首先需要在终端注册pod帐号

pod trunk register [Email] [Name]

例如我注册就使用

pod trunk register zcillcoder@gmail.com Locke

之后没有意外就会向注册的邮箱发送一封邮件,去确认一波就可以

提交到cocoapods

在项目的master分支上打tag

git tag 1.0.0
git push origin 1.0.0

提交到cocoapods的官方spec仓库

pod trunk push ZCTouchID.podspec

成功了之后,就可以通过pod search命令搜索到自己的库

pod search result

参考

CocoaPods系列 - 提交