使用CocoaPods创建私有仓库Spec Repo

目标:使用CocoaPods创建私有Spec Repo管理者【1】,来管理通用组件【2】。


前提:日常开发中,不同项目中都会用到一些通用方法,我们就可以封装成通用的组件,就可以通过Cocoapods来引入开发,十分方便。
下面,我就把自己写好的 UIColor+WPColor 这个分类制作成组件,通过pod来引入。


一、创建私有Spec Repo管理者(~/.cocoapods/repos)

1、我在开源中国https://gitee.com里创建一个WPSpecRepo仓库(你也可以在Coding或者Gitlab等地方创建)。

2、创建Spec Repo:

# pod repo add [Private Repo Name] [GitHub HTTPS clone URL]
pod repo add WPSpecRepo https://gitee.com/aiziyoupeng/WPSpecRepo.git

此时如果成功的话进入到 ~/.cocoapods/repos 目录下,就可以看到WPSpecRepo这个目录了。至此第一步创建私有Spec Repo完成。

使用CocoaPods创建私有仓库Spec Repo_第1张图片
Spec Repo目录.png

总结:我们必须创建这个仓库管理者,才能管理各个组件,它是一个大集合、pods容器。


二、创建Pod的所需要的项目工程文件,并且有可访问的项目版本控制地址

1、还是在开源中国https://gitee.com里,再创建一个WPTestColor仓库,用来提交UIColor+WPColor代码的。

2、切换到一个目录,可以切换到桌面,在桌面上创建WPTestColor组件库:

pod lib create WPTestColor

之后终端会问你几个问题,按你需要回答就行了,如下图:

使用CocoaPods创建私有仓库Spec Repo_第2张图片
创建组件库问题.png

3、把UIColor+WPColor文件放入Pod/Classes中(里面有个ReplaceMe.m替换掉,添加文件这个步骤其实可以在全部配置完毕之后再进行,我就直接添加进去了)

4、切换到Example文件夹下,执行pod update命令,如果网慢的话可以执行pod update --verbose --no-repo-update命令。
注意:这里需要注意的是每当你向Pod中添加了新的文件或者以后更新了podspec的版本都需要重新执行一遍pod update命令。

5、记得再把目录切回到上一级目录WPTestColor目录下,把代码提交到远程仓库:

git add .  #添加文件
git commit -s -m "Initial Commit of Library"  #把代码提交到本地
git remote add origin https://gitee.com/aiziyoupeng/WPTestColor.git  #关联仓库

注意:git remote -v 命令可查看关联情况,如下图代表关联成功

关联仓库成功.png
git pull origin master --allow-unrelated-histories  #养成良好习惯,push代码之前先pull代码

注意:此处若不加--allow-unrelated-histories可能会有问题

解决冲突(如无冲突请忽略):我这在pull命令的时候产生冲突是因为两端都有Readme文件,所以冲突了,如下图。

使用CocoaPods创建私有仓库Spec Repo_第3张图片
Readme文件冲突.png

解决完冲突之后提交代码:

git add .  #添加文件
git commit -s -m "解决冲突"  #把代码提交到本地
git push origin master  #把本地代码提交到远端仓库(如无冲突直接执行此push命令,不需要再add和commit了)

因为podspec文件中获取Git版本控制的项目还需要tag号,所以我们要打上一个tag:

git tag -m "first release" 0.1.0
git push --tags  #推送tag到远端仓库

6、关联好仓库并提交完代码后,就可以开始编辑WPTestColor中的podspec文件了,它是一个Ruby的文件,可以用Sublime软件打开,把podspec文件修改成下面这样就可以了。

Pod::Spec.new do |s|
  s.name             = 'WPTestColor'      #名称
  s.version          = '0.1.0'            #版本号
  s.summary          = 'A Test Demo'      #简短介绍

# This description is used to generate tags and improve search results.
#   * Think: What does it do? Why did you write it? What is the focus?
#   * Try to keep it short, snappy and to the point.
#   * Write the description between the DESC delimiters below.
#   * Finally, don't worry about the indent, CocoaPods strips it!

  s.description      = 'The Category of Color'  #详细介绍

  s.homepage         = 'https://gitee.com/aiziyoupeng'  #你的主页,需要是有效地址
  # s.screenshots     = 'www.example.com/screenshots_1', 'www.example.com/screenshots_2'
  s.license          = { :type => 'MIT', :file => 'LICENSE' }
  s.author           = { 'peng' => '[email protected]' }
  s.source           = { :git => 'https://gitee.com/aiziyoupeng/WPTestColor.git', :tag => s.version.to_s }  #仓库地址
  # s.social_media_url = 'https://twitter.com/'

  s.ios.deployment_target = '8.0'  #支持的iOS系统版本

  s.source_files = 'WPTestColor/Classes/**/*'
  
  # s.resource_bundles = {
  #   'WPTestColor' => ['WPTestColor/Assets/*.png']
  # }

  # s.public_header_files = 'Pod/Classes/**/*.h'
  s.frameworks = 'UIKit', 'MapKit'  #所需的framework,多个用逗号隔开
  s.dependency 'AFNetworking', '~> 2.3'  #依赖关系,该项目所依赖的其他库,如果有多个需要填写多个s.dependency
end

7、编辑完并保存podspec文件后,需要验证一下这个文件是否可用,如果有任何WARNING或者ERROR都是不可以的,它就不能被添加到Spec Repo中,不过xcode的WARNING是可以存在的,验证需要执行一下命令:

pod lib lint

验证时我这里报了2个错误,如下图,

使用CocoaPods创建私有仓库Spec Repo_第4张图片
podspec错误.png

我们先解决第二个,说是项目默认的是Swift3.0,需要配置成我们需要的版本,执行:

echo "3.0" > .swift-version  #版本根据实际情况自己配置

再次验证:

pod lib lint

还有1个错误,如下图,报依赖库AFN的警告,直接用终端提供给我们的方法--allow-warnings忽略掉就行了。

使用CocoaPods创建私有仓库Spec Repo_第5张图片
podspec错误2.png

之后,再一次验证

pod lib lint --allow-warnings  #添加忽略命令进行验证

如下出现下图这个,就说明校验成功了:

podspec校验成功.png

8、向Spec Repo提交podspec

pod repo push WPSpecRepo WPTestColor.podspec --allow-warnings  #前面是本地Repo名字 后面是podspec名字(如果你上一步验证的时候有--allow-warnings,那么这个提交命令也要加--allow-warnings)

完成之后这个组件库就添加到我们的私有Spec Repo中了,可以进入到~/.cocoapods/repos/WTSpecs目录下查看

提交podspec.png

再去看我们的Spec Repo远端仓库,也有了一次提交,这个podspec也已经被Push上去了。

使用CocoaPods创建私有仓库Spec Repo_第6张图片
podspec同步push到远端仓库.png

至此,我们的这个组件库就已经制作添加完成了,使用pod search WPTestColor命令就可以查到我们自己的库了。

使用CocoaPods创建私有仓库Spec Repo_第7张图片
搜索刚创建的pod库.jpg

⚠️注意:如果搜索不到,请尝试如下方法,
先确认你本地仓库上面确实有你新创建的组件库,这时候可以先删除search缓存文件,命令为:rm ~/Library/Caches/CocoaPods/search_index.json,删除后从新执行pod search WPTestColor


三、如何使用WPTestColor

如下图,在需要使用项目工程的Podfile文件中添加source来源,才能正确的集成你的私有库。在团队开发中,别人在你配置好并提交代码后,才能clone下来你的私有库。

使用CocoaPods创建私有仓库Spec Repo_第8张图片
source源.png

以上为使用CocoaPods创建私有仓库的正确姿势,如在过程中遇到的问题,请随时留言交流。

==========================================================

补充:如何更新Podspec文件:

1、代码更新:

git add .
git commit -m '更新描述'
git push origin master

2、版本更新(版本更新 这一步非常重要,为更新索引库做准备)

git tag -a '新版本号' -m '注释'
git push --tags

3、修改Sepc
打开你的xx.podspec文件,将原本的版本号改为0.2.0,与刚刚的tag保持一致。
(如果代码确定没有问题的话,就不需要pod lib lint,直接执行第4步)

4、更新索引库

pod repo push 索引库名称 xxx.podspec --allow-warnings

5、别的电脑可以用pod repo update命令来使用仓库 (也可以用pod repo update 仓库名来更新指定仓库)

备注:

podspec转podspec.json格式:pod ipc spec LibraryName.podspec >> LibraryName.podspec.json

你可能感兴趣的:(使用CocoaPods创建私有仓库Spec Repo)