1,在开发过程中,经常会使用到第三框架,我们通过一个pod install命令,很方便的就将第三方框架加到我们自己的项目中,如果我们也想将自己写的组件或库开源出去,让别人也可以通过pod install命令安装自己的框架该怎么做呢?下面,我就教大家一步一步的将自己的pods发布到CocoaPods 中。如果你现在对CocoaPods还不太了解,可以搜索一下cocoapods环境的配置和使用。
下面我会通过一个名为SKFTestview的项目来讲解一下整个过程。
在github建立一个新的repository,在Add alicense 选择Apache License 2.0或者MIT协议。创建ok后,clone到本地。
2,在这个clone的文件夹里面创建一个空的工程
图片.png
3,添加一个名为SKFTestview的文件夹,注意不要直接右键点击New Group,这样只是在工程里面创建了一个分组,但是工程所在文件里面是没有这个文件的,可以这样添加分组
创建分组.gif
4,我在SKFTestview创建了一个自定义view和一个bundle文件,并添加了一张图片,(自己拍的,不会涉及版权)。
图片.png
5,把项目push到github,并打上标签tag
图片.png
6,输入 pod spec create+工程名 创建podspec文件
图片.png
7,打开podspec文件,按下图修改,也可以下载参考本demo的podspec文件修改。
介绍几个参数
s.framework声明了所依赖的核心库,我这里只用到了UIKit,所以是这样的:
s.framework = "UIKit"
如果你的项目中依赖多个库,可以使用
s.frameworks = "SomeFramework", "AnotherFramework"
当然,我们开发的库中也可能还依赖第三方库,例如JSONKit,那么,就可以做如下声明:
s.dependency "JSONKit", "~> 1.4"
图片.png
图片.png
图片.png
注意:这里添加SKFtestview是相对于文件夹中podspec的位置来说的,/**/的意思是匹配SKFTestview下所有目录的文件,我以前也发布过代码到cocoapods,但是这个概念是最近才懂。
7,podspec文件设置好以后,可以在终端输入pod spec lint验证一下podspec设置的是否正确,如果正确,就可以提交了会出现下图,出现error,也不用着急,根据error提示的信息,修改就可以了
图片.png
8,接下来,就可以像cocoapods发布自己的pods了,我使用的是trunk的方式,在cocoapods使用了trunk之后,CocoaPods 需要0.33以上版本,用 pod --version查看版本,如果版本低,需要更新。
首先注册trunk
pod trunk register xxxxxxxxx@qq.com 'xxxxx' --verbose
邮箱以及用户名请对号入座。用户名我使用的是Github上的用户名。--verbose参数是为了便于输出注册过程中的调试信息。执行上面的语句后,你的邮箱将会受到一封带有验证链接的邮件,如果没有请去垃圾箱找找,有可能被屏蔽了。点击邮件的链接就完成了trunk注册流程。使用下面的命令可以向trunk服务器查询自己的注册信息。
pod trunk me
输出如下信息就表示你注册成功
图片.png
9,上面的工作都完成了,就可以使用pod trunk push 把你的代码推倒cocoapods上面了,
图片.png
此过程取决于网速,需耐心等待。
10,最后,提交成功。
图片.png
11,使用pod search SKFTestview,可能会出现下面的情况,搜索不到自己提交的库
这是因为本地的cocoapods索引文件里面没有,进入~/Library/Caches/CocoaPods/,删除json文件,重新 可以删除这个索引文件, 重新生成就好了
图片.png
12,END
图片.png
注:我的cocoapods的版本是1.2.0,如果是因为cocoapods的版本问题,提交不成功的,可以先升级到最新的版本
网友评论
- ERROR | [iOS] file patterns: The `source_files` pattern did not match any file.
- ERROR | [iOS] file patterns: The `resources` pattern did not match any file.
s.source_files = 'pods', 'podSpec/pods/*.{h,m}'
s.resource = "podSpec/pods/images.bundle"
podSpec是和pods.podspec同等级目录上,为什么还报上面两个错: