基于GitLab创建CocoaPods私有库

1、概述
CocoaPods是iOS,Mac下优秀的第三方包管理工具,给我们项目管理带来了极大的方便。个人或公司在开发过程中,会积累很多可以复用的代码包,有些我们不想开源,又想像开源库一样在CocoaPods中管理它们,那么通过gitLib创建私有仓库来管理代码就很必要。

2、概念

  • Code Repository是代码仓库,包代码上传到这个仓库。
  • Spec Repository是配置仓库,所有的配置按照包名、版本号分门别类的存放在这个仓库。这个仓库只用来存放.Podspec文件,不存放代码。

3、实现思路
创建私有的CocoaPods仓库之前需要先制作CocoaPods依赖库,所以步骤分两步:

  • 创建私有CocoaPods仓库,也就是版本库。
  • 创建CocoaPods依赖库,也就是代码库。

4、实现步骤

  • 创建版本库
    *** GitLab创建Specs Repo仓库
    *** 在终端把远程的私有版本库添加到本地索引
    $ pod repo add MySpecs http://gitlab.xxx.com/xx/MySpecs.git
    这时,~/.cocoapods/reposrepos下会生成文件夹CCSpecs

  • 创建代码库

    • 先cd到要创建项目的目录然后执行$ pod lib create MyCategory
What platform do you want to use?? [ iOS / macOS ]
 > iOS
What language do you want to use?? [ Swift / ObjC ]
 > ObjC
Would you like to include a demo application with your library? [ Yes / No ]
 > Yes
Which testing frameworks will you use? [ Specta / Kiwi / None ]
 > None
Would you like to do view based testing? [ Yes / No ]
 > No
What is your class prefix?
 > My

在回到Example路径下,重新执行pod install操作$ pod install

  • 通过Cocoapods创建出来的目录本身就在本地的Git管理下,我们需要做的就是给它添加远端仓库,同样去GitLab拿到HTTP地址,然后cd到MyCategory目录
$ git add .
$ git commit -s -m "Initial Commit of Library"
  • 编辑podspec文件,直接双击MyCategory.podspec文件打开进行编辑
Pod::Spec.new do |s|
  s.name         = "MyCategory" #名称
  s.version      = "0.1.0"        #版本
  s.summary      = "常用类别"      #简介
  s.description  = "集合了开发中常用的类别,包括NSSting、UIView、NSObject、NSArray、NSDictionary……"  #详细描述
  s.homepage     = "http://gitlab.xxx.com/xx/MyCategory"   #主页地址
  #
  s.license      = { :type => 'MIT', :file => 'LICENSE' }         #开源协议
  # s.license      = { :type => "MIT", :file => "FILE_LICENSE" }
  #
  s.author             = { "iBlocker" => "[email protected]" }     #作者
  # Or just: s.author    = "iBlocker"
  # s.authors            = { "iBlocker" => "MyCategory" }
  #
  # s.platform     = :ios
   s.platform     = :ios, "8.0"  #支持的平台及版本
  #  When using multiple platforms
  # s.ios.deployment_target = "5.0"
  # s.osx.deployment_target = "10.7"
  # s.watchos.deployment_target = "2.0"
  # s.tvos.deployment_target = "9.0"
  #
  #  代码地址
  s.source       = { :git => "http://gitlab.xxx.com/xx/MyCategory.git", :tag => s.version.to_s }
  #  代码源文件地址,**/*表示Classes目录及其子目录下所有文件,如果有多个目录下则用逗号分开,如果需要在项目中分组显示,这里也要做相应的设置
  #  s.source_files  = "MyCategory", "MyCategory/**/*.{h,m}"
  s.subspec 'Foundation' do |ss|
    ss.source_files = 'MyCategory/Classes/Foundation/*.{h,m}'
    ss.dependency 'MyCategory/UIKit'
  end
  s.subspec 'UIKit' do |ss|
    ss.source_files = 'MyCategory/Classes/UIKit/*.{h,m}'
  #    ss.dependency 'MyCategory/Foundation'
  end
  #  s.exclude_files = "MYCategory/Exclude"
  # s.public_header_files = "Classes/**/*.h"
  # s.resource  = "icon.png"  #资源路径
  # s.resources = "Resources/*.png"
  # s.preserve_paths = "FilesToSave", "MoreFilesToSave"
   s.framework  = "UIKit"  #使用到的系统库
  # s.frameworks = "UIKit", "Foundation"
  # s.library   = "iconv"
  # s.libraries = "iconv", "xml2"
   s.requires_arc = true      #是否使用ARC,如果指定具体文件,则具体的问题使用ARC
  # s.xcconfig = { "HEADER_SEARCH_PATHS" => "$(SDKROOT)/usr/include/libxml2" }
  # s.dependency "JSONKit", "~> 1.4"    #依赖关系,该项目所依赖的其他库,如果有多个需要填写多个s.dependency
  • 编辑完podspec文件后,需要验证一下这个文件是否可用,如果有任何WARNING或者ERROR都是不可以的,它就不能被添加到Spec Repo中,不过xcode的WARNING是可以存在的,验证需要执行一下命令$ pod lib lint
    当看到以下输出说明成功了
```
-> MyCategory (0.1.0)
​
MyCategory passed validation.
```
  • 因为podspec文件中获取Git版本控制的项目还需要tag号,所以我们要打上一个tag
$ git status
$ git add .
$ git commit -m '编辑spec文件'
#添加远端仓库 若已存在远端仓库,则跳过添加
$ git remote add origin http://gitlab.xxx.com/xx/MyCategory.git
#提交到远端
$ git push origin master
$ git tag -m "first release" "0.1.0" (MyCategory.podspec文件中的tag值保持一致)
#推送tag到远端仓库
$ git push --tags
  • 向Spec Repo提交podspec注意

    • 向Spec Repo提交podspec必须确保podspec通过验证无误!!!
    • 按规范删掉无用的注释
  • 提交$ pod repo push MySpecs MyCategory.podspec

注:该内容非本人原创,流程已经验证,若有侵权,私信立删!

你可能感兴趣的:(基于GitLab创建CocoaPods私有库)