Spec Repo
什么是Spec Repo?其实它只是pods的一个索引,也就是一个容器,所有公开的pods都在这个里面,https://github.com/CocoaPods/Specs.git
它实际是一个Git残酷remote端口,当你使用了Cocoapods后它会被默认的clone到本地~/.cocoapods/repos
下的master文件夹下,这个就是官方的Spec Repo。注意在安装Cocoapods的时候,可能会在安装官方的Spec Repo文件会失败,但是并不会影响pod的使用,并且不会提示任何错误,但是在执行pod install或者search等命令会提示失败,这个会自动重新请求clone官方Spec Repo到本地。会出现如下:
1 | Setting up CocoaPods master repo |
这个过程时间会比较长。其文件结构如下,每个库都应的都有多个version,每个version下面有tag对应的.podspec文件:
1 | CocoaPods-version.yml ...... |
CocoaPods
iOS 最新版 CocoaPods 的安装流程
1.移除现有Ruby默认源
$gem sources –remove https://rubygems.org/
2.使用新的源
$gem sources -a https://ruby.taobao.org/
3.验证新源是否替换成功
$gem sources -l
4.安装CocoaPods
(1) $sudo gem install cocoapods
备注:苹果系统升级 OS X EL Capitan 后改为 $sudo gem install -n /usr/local/bin cocoapods
(2) $pod setup
5.更新gem
$sudo gem update –system
- 新建工程,并在终端用cd指令到文件夹内
$pod search 第三方
问题
错误1:
Error fetching http://ruby.taobao.org/:
bad response Not Found 404 (http://ruby.taobao.org/specs.4.8.gz)
解决方案:把安装流程中 $gem sources -a http://ruby.taobao.org/ —改为—-> $gem sources -a https://ruby.taobao.org/
错误2:
ERROR: While executing gem … (Errno::EPERM)
Operation not permitted - /usr/bin/pod
解决方案:苹果系统升级OS X EL Capitan后会出现的插件错误,将安装流程 4.安装CocoaPods 的 (1)sudo gem install cocoapods ——>改为sudo gem install -n /usr/local/bin cocoapods
错误3:
[!] Unable to satisfy the following requirements: - AVOSCloud (~> 3.1.6.3)
required by Podfile
Specs satisfying the AVOSCloud (~> 3.1.6.3)
dependency were found, but they required a higher minimum deployment target.
解决方案:安装流程:Podfile文件 中 platform:ios, ‘6.0’ 后边的 6.0 是平台版本号 ,一定要加上
创建podfile
使用终端进入项目所在的目录,输入touch podfile命令,会看到该目录下面创建了一个podfile文件,修改podfile文件添加
1 | platform:ios, '7.0' |
在终端中输入pod install 命令,会看到到同目录下面创建了一个xcworkspace的工程。
创建私有Spec Repo
看了官方的Spec Repo后,我们需要创建一个类似的~/.cocoapods/repos
的master的Spec Repo文件,这里我们可以fork官方,也可以自己创建。建议自己创建比较好,由于官方的东西实在是太多。执行后会生成TwwSpecs.podspec文件,需要在自己的github上创建一个repositories。然后修改项目文件TwwSpecs.podspec内容
1 | pod repo add TwwSpecs https://github.com/Tweiwei497435786/TwwSpecs.git |
创建成功后你会看到在~/.cocoapods/repos
目录生成了一个TwwSpecs
文件夹,那么这个就是我们私有的Spec Repo文件了。需要注意的就是如果项目中有其他同事共同开发的话,你还要给他这个Git仓库的权限。
创建pod库
创建pod库参考创建私有pod库。创建私有pod库成功后,会看到如下的目录内容:
1 | tree TwwTest -L 2 |
需要注意的是我们需要修改TwwTest.podspec文件的相关内容最低版本,包括真实的目录路径。
1 | s.version = '0.1.0' |
关于TwwTest.podspec各项表示的意思,参考官网内容。在这里需要注意的是s.version
默认了版本,在此时我们需要手动创建tag:
1 | git tag -m "first add tag" "0.1.0" //创建tag,并提交信息 |
操作成功后,我们需要将创建好的私有pod库提交到我们私有Spec Repo中进行管理,在terminate中输入:
1 | pod repo push TwwSpecs TwwTest.podspec --allow-warnings//将私有pod库TwwTest的TwwTest.podspec提交到私有repo中管理TwwSpecs,允许警告出现。 |
经过上面的操作那么,我们就将TwwTest的pod库的0.1.0的tag放到TwwSpecs的私有repo中进行管理。
维护私有podspec
需要注意的是,每次我们更改私有的pod库之后,在打上tag之前,我们需要修改私有pod库TwwTest的TwwTest.podspec文件,更改version信息版本:
1 | s.version = '0.1.0' |
同时需要为私有pod库打上tag
1 | git tag -m "first add tag" "0.1.1" //创建tag,并提交信息 |
然后需要push到specs中进行管理:
1 | pod repo push TwwSpecs TwwTest.podspec --allow-warnings//将私有pod库TwwTest的TwwTest.podspec提交到私有repo中管理TwwSpecs,允许警告出现。 |
此时如果其他协同开发人员遇到,找不新的版本问题,需要其他开发人员本地操作:
1 | pod update repo |
项目引用
在我们的主要项目中的podfile文件加入以下内容:
1 | source 'https://github.com/Tweiwei497435786/TwwSpecs.git' |
问题
遇到pod repo布署更新的时候会遇到pod repo 不成功的情况,一般情况下会存在以下问题。
1.遇到警告导致repo不成功,此时我们可以使用以下–allow-warnings修饰.
1 | pod repo push TwwSpecs TwwTest.podspec --allow-warnings --verbose //允许警告,并且打印出详细的verbose信息 |
2.由于使用了libiries的情况下我们需要在podspec里面添加相应的内容。
1 | s.libraries = "c++","z" //表示要使用c++,libz的库 |
3.出现了以下问题的时候:
1 | include of non-modular header inside framework module |
在repo的时候需要加上–use-libraries修饰
1 | pod repo push TwwSpecs TwwTest.podspec --allow-warnings --use-libraries --verbose |