在日常的开发过程中总会用到一些第三方的pod库,有提供网络请求的、有提供数据解析的、有UI工具等等库,今天我也来尝试制作一个pod库。经过在网上查询教程,已经成功制作出了pod库,很简单,这里记录一下过程。
创建pod仓库
- 创建一个git仓库如下,仓库名MyPodDemo
- 在此库中新建一个Xcode项目,添加代码如下,在KKPodTool目录下增加了一个KKUIColorTool类,如图所示
- 将添加好的代码提交后,在提交点打一个
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
发布pod库
- 发布pod库前需要注册账户
pod trunk register "email@example.com" username执行这个注册命令会有一个邮件发到你填写的邮箱中,点击邮件中的链接进行验证。
- 验证通过之后就可以进行发布了
pod trunk push KKPodTool.podspec如果你的podspec文件有警告,可以在发布命令后面加上允许包含警告的参数,如下
pod trunk push KKPodTool.podspec --allow-warnings
遇到的问题
- 发布完成后不能立马搜到?
pod库发布成功后使用命令搜索
pod search KKPodTool搜索结果中搜不到刚刚发布成功的pod库,需要过一段时间才能搜到,尝试了网上说的几个方法都无效
- 验证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
- 在制作以及使用pod库的过程中还会遇到很多其他问题,需要根据错误类型寻找解决方法。
REFERENCE

