Cocoapods原理
CocoaPods 源码 : https://github.com/CocoaPods/CocoaPods
CocoaPods的工作主要是通过ProjectName.xcworkspace来组织的,在打开ProjectName.xcworkspace文件后,发现Xcode会多出一个Pods工程
-
- 库文件引入及配置:
- 库文件的引入主要由Pods工程中的Pods-ProjectName-frameworks.sh脚本负责,在每次编译的时候,该脚本会帮你把预引入的所有三方库文件打包的成ProjectName.a静态库文件,放在我们原Xcode工程中Framework文件夹下,供工程使用。
- Resource文件:
- Resource资源文件主要由Pods工程中的Pods-ProjectName-resources.sh脚本负责,在每次编译的时候,该脚本会帮你将所有三方库的Resource文件copy到目标目录中。
- 依赖参数设置:
- 在Pods工程中的的每个库文件都有一个相应的SDKName.xcconfig,在编译时,CocoaPods就是通过这些文件来设置所有的依赖参数的,编译后,在主工程的Pods文件夹下会生成两个配置文件,Pods-ProjectName.debug.xcconfig、Pods-ProjectName.release.xcconfig。
- 库文件引入及配置:
安装Cocoapods
首先打开神器 Terminal (最快途径打开程序或文件:control+空格 搜索)
移除ruby软件源
gem sources --remove https://rubygems.org/
替换成Ruby-China的软件源(之前是淘宝源,目前是这个)
gem sources -a https://gems.ruby-china.com/
查看是否替换成功:
gem sources -l
4.请确保只有 gems.ruby-china.com下,安装rails(这步可以跳过吗?我看官网需要输入,不知道怎么回事。望解答。)
gem install rails
替换 CocoaPods 的镜像索引(可以跳过,详情看唐巧大神的文章)
pod repo remove master
pod repo add master https://gitcafe.com/akuandev/Specs.git
pod repo update安装
sudo gem install cocoapods
注意:
Mac OSX 10.11之后安装的方法sudo gem install -n /usr/local/bin cocoapods
如果不成,用以下方法进行安装
$ mkdir -p $HOME/Software/ruby
$ export GEM_HOME=$HOME/Software/ruby
$ gem install cocoapods
$ export PATH=$PATH:$HOME/Software/ruby/bin
$ pod --version
0.39.0
- 升级CocoaPods
升级很简单,再次执行安装命令即可
移除Cocoapods
- 清空第三方库和相关依赖库
- 编辑Podfile文件,清除里面所有库,然后终端输入:pod install。
- 删除之前的4个文件,Podfile、Podfile.lock、Pods文件夹和.xcworkspace文件。
- 然后打开.xcodeproj,删除项目中的libpods.a和Pods.xcconfig引用。
- TARGETS - Build Phases 删除有关pods的选项,至此完成删除。
使用Cocoapods
1.进入到工程目录
cd 工程的目录 (注意:包含PodTest文件夹、PodTest.xcodeproj、PodTestTest的那个总目录)
2.搜索要添加的第三方库
pod search UITableView+FDTemplateLayoutCell
3.添加Podfile文件
vim Podfile
4.编写Podfile
//输入” i “,进入编辑模式。
# CocoaPods对于不同Target引入不同的第三方库Podfile的写法
platform:ios, '8.0'
target 'MeStar' do
pod 'Masonry', '0.6.2'
target 'MeStar Dev' do
pod 'Objection' -- 引入最新版本
pod 'Objection', '0.9' -- 引入特定的版本
pod 'Objection', '>0.9'> -- 任何大于0.9的版本
pod 'Objection', '>=0.9'> -- 任何大于等于0.9的版本
pod 'Objection', '<0.9'> -- 任何小于0.9的版本
pod 'Objection', '<=0.9'> -- 任何小于等于0.9的版本
pod 'Objection', '~>0.9'> -- 任何介于0.9到1.0的最新版本,不包含1.0
pod 'AFNetworking', :path => '~/Documents/AFNetworking' -- 使用本地路径引入
pod 'AFNetworking', :git => 'https://github.com/gowalla/AFNetworking.git', :tag => '0.7.0' -- 使用git库引入
pod 'JSONKit', :podspec => 'https://example.com/JSONKit.podspec' -- 使用外部的podspec来引入
end
target 'MeStarTests' do
pod 'OCMock', '3.2'
end
end
//输入 “wq”保存当前的文件
- 安装第三方库
//第一次的时候,需要安装。
pod install
//以后的时候,可以更新。
pod update
注意:
pod update / pod install 卡在
Updating local specs repositories
- 等待即可
因为每次执行install或update的时候,都需要同步一下CocoaPods Specs,所以速度通常很慢
- 如果你使用的第三方库并不是经常更新,则不用经常更新那个Specs库,使用下边的命令
“pod install --verbose --no-repo-update”
- 当在update或install时遇到这个问题,:
`Unable to find a specification for `xxxxx (~> 1.x.x)` depended upon by Podfile.`
只需要把当前Pod的目录清理一下就行了。在终端执行以下命令:
pod repo remove master
pod setup
Podfile.lock
的文件不应该加入到
.gitignore
中会锁定当前各依赖库的版本
- 执行
pod install
不会更改版本 - 执行
pod update
才会改Podfile.lock
- 执行
参考:
1.手把手教你使用CocoaPods管理你的iOS第三方开源类库
2.使用CocoaPods过程中的几个问题
3.用CocoaPods做iOS程序的依赖管理(唐巧大神的杰作,很好的参考,提高用)
Cocoapods更新至Ruby china 的源
前言:
淘宝源不再进行更新,取而代之的是Ruby China 的 RubyGems 镜像上线 ,替换成Ruby China源
具体步骤:
1.首先查看gem版本,最新是2.6.6
gem -v
2.更新gem
sudo gem update --system #需要翻墙
3.出现 Operation not permitted - /usr/bin/update_rubygems错误,所以可以用brew安装,然后再更新,执行第2步。
brew install ruby
4.查看当前源
gem sources -l # 当前源为:https://ruby.taobao.org/
5.替换
gem sources --add https://gems.ruby-china.org/ --remove https://ruby.taobao.org/
其他:
CocoaPoads版本升级
sudo gem install cocoapods
pod setup
pod --version
知识补充
RubyGems(简称 gems)
- 用于对 Ruby组件进行打包的 Ruby 打包系统
- 可以分发 Ruby 程序和库的标准格式
- 可以管理程序包安装
- Mac系统自带
Ruby on Rails(简称 Rails)
- Ruby on Rails 是一个用于开发数据库驱动的网络应用程序的完整框架
- Mac系统自带
Ruby
- 一种简单快捷的面向对象脚本语言
- Mac系统自带
RVM
全称:
Ruby Version Manager
RVM 是一个命令行工具,可以提供一个便捷的多版本 Ruby 环境的管理和切换
会用系统的包管理工具(比如 brew,比如 apt)安装依赖的软件包
安装
#1 获取谜钥 gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB #2 下载rvm \curl -sSL https://get.rvm.io | bash -s stable
NPM:Node Package Manager
- NodeJS包管理和分发工具
#自动安装好了nodejs和npm brew install node
Homebrew
是Mac OSX上的软件包管理工具,能在Mac中方便的安装软件或者卸载软件
基于Ruby的
把软件包安装到
/usr/local/Cellar/
下,然后在/usr/local/bin
下建立符号链接安装
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
curl
- 利用URL语法在命令行方式下工作的开源文件传输工具
- Mac系统自带
wget(World Wide Web”与“get”的结合)
一个从网络上自动下载文件的自由工具
支持通过HTTP、HTTPS、FTP三个最常见的TCP/IP协议下载,并可以使用HTTP代理
安装
brew install wget
NVM
是 Mac 下的 node 管理工具,管理不同版本node和npm,有点类似管理 Ruby 的 rvm.
安装
curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.29.0/install.sh | bash
GPG(全称:GNU Privacy Guard)
GPG即GNU Privacy Guard,它是加密工具PGP(Pretty Good Privacy )的非商业化版本
用于对Email、文件及其他数据的收发进行加密与验证,确保通信数据的可靠性和真实性
安装
brew install gpg