使用CocoaPods创建私有仓库Spec Repo

2018-02-12 10:52:30来源:https://www.jianshu.com/p/6132cd2f1671作者:爱自由鹏人点击

分享


目标:使用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完成。




Spec Repo目录.png

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


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

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


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


pod lib create WPTestColor

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




创建组件库问题.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文件,所以冲突了,如下图。




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' => '841987035@qq.com' }
s.source = { :git => 'https://gitee.com/aiziyoupeng/WPTestColor.git', :tag => s.version.to_s } #仓库地址
# s.social_media_url = 'https://twitter.com/<TWITTER_USERNAME>'
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个错误,如下图,




podspec错误.png

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


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

再次验证:


pod lib lint

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




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上去了。




podspec同步push到远端仓库.png

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




搜索刚创建的pod库.jpg

⚠️注意:如果搜索

最新文章

123

最新摄影

闪念基因

微信扫一扫

第七城市微信公众平台