029-使用cocoapods和svn管理组件

2018-09-25  本文已影响111人  AncientMing

1.安装 cocoapods-repo-svn 插件(参考 https://github.com/dustywusty/cocoapods-repo-svn

$ gem install cocoapods-repo-svn (如果出现权限问题在指令前添加sudo)

2.制作基于 svn 的私有 sepc repo

使用 svn 管理,先在 svn 服务器上新建一个放 spec 的远程仓库,本文以 yuntuchelian 命名,该仓库不需要创建标准的 trunk、tags、branches 目录,仅仅是放组件的 spec 文件的。(下图为svn目录)

image.png

使用该 yuntuchelian svn 地址建立私有 repo,命令行操作如下 pod repo-svn add yuntuchelian svn地址

使用pod repo查看repo信息和路径(如下图)

image.png

3.基本的组件化的创建

3.1 建立UserCenterModule的组件私有库(下图svn目录)

image.png

使用 svn 管理,先在 svn 服务器上新建一个 UserCenter 的仓库,因为是代码文件且需要使用 tag,所以使用标准的 trunk、tags、branches 目录

3.2 使用 pod lib create UserCenterModule 命令来下载带有默认模板的库,之后基于默认模板进行修改,使用该命令后最回答几个问题,分别是姓名、邮箱(用于 spec 文件中的作者信息)、选择语言(有 Swift 和 ObjC,这里选择 ObjC)、是否需要 demo 工程(这个是需要的,利用这个 demo 进行组件测试)、选择测试库(这里选 None)、do view based testing(这里选 No)

在 Finder 中,将 UserCenterModule 的核心文件复制到 demo 工程中的 UserCenterModule 下 Classes 文件夹下,并删除模板文件 ReplaceMe.m,其中 Assets 文件夹下放与该组件有关的图片等资源文件(文件中的.git等开头的文件删除)
注意:Classes目录文件里不要放.xcassets文件

image.png

命令行中 cd Example 工程目录下,pod install 来更新工程的 CRProtocolManager 核心代码

该工程目录下 Podfile 文件中 pod 'CRProtocolManager', :path => '../' ,指向的外层文件夹下的 CRProtocolManager.podspec 文件,因此可以这样添加删除文件后使用pod install 来更新核心代码到工程里

3.3 添加完核心代码后,更改 UserCenterModule.podspec 文件(详细UserCenterModule.podspec文件内容在svn中查看)

一个是 s.version 这个和 svn 要打 tag 的编号是一致,例如s.version = ‘1.0.1’
一个是 s.source = {:svn =>'svn地址', :tag => s.version.to_s },原来 s.source 是 git 地址,这里改为 svn 地址,指向 svn 代码仓库。
s.source_files、s.license、s.name(名字和svn仓库名、创建的组件名最好统一)可保持不变
s.summary、s.description、s.homepage、s.author 这些描述性的信息按需修改

3.4 将更改好的、测试好的组件提交到 svn UserCenter 仓库 trunk 下,注意:如果模板中有 .git 等文件夹删掉。(我们使用的是 Cornerstone 管理工具)

对代码进行打 tag,且编号为 1.0.1,与 spec 文件里的 s.version 一致。

3.5 将 UserCenterModule.podspec 文件提交到之前制作好的私有 sepc repo 中

cd 到 UserCenterModule.podspec 所在目录,使用pod repo-svn push yuntuchelian UserCenterModule.podspec

此时 svn 仓库和 本地.cocoapods/repo/yuntuchelian 下都有 UserCenterModule.podspec

image.png

可在此之前进行 spec 文件有效性检查,pod repo-svn lint UserCenterModule.podspec

此时使用pod search UserCenterModule可以查看组件信息

4.使用 UserCenterModule 的私有库组件

xcode 新建一个工程,使用pod init创建 Podfile 文件

Podfile文件内容如下(以AF和UserCenterModule为例:)

注意:UserCenterModule的svn链接与上面UserCenterModule.podspec文件中的source链接一致

image.png

直接使用pod install 即可安装 UserCenterModule 私有组件

image.png

踩过的坑:

一:podspec中的source链接填写到svn中trunk,tags等所在的根目录就行(如下图:)

image.png

二:当修改了UserCenterModule.podspec文件重复3.5不会更新svn 仓库和 本地.cocoapods/repo/yuntuchelian下的podspec文件(因此修改podspec文件后最好修改下target,重复3.4和3.5步骤)

三:使用cocoapods下载来的组件目录没有子目录

要想实现UserCenterModule目录下包含Login和ScanLogin目录需要使用subspec来实现目录分层

image.png

UserCenterModule.podspec中subspec写法如下

image.png

四:修改完UserCenterModule.podspec最好进行 spec 文件有效性检查,pod repo-svn lint UserCenterModule.podspec否则会导致pod install不下来UserCenterModule文件。

五:如果pod search UserCenterModule搜索不到,可到/user/mac02/Library/Caches/CocoaPods下删除 search_index.json 文件后重试。

六:库包之间引用需要导入库包和添加路径(如下图CommonalityModule需要引用其它库需要导入其它四个framework)选中pods添加路径

image.png image.png

参考文章:

基于 svn 服务器及 cocoapods-repo-svn 插件进行组件化私有库的创建

编写podspec文件

上一篇下一篇

猜你喜欢

热点阅读