在日常的开发过程中总会用到一些第三方的pod库,有提供网络请求的、有提供数据解析的、有UI工具等等库,今天我也来尝试制作一个pod库。经过在网上查询教程,已经成功制作出了pod库,很简单,这里记录一下过程。

创建pod仓库

  1. 创建一个git仓库如下,仓库名MyPodDemo
  2. 在此库中新建一个Xcode项目,添加代码如下,在KKPodTool目录下增加了一个KKUIColorTool类,如图所示
  3. 将添加好的代码提交后,在提交点打一个0.0.1的tag,并推送标签到远程仓库

编辑podspec文件

1.如果电脑上没有安装cocoapods,可以参考CocoaPods安装进行安装 2.安装好cocoapods后,来到项目的根目录下 创建podspec文件(这里命名为KKPodTool)

pod spec create KKPodTool

执行完这个命令后,当前目录下会多出一个KKPodTool.podspec文件 3.编辑这个spec文件

vi KKpodTool.podspec

文件内容如下,根据自己项目的情况进行一些修改,有一些不是必填项

Pod::Spec.new do |spec|

  spec.name         = "KKPodTool"
## pod库的版本,对应于pod仓库的tag
  spec.version      = "0.0.1"
  spec.summary      = "summary:KKPodTool is my common tools."

  spec.description  = <<-DESC
			description:KKPodTool is my common tools.
                   DESC

  spec.homepage     = "https://gitee.com/deepwidth/my-pod-demo"


  spec.license      = { :type => "MIT", :file => "FILE_LICENSE" }

  #  pod库作者信息
  spec.author             = { "zhangkangkang" => "zhang.kangkang@outlook.com" }

  # spec.platform     = :ios
  spec.platform     = :ios, "10.0"

  #  When using multiple platforms
  # spec.ios.deployment_target = "10.0"
  # spec.osx.deployment_target = "10.7"
  # spec.watchos.deployment_target = "2.0"
  # spec.tvos.deployment_target = "9.0"

  # pod库代码的下载地址

  spec.source       = { :git => "https://gitee.com/deepwidth/my-pod-demo", :tag => "#{spec.version}" }

  # pod库代码的路径

  spec.source_files  = "KKPodTool/**/*.{h,m}"
  spec.exclude_files = ""
  #
  #  A list of resources included with the Pod. These are copied into the
  #  target bundle with a build phase script. Anything else will be cleaned.
  #  You can preserve files from being cleaned, please don't preserve
  #  non-essential files like tests, examples and documentation.
  #

  # spec.resource  = "icon.png"
  # spec.resources = "Resources/*.png"

  # spec.preserve_paths = "FilesToSave", "MoreFilesToSave"


  # ――― Project Linking ―――――――――――――――――――――――――――――――――――――――――――――――――――――――――― #
  #
  #  Link your library with frameworks, or libraries. Libraries do not include
  #  the lib prefix of their name.
  #

  spec.framework  = "UIKit"
  # spec.frameworks = "SomeFramework", "AnotherFramework"

  # spec.library   = "iconv"
  # spec.libraries = "iconv", "xml2"


  # ――― Project Settings ――――――――――――――――――――――――――――――――――――――――――――――――――――――――― #
  # 在ARC环境下工作

  spec.requires_arc = true

  # spec.xcconfig = { "HEADER_SEARCH_PATHS" => "$(SDKROOT)/usr/include/libxml2" }
  # 依赖的其他pod库
  # spec.dependency "JSONKit", "~> 1.4"

end

4.编辑完podsepc文件后需要验证一下是否正确

pod spec lint KKPodTool.podspec

如果有错误,会有error的提示,同时也可能会有很多警告(warning)。如果有error的话需要根据报错去解决error,如果只是有warning的话可以不进行修改,也会发布成功。 如果验证时需要忽视warning的话需要在命令后面加个参数--allow-warnings,如下

pod spec lint KKPodTool.podspec --allow-warnings

5.验证结果如下看到一行绿色的字表示验证成功,可以发布 验证成功

发布pod库

  1. 发布pod库前需要注册账户
    pod trunk register "email@example.com" username
    

    执行这个注册命令会有一个邮件发到你填写的邮箱中,点击邮件中的链接进行验证。

  2. 验证通过之后就可以进行发布了
    pod trunk push KKPodTool.podspec
    

    如果你的podspec文件有警告,可以在发布命令后面加上允许包含警告的参数,如下

    pod trunk push KKPodTool.podspec --allow-warnings
    

    看到如下的输出则表示发布成功 发布成功

遇到的问题

  1. 发布完成后不能立马搜到? pod库发布成功后使用命令搜索
    pod search KKPodTool
    

    搜索结果中搜不到刚刚发布成功的pod库,需要过一段时间才能搜到,尝试了网上说的几个方法都无效

  2. 验证podspec文件时遇到错误如下 错误 报错内容:
    -ERROR | [iOS] unknown: Encountered an unknown error (/usr/bin/xcrun simctl list -j devices
    xcrun: error: unable to find utility "simctl", not a developer tool or in PATH
    

    我的解决方法是,打开Xcode->Preferences->Locations,设置一下Command Line Tools 解决问题

  3. 在制作以及使用pod库的过程中还会遇到很多其他问题,需要根据错误类型寻找解决方法。

REFERENCE