cocoapods创建自己的开源库

流程

  1. 检查和创建Cocoapods账号
    pod trunk me 来检查是否有账号,根据终端提示,没有的话需要注册。
    pod trunk register 邮箱号 '昵称' 例如 pod trunk register [email protected] 'snail'
    已有CocoaPods 会员

2.创建git仓库来存放代码
可以在github 或者码云等代码托管平台上创建一个空的仓库

3.创建pod组件项目 pod lib create ZZWViews,然后设置以下内容

  • 3.1支持的平台
  • 3.2支持的语言
  • 3.3是否包含 Demo 应用(包含后方便后面测试库中的功能)
  • 3.4是否使用测试框架
  • 3.5是否使用 UI 测试
  • 3.6Class 的前缀
  1. 项目结构和podspec源码分析
项目结构

把类文件都放到 Classes文件夹下之后,需要cd 到 Example目录下,执行pod install demo的工程就会加载Classes文件夹里面的内容,然后到测试区域导入相应的文件测试功能是否符合预期就好了。

文件路径

下面是比较完整版的podspec内容,基本上满足使用需求了,如果还需要更多的定义可以去官方podspec定义文档看看。


#Be sure to run `pod lib lint ZZWTool.podspec' to ensure this is a
#valid spec before submitting.
# Any lines starting with a # are optional, but their use is encouraged
# To learn more about a Podspec see https://guides.cocoapods.org/syntax/podspec.html
Pod::Spec.new do |s|
s.name = 'ZZWTool' #库的名字
s.version = '0.1.4' #版本号,当私有库需要更新的时候只要修改这个值
s.summary = '常用工具类和方法集合' #库的简介,pod search 显示在上面的介绍
# This description is used to generate tags and improve search results.
# * Think: What does it do? Why did you write it? What is the focus?
# * Try to keep it short, snappy and to the point.
# * Write the description between the DESC delimiters below.
# * Finally, don't worry about the indent, CocoaPods strips it!
s.description = '平时开发中常用的一些方法集合' #库的详细描述
s.homepage = 'https://github.com/zhouzheren/ZZWTool' #主页地址,pod search 会显示,一般填写仓库的地址就行了
# s.screenshots = 'www.example.com/screenshots_1', 'www.example.com/screenshots_2'
s.license = { :type => 'MIT', :file => 'LICENSE' } #开源协议,项目文件目录下需要有一个MIT开源协议文件,创建的时候默认就创建了这个,具体内容可以打开 LICENSE 查看
s.author = { 'snail' => '[email protected]' } #作者名字、邮箱
s.source = { :git => 'https://github.com/zhouzheren/ZZWTool.git', :tag => s.version.to_s } #资源地址,pod install 的时候会根据这个地址去下载你的想要库,以及下载的版本,必须要跟s.version一致。
# s.social_media_url = 'https://twitter.com/'
s.ios.deployment_target = '9.0' #库最低支持的系统版本
s.source_files = 'ZZWTool/Classes//' #这个很重要,指定资源文件,前缀就是 .podspec 文件当前路径,只用写之后的路径,如 Classes/ 是指 Classes 文件夹下的所有文件,但不包括子文件夹里面的文件、Classes// 是指包含所有 Classes 文件夹下的文件,包括子文件、Classes//.{h,m} 是指包含所有 Classes 文件夹下的后缀为 .h 和 .m 的文件,也可以指定文件。
# s.resource_bundles = {
# 'ZZWTool' => ['ZZWTool/Assets/.png'] #资源图片
# }
# s.public_header_files = 'Pod/Classes/
/.h' #公开的头文件,如果没有公开,用户在用的时候可能引不到响应的头文件
# s.frameworks = 'UIKit', 'MapKit' #需要依赖的框架
# s.dependency 'AFNetworking', '~> 2.3' #需要依赖的三方库
s.prefix_header_file = false
s.prefix_header_file = 'ZZWTool/Classes/Define.pch'
end


觉得上面那个太复杂,简单的使用可以参考下面的内容,相对精简不少。


Pod::Spec.new do |s|
s.name = 'ZZWViews'
s.version = '0.1.0'
s.summary = '自定义view集合'
s.description = '开发中用到的常见自定义view' #库的详细描述
s.homepage = 'https://github.com/zhouzheren/ZZWViews'
s.license = { :type => 'MIT', :file => 'LICENSE' }
s.author = { 'snail' => '[email protected]' }
s.source = { :git => 'https://github.com/zhouzheren/ZZWViews.git', :tag => s.version.to_s }
s.social_media_url = 'https://www.jianshu.com/u/611e4882e4dc'
s.ios.deployment_target = '10.0'
s.source_files = 'ZZWViews/Classes/*/'
s.dependency 'Masonry','~> 1.1.0' #需要依赖的三方库
end


总结一下流程,通过 pod lib create之后,先编辑podspec文件,然后把自己的功能类放到Classes文件下,接着 cd 到 Example目录下 pod install,最后在demo中测试自己的功能类。

4.代码上传到云仓库,并贴上标签
找到步骤2中创建的空仓库,把本地的代码上传上去,并且贴上tag,这个值要和 podspec文件中的s.version的值保持一致,可以用终端执行下面的命令。
git commit -m "first commit"
git branch -M main
git remote add origin https://github.com/zhouzheren/ZZWViews
git push -u origin main
git tag -m '第一个版本' '0.1.0
git push --tags

6.验证podspec文件
功能类都验证没有问题,就要准备发布这个开源库了。首先我们要来验证podspec这个文件
pod lib lint 或者 pod spec lint ,有时候代码会有一些警告导致验证无法通过,这个时候,我们可以在命令后面加上 --allow-warnings。如果出现的具体错误,就需要针对错误去修改。

pod lib lint不通过,添加--allow-warnings

7提交到开源pod
验证了podspec文件以后,就可以执行pod trunk push ZZWViews.podspec 发布到cocoapods上面

pod trunk push ZZWViews.podspec后面也可以加上--allow-warnings

看到Congrats 就表示成功了。可以在终端用pod search ZZWViews或者直接去官网搜索找自己发布的开源库了

常见问题

第一 网络问题


网络问题

如果在github上发布,网络不问题,可能会经常出现各种网络问题,代码提交、拉取,podspec验证、发布,这些阶段都会出现。重新尝试或者切换稳定的科学网络就可以了。

第二配置问题
podspec中的配置出错,大小写、云仓库路径,名称带了空格等等,这些都是比较常见的问题,最好是复制粘贴避免手动输入。

第三更新
发布好了0.1.0版本以后,如果需要更新怎么办。第一步更新功能类,demo测试完毕之后。后面有两个需要注意的步骤。其一是更新podspec中s.version的值,如升级到0.1.1,验证没有问题后再提交代码。其二是提交完成代码之后,需要贴标签,git tag值要对应的也设置为 0.1.1,最后去发布podspec.

参考文章
创建pod仓库的一点经验
从 0 开始手把手教你制作自己的 Pod 库

你可能感兴趣的:(cocoapods创建自己的开源库)