iOS组件化学习之路一 【发布cocoaPods】
由于目前已经做过了好多款项目,积累了一些公用的工具类、分类、UI组件等、考虑到以后项目快速导入、以及组件化的实践、特此进行cocoaPods的探究
自己的公共组件可以放到gitlab 或者 码云上来进行私有库的管理
本文讲的是自己写的一个txt阅读器发布cocoaPods的过程:
1、在github上创建一个自己的公有仓库,并上传源码
2、在终端,cd到你的项目文件目录中,创建podspec文件:
1 | pod spec create CCReader-swift |
文件名最好与你的库名字一致,库名字最好不要与pods上其他库名字重复
创建成功后,项目文件目录下会多一个xxxxx.podspec的文件,这个相当于pods仓库的配置文件,配置内容具体如下:
1 | $ edit CCReader-swift.podspec |
1 | # Pod::Spec.new do |s| |
1 | # s.resource_bundles = { |
然后将代码提交。
这个配置文件的配置内容很重要,配置的对错,会决定你的代码能否成功的推送到pods
3、为你的code打上tag版本号
1 | git tag '0.0.1' |
版本号自己确定,与podspec配置文件内的版本号 s.version 相匹配
4、spec配置文件检查
1 | pod spec lint Peanut.podspec |
如果不执行第三部会出现以下错误
- ERROR | [iOS] unknown: Encountered an unknown error ([!] /usr/bin/git clone https://github.com/enamor/CCReader-swift.git /var/folders/wr/gy6rn23x3vjgq81nyp493xzw0000gn/T/d20181125-2550-1yinelx –template= –single-branch –depth 1 –branch 0.0.1
5、如果是swift语言开发的会出现如下提示
the validator used Swift 3.2 by default because no Swift version was specified.
同时可能会出现如下等语法错误
- ERROR | [iOS] xcodebuild: /Users/zhouen/Desk。。。。
那么究竟可以如何修复这个问题呢?CocoaPods 为此发布了一个修正版。在 lint 时你被要求必须指定 Swift 版本。为了这么做,你必须得创建一个名为 .swift-version
的新文件,并添加编译器版本。只需简单地输出以下命令:
在项目目录下进行如下命令
1 | echo "4.2" >> .swift-version |
现在再次运行 pod lib lint
,你应该能够得到一条通过验证的消息:
4、注册trunk
1 | pod trunk register xxxx@xxxx.com 'xxxx' --description='xxxx' --verbose |
1 | 查看自己的信息: |
添加其他维护者
1 | pod trunk add-owner xxxxxxx xxxxx@xxxx.com |
5、提交到CocoaPods trunk
1 | pod trunk push --allow-warnings |
该操作会对本地的代码及podspec配置文件进行检查,允许警告WARN但不允许报错ERROR
也可以自己手动检查
1 | pod lib lint --allow-warnings |
如果是在项目文件目录下pod lib lint后面不需要跟xxxxx.podspec文件名,–allow-warnings是允许警告
🎉 Congrats
🚀 CCReader-swift (0.0.1) successfully published
📅 November 25th, 21:55
🌎 https://cocoapods.org/pods/CCReader-swift
👍 Tell your friends!
-——————————————————————————-
出现上面情况证明已经成功
6、上面的步骤成功之后
1 | pod search 你的库名 |
就能搜索到了
6、接下来是更新代码,然后推送到pods的流程。
我的代码库里只是一些零散的文件,由于推送到pods的代码不能报错,所以我这里是新建了一个空项目,然后把公共依赖的文件放到一个文件夹内Classes(名字随意),拖到项目中,在提交的时候先编译一下,确保没有报错。
这样做的同时podspec里
1 | s.source_files的配置也要改为指定的文件目录:项目名/Classes/**/*.{h,m,swift} |
本地文件改动后,提交到git
7、然后重复步骤3,为你的代码打上tag,并推送tag(tag不能重复)
8、然后步骤5推送到trunk,这一步检查的时候很容易失败,报出的错误可以翻译过来针对性的找一下问题,基本意思都很明确
以后在每个项目中之需要在Podfile文件中增加自己的库,然后
pod install
每次有更新 pod update 你的库名