CocoaPods是一个负责管理iOS项目中第三方开源库的工具。CocoaPods的项目源码。
环境安装
检查HomeBrew
检查homebrew版本:brew -v
检查Command Line Tools
检查Command Line Tools是否已安装:xcode-select -p
检查rvm(全称是ruby versioin manager)
检查mac是否安装了rvm,执行的命令如下: rvm -v
使用rvm安装ruby环境
1.检查更新rubyGems,执行的命令如下
检查 sudo gem -v
更新rubyGems的版本指令:gem update --system
2.检查ruby源替换源
检查ruby源
gem sources -l
https://gems.ruby-china.com
移除ruby源,移除的命令如下:
gem sources --remove https://rubygems.org/
替换国内镜像源,.执行命令如下:
gem sources -a https://gems.ruby-china.com/
检查是否安装cocoapods
(sudo表示管理员执行的指令,需要输入密码)
检查mac是否安装了rvm,执行的命令如下: rvm -v
检查rubyGems,执行的命令如下: sudo gem -v
检查ruby,执行的命令如下: ruby -v
检查cocoapods,执行的命令如下: pod --version
安装cocoapods 更新cocoapods
1.安装cocoapods的命令如下:
sudo gem install cocoapods
OS X 10.11以后系统的安装cocoapods 指令:
$ sudo gem install -n /usr/local/bin cocoapods
2.检查cocoapods,执行的命令如下:
pod --version
3.cocoapods集成第三方框架到自己的项目中
1.打开终端,输入cd自己的项目路径
2.生成Podfile文件 pod init,
输入vim podfile 打开podfile文件
(编辑文件 i ; 取消编辑 ESC ; 保存并退出 :wq ;)
3.更新pod库
pod update --verbose --no-repo-update
pod install --verbose --no-repo-update
*** CURRENT SOURCES ***
一、创建** podfile**
# Uncomment the next line to define a global platform for your project
platform :ios, '9.0'
target 'wheelFactory' do
inhibit_all_warnings!
use_frameworks!
install! 'cocoapods', :deterministic_uuids => false
# --------------------- 三方pods集 -----------------------
# -----网络相关类-----
# 网络请求
pod 'AFNetworking'
# 刷新
pod 'FCXRefresh'
# 下拉刷新
pod 'MJRefresh'
# 模型转换
pod 'MJExtension'
# HUD
pod 'MBProgressHUD'
# -----UI相关类-----
# 图片加载
pod 'SDWebImage', '~>5.0'
# UI适配
pod 'Masonry'
# Banner轮播
pod 'SDCycleScrollView'
# 照片
pod 'TZImagePickerController'
# -----功能相关类-----
# Bug
pod 'Bugly', '~> 2.5.0'
# 容错拦截
pod 'AvoidCrash', '~> 2.5.2'
pod 'FMDB', '~> 2.7.5'
# ------------------------ end --------------------------
end
pod install
会去检查podfile.lock是否已经包含该库,如果包含则继续判断是否指定版本, 如果指定版本就去检查podfile.lock中保存的版本是否与新指定的相同,相同则跳过,不相同则更新,如果没有指定版本则不检查更新直接跳过,如果不包含该库则去下载该库并将版本保存在podfile.lock文件中。
pod update
这个命令会忽略Podfile.lock中的记录,直接去找符合Podfile文件中的该依赖库的约束版本(无约束的话就是最新版本)。一般在你想要更新pods到一个新的版本的时候使用。当运行pod update PODNAME 时,CocoaPods将尝试查找PODNAME的更新版本,而不考虑Podfile.lock中列出的版本。 它会将pod更新为可能的最新版本(只要它与Podfile中的版本限制相匹配)。
如果有人执行了pod update, 此时他的Podfile.lock文件中的跟踪版本就已经变更,此时,其他人只要pod install就能更新为和Podfile.lock文件中的版本。
使用CocoaPods
使用cocoaPods搜索第三方库。
pod search AFNetworking
版本号的规则:
'>1.0' 可以安装任何高于1.0的版本
'>=1.0' 可以安装任何高于或等于1.0的版本
'<1.0' 任何低于1.0的版本
'<=1.0' 任何低于或等于1.0的版本
'~>0.1' 任何高于或等于0.1的版本,但是不包含高于1.0的版本
'~>0' 任何版本,相当于不指定版本,默认采用最新版本号
1. source
* 指定 specs 的位置,自定义添加自己的 podspec。
* 如果没有自定义添加 podspec,则可以不添加这一项,因为默认使用 CocoaPods 官方的 source。一旦指定了其它 source,那么就必须指定官方的 source,如上例所示。
2. platform :iOS, '8.0'
* 指定了开源库应该被编译在哪个平台以及平台的最低版本。
* 如果不指定平台版本,官方文档里写明各平台默认值为 iOS:4.3,OS X:10.6,tvOS:9.0,watchOS:2.0。
3. use_frameworks!
使用 frameworks 动态库替换静态库链接
* Swift 项目 CocoaPods 默认 use_frameworks!
* OC 项目 CocoaPods 默认 #use_frameworks!
4. inhibit_all_warnings!
* 屏蔽 CocoaPods 库里面的所有警告
* 这个特性也能在子 target 里面定义,如果你想单独屏蔽某 pod 里面的警告也是可以的,例如:
`pod 'JYCarousel', :inhibit_warnings => true`
5. workspace
* 指定包含所有 projects 的 Xcode workspace
* 如果没有指定 workspace,并且在 Podfile 所在目录下只有一个 project,那么 project 的名称会被用作 workspace 的名称
6. target ‘xxxx’ do ... end
* 指定特定 target 的依赖库
* 可以嵌套子 target 的依赖库
7. project
* 默认情况下是没有指定的,当没有指定时,会使用 Podfile 目录下与 target 同名的工程
* 如果指定了 project,如上例所示,则 CocoaPodsTest 这个 target 只有在 CocoaPodsTest 工程中才会链接
8. inherit! :search_paths
* 明确指定继承于父层的所有 pod,默认就是继承的
9. 依赖库的基本写法
pod 'AFNetworking' --> 不显式指定依赖库版本,表示每次都获取最新版本
pod 'AFNetworking', '2.0' --> 只使用 2.0 版本
pod 'AFNetworking', '> 2.0' --> 使用高于 2.0 的版本
pod 'AFNetworking', '>= 2.0' --> 使用大于或等于 2.0 的版本
pod 'AFNetworking', '< 2.0' --> 使用小于 2.0 的版本
pod 'AFNetworking', '<= 2.0' --> 使用小于或等于 2.0 的版本
pod 'AFNetworking', '~> 0.1.2' --> 使用大于等于 0.1.2 但小于 0.2 的版本
pod 'AFNetworking', '~> 0.1' --> 使用大于等于 0.1 但小于 1.0 的版本
pod 'AFNetworking', '~> 0' --> 高于 0 的版本,写这个限制和什么都不写是一个效果,都表示使用最新版本
Podfile.lock文件记录了Podfile的版本,Podfile.lock 应该加入到版本控制里面,不应该把这个文件加入到 ignores 中。因为 Podfile.lock 会锁定当前各依赖库的版本,之后如果多次执行 pod install 不会更改版本,执行 pod update 时才会更改 Podfile.lock。
http://www.srcmini.com/3965.html
https://gems.ruby-china.com
iOS开发之 -- CocoPods的安装和使用
CocoaPods补充: pod search 搜索类库失败的解决办法
https://www.cnblogs.com/striveLD/p/5773280.html
CocoaPods的安装
http://www.code4app.com/article/cocoapods-install-usage
遇到问题:
~
1、fatal: unable to access 'https://github.com/banchichen/TZImagePickerController.git/': Failed to connect to github.com port 443: Operation timed out 添加pod三方库,请求超时。
2、Mac安装homebrew报错curl: (7) Failed to connect to raw.githubusercontent.com port 443: Operation timed out
~ 如何查看 cocoapods 导入的三方库是哪个版本
将 Podfile.lock 文件的后缀名改为 ".txt",就可以查看所有第三方库的版本了。
~ CocoaPods 详解
https://www.cnblogs.com/feng9exe/p/14709358.html