美文网首页
029-使用cocoapods和svn管理组件

029-使用cocoapods和svn管理组件

作者: AncientMing | 来源:发表于2018-09-25 17:45 被阅读111次

    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文件

    相关文章

      网友评论

          本文标题:029-使用cocoapods和svn管理组件

          本文链接:https://www.haomeiwen.com/subject/xabloftx.html