CocosPods是一个负责管理IOS项目中第三方开源代码的工具,使用这个工具可以有利于我们对项目中引用第三方类库的管理。
CocosPods是一个工具,不是插件,安装一次即可。新项目想使用pod只需要cd到项目路径然后pod init会创建出一个Podfile文件。按需要编辑此文件然后pod install此项目即可使用pod。
以下是CocosPods的安装和使用说明
1.CocoaPods的安装
需要用到ruby,Mac 系统自带Ruby,但如果不是最新的系统最好更新一下。
ruby的软件源rubygems.org被墙了,所以换一下源,命令行下依次执行3调命令
$ gem sources -remove --remove https://rubygems.org/
$ gem sources -a https://ruby.taobao.org/ (备注:之前是http,现在需要改成https)
$ gem sources -l
然后升级gem
$sudo gem update --system
完了就开始安装CocoaPods
$ sudo gem install cocoapods (如果安装失败:sudo gem install -n/usr/local/bin cocoapods)
$ pod setup
出现Setting up CocoaPods master repo,半天没有任何反应。原因无他,因为那堵墙阻挡了cocoapods.org。。。
gitcafe和oschina都是国内的服务器,可以用它们CocoaPods索引库的镜像:
$ pod repo remove master
$ pod repo add master https://gitcafe.com/akuandev/Specs.git
$ pod repo update
如果想用oschina的镜像也可以把第二条命令 换成 http://git.oschina.net/akuandev/Specs.git 即可
第二条命令执行的时候会比较耗时,这个时候要去把整个specs仓库clone一下,下载到 ~/.cocoapods里;
cd 到该目录里,用du -sh *命令来查看文件大小。
2. CocoaPods的使用
2.1 在终端中cd 来到要管理的工程,运行:pod install 工程中就多了个xworkspace文件夹,以后要使用这个来打开工程
2.2 添加第三方库
#pod search AFNetworking
在工程目录里创建一个Podfile文件用来配置需要添加的第三方库
如果工程里只包含一个Target那么配置很简单如下:
platform :ios,"8.0"
#AFNetworking pod
pod "AFNetworking", '~>2.6.0'
pod 'Masonry'
pod "FastttCamera/Filters"
pod 'Bugtags'
如果是包含多个target的情况需要为每一个target进行配置,如下
#配置默认 xcodeproj,路径相对于podfile的路径,这个必须配置
xcodeproj ‘工程名.xcodeproj’
#配置Target
target :target1 do
#Target属于的工程
xcodeproj '工程名.xcodeproj'
platform :ios,"8.0"
#AFNetworking pod
pod "AFNetworking", '~>2.6.0'
pod 'Masonry'
pod "FastttCamera/Filters"
pod 'Bugtags'
end
target :target2 do
#Target属于的工程
xcodeproj '工程名.xcodeproj'
platform :ios,"8.0"
#AFNetworking pod
pod "AFNetworking", '~>2.6.0'
pod 'Masonry'
pod "FastttCamera/Filters"
pod 'Bugtags'
end
3.CocoaPods使用注意事项
3.1 最近使用CocoaPods来添加第三方类库,无论是执行pod install还是pod update都卡在了Analyzing dependencies不动,
原因在于当执行以上两个命令的时候会升级CocoaPods的spec仓库,加一个参数可以省略这一步,
命令如下:
pod install --verbose --no-repo-update pod update --verbose --no-repo-update
pod install只会按照Podfile的要求来请求类库,如果类库版本号有变化,那么将获取失败。
但是 pod update会更新所有的类库,获取最新版本的类库。每次用pod update就行。
(2)工程在模拟器上编译报错,不支持i386,Cocoapods确实还不支持64位模拟器,解决办法:
build active architecture only 在debug的时候设置成YES,不要在release的时候用模拟器
other linker flags 加一个(inherited)
用到svn,git多人协作的话,Pods/这个文件夹不要上传,…/Pods/Pods.xcodeproj …Pods/Target Support Files/这些每次编译都会改动从而引起合并代码的时候冲突
不翻墙执行:
pod install --verbose --no-repo-update
4. pod 导入第三方库出现问题的解决方案
4.1. #import 没有智能提示
解决方案:target ->BuildSettings->search Paths->User Header Search Paths->点击“+”号添加一项
$(PODS_ROOT) 设置为recursive
4.2. 编译报错 linker command failed with exit code 1 (use -v to see invocation)
定位到 Pods, 将build active architecture only设置为 NO.
4.3.ignore 文件不生效
原因:之前提交过该文件, git 已经对其版本控制(track状态),所以 ignore 不生效
解决:删除该文件的版本控制(改变成未track状态),再提交即可
git rm -r --cached .
git add .
git commit -m 'update .gitignore'
5. Cocoapods降低版本及卸载
有的时候我们需要降低Cocoapods的版本来解决第三方库的兼容问题.
5.1 移除pod组件
这条指令会告诉你Cocoapods组件装在哪里 :
$ which pod
你可以手动移除这个组件 :
$ sudo rm -rf <path>
5.2 移除 RubyGems 中的 Cocoapods程序包
Q: RubyGems是什么?
A: RubyGems(简称 gems)是一个用于对 Ruby组件进行打包的 Ruby 打包系统。 它提供一个分发 Ruby 程序和库的标准格式,还提供一个管理程序包安装的工具。
查看gems中本地程序包
$ gem list
输出
*** LOCAL GEMS ***
activesupport (4.1.8, 3.2.21)
bigdecimal (1.2.0)
CFPropertyList (2.2.8)
claide (0.7.0)
cocoapods (0.35.0, 0.34.1, 0.34.0)
cocoapods-core (0.35.0, 0.34.1, 0.34.0)
cocoapods-downloader (0.8.0, 0.7.2)
cocoapods-plugins (0.3.2)
cocoapods-trunk (0.4.1, 0.2.0)
cocoapods-try (0.4.2)
colored (1.2)
escape (0.0.4)
fuzzy_match (2.0.4)
i18n (0.6.11)
io-console (0.4.2)
json (1.7.7)
json_pure (1.8.1)
libxml-ruby (2.6.0)
minitest (5.4.3, 4.3.2)
molinillo (0.1.2)
multi_json (1.10.1)
nap (0.8.0)
netrc (0.7.8)
nokogiri (1.5.6)
open4 (1.3.4)
psych (2.0.0)
rake (0.9.6)
rdoc (4.0.0)
sqlite3 (1.3.7)
test-unit (2.0.0.0)
thread_safe (0.3.4)
tzinfo (1.2.2)
xcodeproj (0.20.2, 0.19.4)
发现Cocoapods的程序包
cocoapods (0.35.0, 0.34.1, 0.34.0)
cocoapods-core (0.35.0, 0.34.1, 0.34.0)
cocoapods-downloader (0.8.0, 0.7.2)
cocoapods-plugins (0.3.2)
cocoapods-trunk (0.4.1, 0.2.0)
cocoapods-try (0.4.2)
5.3 移除程序包
$ sudo gem uninstall cocoapods -v 0.35.0
输出
Successfully uninstalled cocoapods-0.35.0
$ sudo gem uninstall cocoapods-core -v 0.35.0
输出
Successfully uninstalled cocoapods-core-0.35.0
然后安装指定版本的Cocoapods
$ sudo gem install cocoapods -v 0.34.4
安装成功后
$ pod --version
输出
0.34.1
如果遇到You don’t have write permissions for the /usr/bin directory这个问题那么直接使用
sudo gem install cocoapods -n /usr/local/bin这个命令安装就行