0%

SVN+Cocoapods

本文主要记录了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
2
3
4
5
6
7
8
//本次要发布的版本号
s.version = '0.3.0'
//svn路径
s.source = {
:svn => 'your-svn-url/ComponentLibrary/ComponentProject/TestTool',
:tag => s.version.to_s
}

注意, 这里需要将目录结构调整为上图中的结构(删除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文件了: