本文主要记录了SVN和Cocoapods的配合使用, 为组件化工作的基础部分. 目录如下:
- SVN目录说明
- 配置ComponentSpecs
- 配置podspec
- 推送podspec
- 发布framework
SVN目录说明
SVN上需要两个目录, 一个用来存放具体的开发文件(ComponentProject
, 图中该目录下的TestTool为测试项目), 另一个用来存放podSpec文件(ComponentSpecs
).
配置ComponentSpecs
要想通过pod search
命令搜索到上述目录中我们自己开发的库, 必须将ComponentSpecs
加入cocospods的索引目录.
通过下面的终端命令安装cocoapods的svn插件:
`gem install cocoapods-repo-svn `
安装完成后, 终端执行下面的命令:
pod repo-svn add ComponentSpecs your-svn-url
此时终端可能会提示svn报错(E170001), 输入下面的命令然后按照提示输入svn账号密码即可:
svn info --username svnname --password --no-auth-cache your-svn-url
执行add命令成功后, 终端执行:
pod repo
该命令可以显示本地pod的repo列表, 添加ComponentSpecs
成功的话终端输出中会包含:
配置podspec
按照上面的svn目录图, 我们会在trunk中进行库的开发, 开发完成后通过tag发布供他人使用.
建议直接通过cocoapods命令完成库的创建, cd至目录ComponentProject
下级目录TestTool
, 执行:
pod lib create libName
按提示步骤创建完成后, 打开TestTool.podspec
文件,重点编辑以下项:
1 | //本次要发布的版本号 |
注意, 这里需要将目录结构调整为上图中的结构(删除git相关的隐藏文件, 将创建的文件移动至TestTool
目录下).
然后按照cocoapods库的正常开发流程进行开发即可.
推送podspec
开发完成后, 提交代码到svn, 然后需要将TestTool.podspec
推送到ComponentSpecs
以便进行索引, cd到trunk目录下执行以下命令:
pod repo-svn push ComponentSpecs TestTool.podspec
由于之前指定的svn路径中包含了tag版本号, 所以需要在svn中tag出对应的版本:
此时, 在终端中执行搜索:
pod search TestTool
可以看到:
在需要使用该库的项目的podfile文件中加入
pod 'TestTool', '~> 0.3.0'
即可.
发布framework
通过以下命令安装cocoapods的打包插件:
gem install cocoapods-packager
在库开发完成后, 通过以下命令打包成framework:
pod package TestTool.podspec
大体发布流程与上述相同, 区别在于生成TestTool.framework
文件后, 需要通过pod lib create
新创建一个专用于发布的lib项目, 然后在其podspec文件中加入:
s.vendored_frameworks = 'TestTool/*.{framework}'
然后按照之前的流程推送发布这个新项目即可, 此时其他用户使用该库就只能看到一个framework文件了: