众所周知,pod已经成为了iOS库管理的事实标准。不论是用到第三方库,还是发布自己的库都不可避免的用到pod。
pod本身并不提供代码或库的托管,而仅仅是维护一个索引工程。每一条索引其实就是一个被称为podspec的配置文件,这个配置文件一般由库的开发者提交。podspec文件里包含库的基本信息,其中最重要的就是指定了库的存放地址,这些开源库的地址一般都托管在github上。
当用户使用pod install命令安装一个第三方库时,pod会从索引工程上拉取索引目录,并从目录中搜索对应的工程。找到工程对应的podspec配置文件,最后从指定地址下载第三方库。
这个流程并不复杂,今天我们就尝试自己开发framework,并以库而非源码的方式上传到pod。
0x00 创建Test.framework并上传github
跳过创建git项目,framework工程及编码阶段,现在假设我们已经得到了Test.framework静态库,存放在Test目录下的frameworks文件夹,并上传到github中。
下面是比较重要的一步,因为pod通过tag识别版本号,所以需要打上tag。
git tag -a 1.0.0 -m 'release 1.0.0'
git push origin --tags
0x01 创建podspec
进入Test文件夹,创建podspec:
pod spec create Test
本地会创建好一个Test.podspec文件,打开文件可以看到一些设置和详细的提示。略过版本号描述之类,需要注意是一下几点。
source指定库工程所在git地址:
s.source = { :git => "https://github.com/worthyzhang/Test.git", :tag => "#{s.version}" }
source_files指定包含的源文件:
s.source_files = "Classes", "Classes/**/*.{h,m}"
如果想以framework而非源码形式提供,需要指定framework所在工程相对目录:
s.vendored_frameworks = "frameworks/Test.framework"
设置完成后,通过pod spec lint 检查是否有错误:
pod spec lint Test.podspec
如果要上传到pod的索引工程,有一些可能平时不大注意的点如License,项目描述等都需要我们配置好。
0x02 pod trunk上传到pod索引工程
首先,需要用邮箱创建一个账号,需要注意的是pod的用户登录不是通过用户名和密码,而是邮箱和验证邮件,可以理解为现在常用的手机验证码登录:
pod trunk register worthyzhang@gmail.com 'worthy' --description='worthy's macbook pro' --verbose
之后会收到一封验证邮件,验证后就可以通过pod trunk me 查看用户信息:
pod spec me
最后,向索引工程推送我们的podspec:
pod trunk push Test.podspec
你可能会看到一些错误如License文件没指定,存在警告之类的,这些都是正常的。解决完所有错误后,再来一次,如果收到成功提示,那就说明完成了。
0x03 验证
创建test工程,编写pod文件,这些我们都已经驾轻就熟了。在pod install之前,需要先执行:
pod update
先更新一下本地的索引目录,然后在执行:
pod install
不出意外,工程里应该已经集成好了我们编写的库。最后,记得把Test工程的修改也push到远程。
网友评论