创建自己的CocoaPods的Spec仓库

来源:互联网 发布:iphone直播软件 编辑:程序博客网 时间:2024/05/22 08:28
 最近在研究CocoaPods用来管理公共代码和依赖库,在网上看了一些博文,有介绍CocoaPods的入门使用,Spec文件的制作以及使用私有的Spec文件和依赖本地包。本文将介绍如何创建自己的Spec仓库,如果还不知道CocoaPods的使用和Spec文件的编写,可以阅读以下几篇博文:
     
     用CocoaPods做iOS程序的依赖管理
     http://blog.devtang.com/blog/2014/05/25/use-cocoapod-to-manage-ios-lib-dependency/

   《如何编写一个CocoaPods的spec文件》
     http://ishalou.com/blog/2012/10/16/how-to-create-a-cocoapods-spec-file/

   《Cocoapods 入门》
     http://studentdeng.github.io/blog/2013/09/13/cocoapods-tutorial/

     CocoaPods进阶:本地包管理
     http://www.iwangke.me/2013/04/18/advanced-cocoapods/

     通过上面几篇博文,我们可以为自己的代码库编写spec文件,并且有以下四种方法来使用我们的spec文件:

     第一种:将spec文件放到本地一个目录中,在podfile文件中使用以下方法依赖
     pod 'versionlib', :podspec => '/Users/cvte/Gitlab/xcversionmanger/versionlib.podspec’
     
  第二种:将spec文件放在git上,在Podfile文件中使用以下方法依赖
     pod 'versionlib', :git => 'http://x.gz.cvte.cn/chenshuanglong/xcversionmanger.git'

  第三种:将spec文件放在一个目录下,在Podfile中使用以下方法进行依赖,该种方法和第一种方法区别在于pods将忽略spec文件的s.source项,也就是说使用这种方法,pods将不会去指定的源地址拉取源码,而是使用到指向的目录下获取源码,并且源码文件不会被拷贝到项目的Pods目录下,而是以引用的方法加入项目工程中。如果是多人开发,使用这种方法,其他开发人员将无法获取指定的源代码。
 pod'versionlib',:path=>'/Users/cvte/Gitlab/xcversionmanger’
  
     第四种:将spec文件放到cocoaPods的搜索目录下,pods在安装时会从CocoaPods的官方github上拉取所有的spec文件,并保存在~/.cocoapods目录下,我们可以在cocoapods的子目录repos/master/Specs下创建一个我们自己的项目并且spec放在该目录下:
     repos/master/Specs/versionlib/0.0.4
  其中目录versionlib名字必须和spec中的名字一致,后面0.0.4就是版本号,这样就可以在Podfile文件中使用以下方法进行依赖
   pod versionlib 0.0.4

     通过上述几种方法可以满足我们基本的需求,前三种podspec文件分散,不便于管理,使用个人的代码库比较方便。第四种方式在多人合作时,每个人都必须手动去生成相关的目录,如果podspec文件较多时管理将更麻烦。下面将介绍如何将我们的podspec文件进行统一的管理,做到类似官方形式的posec仓库。

     我们将所有podspec文件按照第四种方法进行组织,放在gitlab上,当然你也可以放在其他平台上,这里我放在公司内部gitlab上,目录结构如下:

      


     然后执行pod repo add cvterepo http://x.gz.cvte.cn/chenshuanglong/cvte_specs.git 

     执行完成之后pod将会从git上clone podspec文件列表,保存在master同级目录下,这样的话就可以使用第四种方法去依赖私有库,podspec文件的维护,大家可以使用git去管理,也可以使用pod提供的命令去管理。

     使用pod命令管理主要是使用pod repo命令如下:

     pod repo push REPO_NAME SPEC_NAME.podspec

     执行该命令,pod将首先进行podspec文件验证,如果验证通过后,才会上传到git仓库中,如果没有权限则要输入用户名和密码。该命令会再git项目的根目录,创建以SPEC_NAME为名字的目录,并按版本号创建子目录,如果版本不同,则会创建对应的版本目录。这个过程不像上面使用git方式需要自己创建版本目录。

     个人推荐使用官方的pod repo命令进行仓库的管理,在git创建项目之后将项目组的其他人员加入到项目即可,这样大家就可以向podspec仓库提交podspec文件了。这里需要注意的是,在使用时,pod将优先查找自定义的仓库,在去查找master仓库,所以要注意podspec文件不要和网络上的冲突,最好在库名字前加入私有的前缀。
0 0
原创粉丝点击