常用命令总结写在前面,具体分析往下看
# 检索框架
pod search 框架名关键字
# 创建项目,并cd到工程文件所在目录,创建Podfile文件
pod init
# pod install和pod update的选择(CocoaPods1.0.1之后)
# 安装框架,不会直接更新repo库
pod install
# 更新框架,如果不加--no-repo-update,默认会更新repo库
pod update [--verbose] --no-repo-update
Podfile文件内容(建议使用Xcode进行编辑)
# 支持的iOS系统的最低版本
platform:ios,'8.0'
# 忽略引入库的所有警告(强迫症者的福音啊)
inhibit_all_warnings!
# 使用framework(包含swift库就必须使用此设置,纯OC库可以不设置)
use_frameworks!
# 下面两行是指明依赖库的来源地址
source 'https://gitclub.cn/CocoaPods/Specs.git'
source '你自己的私有库镜像源'
# 做一些安装之前的更改
pre_install do |installer|
...
end
# 依赖目标一般为项目名称
# 针对MyApp target引入AFNetworking
# 针对MyAppTests target引入OCMock,
target 'MyApp' do
pod 'AFNetworking', '~> 3.0'
target 'MyAppTests' do
# ???
inherit! :search_paths
pod 'OCMock', '~> 2.0.1'
end
end
# ----------------以下命令一般采取系统默认设置,无特别需求无需设置----------------
# install! 这个命令是cocoapods声明的一个安装命令,用于安装引入Podfile里面的依赖库
install! 'cocoapods',
:deterministic_uuids => false,
:integrate_targets => false
# 默认情况下,我们不需要指定,直接使用与Podfile所在目录的工程名一样就可以了。如果要指定另外的名称,而不是使用工程的名称,可以这样指定
workspace 'MyWorkspace'
# 作用于哪个工程
project 'MyProject'
# 这个是cocoapods的一些配置,官网并没有太详细的说明,一般采取默认就好了,也就是不写.
post_install do |installer|
installer.pods_project.targets.each do |target|
puts target.name
end
end
# ----------------以上命令一般采取系统默认设置,无特别需求无需设置----------------
Cocopods工作原理图

Cocopods工作原理.png
检索第三方框架
- 检索命令
pod search 框架关键字
- 命令作用:从
本地缓存的第三方框架描述信息生成的检索文件中检索相关框架的信息 - 遇到的问题
- 问题描述:
Unable to find a pod with name, author, summary, or description matching 'xxx' - 解决方案:删除cocoapods索引文件
sudo rm ~/Library/Caches/CocoaPods/search_index.json - 问题描述:
安装第三方框架
- 使用Xcode新建一个工程
- 打开终端,
cd到工程目录下 - 生成
Podfile文件-
Podfile文件是使用ruby语法编写的框架依赖描述文件,就是告诉cocoapods需要下载哪些框架 -
Podfile文件配置语法详见Podfile语法参考(译) - 创建命令:
pod init - 使用
Xcodeorvim编辑器编辑Podfile文件 - 在终端中使用
vim编辑器编辑Podfile步骤-
vi podfile在vim编辑器中打开podfile文件 - 按
i键进入编辑模式 - 编辑完成后,按
esc键退出编辑模式 - 按
:wq组合键并回车退出vim编辑器 - 记得在Podfile文件的顶部加入下面的repo源地址:
source 'https://mirrors.tuna.tsinghua.edu.cn/git/CocoaPods/Specs.git' -
- Podfile示例
# 指定的repo镜像源 source 'https://mirrors.tuna.tsinghua.edu.cn/git/CocoaPods/Specs.git' # 最低支持的iOS版本 platform :ios, '8.0' # 依赖目标一般为项目名称 target '依赖目标' do # 以framework的形式使用第三方库 use_frameworks! pod 'AFNetworking', '~> 3.0' # 网络库 pod 'SDWebImage', '~>3.8' # 图片加载 pod 'SVProgressHUD' # Loading框 + 提示框 pod 'MJRefresh' # 下拉刷新 pod 'HandyFrame' # 使用frame布局 pod 'YYModel' # 模型转换 end
-
- 安装框架
// --verbose表示打印详细信息 // --no-repo-update表示不更新本地框架信息源 // 安装框架,此命令在新版本中不会更新索引库 pod install // 更新框架,防止更新索引库 pod update [--verbose] --no-repo-update - 遇到的问题
- 问题描述:
The dependency 'SSZipArchive', '~> 1.6.2' is not used in any concrete target. - 解决方案:指定依赖目标
- 从cocoapods 1.0.1
及后续版本必须明确指定依赖目标
# 依赖目标一般为项目名称 target '依赖目标' do# target数组 如果有新的target直接加入该数组 targetsArray = ['targetName1', 'targetName2', 'targetName3'] # 循环指定公用的库 targetsArray.each do |t| target t do pod 'MJRefresh', '~> 1.4.6' pod 'Masonry', '~> 0.6.1' end end # 指定额外依赖的不同的三方库 target 'targetName1' do pod 'xxx1' pod 'xxx2' end target 'targetName2' do pod 'xxx3' end - 问题描述:
- 安装完后生成的文件
-
Podfile.lock文件:记录上一次下载的框架的版本号 -
*.xcworkspace文件:工作区文件
-
- 以后要添加新的库,就编辑
Podfile文件,cd到工程根目录下,然后执行pod install --no-repo-update命令就可以了 -
pod install和pod update在没有指定框架版本号时是有区别的-
pod install在Podfile.lock文件存在时直接读取并下载框架,如果是团队开发为了保证版本一致,建议使用此命令 -
pod update直接读取Podfile文件中的信息,不管Podfile.lock文件是否存在,所以在团队开发时可能导致大家使用的第三方库的版本不一致
-
-
pod install和pod update选择- 一般情况下,
第一次从共享库把项目下载下来之后,应该使用pod install命令安装,而不是选择pod update,目的是为了保证大家使用的第三方框架版本一致 - 如果以后大家需要升级第三方框架,那么大家
约定好,统一再执行一次pod update -
建议在编写podfile文件时,明确指定第三方库的版本,格式如下:pod '第三方库名称', '~> 版本号',这样不管使用pod install还是pod update效果都是一致的
- 一般情况下,