一 . 概述
1.1 先看几个概念
- Cocoa
- Cocoa Touch
- CocoaPods
- Podfile
- gem
- Cocoapods 工作原理和源码分析
Cocoa
Cocoa:开发MAC OS X系统中应用程序的开发框架),包含Foundation和AppKit框架。
是Mac OS X上五大开发框架之一,其它四个是Carbon、POSIX、X11和Java。
使用Cocoa编程环境开发的应用程序即为Cocoa 应用。
Cocoa Touch
开发iPhone OS系统的应用程序,包含Foundation和UIKit框架(我们在Xcode中新建file时候,第一个就是Cocoa Touch Class)。
CocoaPods
Cocoa 应用开发所需依赖库管理工具。这是官网https://cocoapods.org。
安装或者升级CocoaPods:
sudo gem install cocoapods
Podfile
Podfile是一个规范,描述了一个或多个一套工程目标的依赖项.了解更多可以参考https://www.jianshu.com/p/b8b889610b7e。
Gem
RubyGems(简称 gems)是一个用于对 Ruby组件进行打包的 Ruby打包系统。 它提供一个分发 Ruby 程序和库的标准格式,还提供一个管理程序包安装的工具。
Gem是一个管理Ruby库和程序的标准包,它通过Ruby Gem(如http://rubygems.org/)源来查找、安装、升级和卸载软件包,非常的便捷。
Mac OS X中会自带Ruby库,所以可以直接使用gem命令。
Cocoapods 工作原理和源码分析
参看https://www.jianshu.com/p/c17cee5e9c7f,比较简单清晰
1.2 几个概念之间的关系
- Ruby (脚本语言):种简单快捷的面向对象(面向对象程序设计)脚本语言
- RVM (Ruby Version Manager):是ruby版本管理的英文缩写。(ruby执行需要ruby解释器,rvm就是管理ruby解释器版本的,安装、卸载、更新、切换 等)
- RubygGems:是 Ruby 的一个包管理器。它提供一个分发 Ruby 程序和库的标准格式,还提供一个管理程序包安装的工具,一般的ruby的很多插件都有由这个包提供
- CocoaPods:Mac OS X和iOS下的一个第三类库管理工具。通过CocoaPods工具我们可以为项目添加被称为“Pods”的依赖库(这些类库必须是CocoaPods本身所支持的),并且可以轻松管理其版本。
二. CocoaPods安装
2.1 Ruby版本查询
终端中输入
ruby -v
我的如下,此时我们暂时不去升级ruby的版本,等下面安装CocoaPods的时候报版本过低的时候再升级,如果不报错就是用默认的版本就好了。
2.2 升级Ruby版本(可以先跳过)
终端中输入,使用命令
brew upgrade ruby
2.3 查看RubyGems版本
终端中输入,使用命令
gem --version
2.4 升级RubyGems版本
终端中输入,使用命令
sudo gem update --system
直接输入mac密码,然后回车(输入过程中不会有变化,接着输入就完了,输完点击回车)。
2.5 RubyGems source 域名变更https://gems.ruby-china.com/
下面是源码镜像git地址:https://github.com/ruby-china/rubygems-mirror
由于RubyGems源代码镜像资源地址发生改变,所以如果没有修改mac中的镜像地址,那么在打包时候会出现各种time out。
首先查看mac中RubyGems source 域名。
终端中输入
gem sources
如果如下面,就说明已经修改过了
如果不是那么说明配置不正确,需要重新配置。
先,移除默认的 gem 源
gem sources --remove https://gems.ruby-china.org/(旧镜像源)
然后,添加新的 gem源
gem sources --add https://gems.ruby-china.com/
最后,查看一下
gem sources
配置gem源完成。
2.6 安装CocoaPods
sudo gem install cocoapods
如果使用这个报错,请使用
sudo gem install -n /usr/local/bin cocoapods
或者安装最新版本
sudo gem install -n /usr/local/bin cocoapods --pre
或者安装指定版本
sudo gem install -n /usr/local/bin cocoapods -v (版本号)
然后就是等了,可能需要很长时间。等安装成功之后查看版本。
pod --version
2.7 使用CocoaPods,添加一个sqlite工具库FMDB
- Xcode新建一个项目(或者已经存在了)
- 打开终端,输入 cd
- 把项目拖入终端,(获取项目路径),回车进入工程目录
- 输入 pod init (生成podfile 文件)
- 进入工程目录中,打开生成的podfile文件,在标记的地方输入需要的第三方(例如FMDB)
- 如果安装的CocoaPods版本为1.8以上,就要切换CDN了,如果不切换在引入第三方库的时候会报CDN错误。(CocoaPods 1.8将CDN切换为默认的spec repo源,并附带一些增强功能!CDN支持最初是在1.7版本中引入的,最终在1.7.2中完成。 它旨在大大加快初始设置和依赖性分析。)
- 解决CDN问题(如果CocoaPods版本为1.8以上,以下的就不用了)。首先,podfile文件中添加source ‘https://github.com/CocoaPods/Specs.git’(注意镜像源很可能不能使用,因为每个人的网络环境不一样,所以如果这个镜像源不能使用我们就更换其他的);其次,终端中输入并执行pod repo remove trunk移除trunk源。
- 终端中执行pod install ,下载第三方库
下面是工程目录
下面是处理之后的podfile文件
# 下面是指明依赖库的来源地址
source 'https://github.com/CocoaPods/Specs.git'
# Uncomment the next line to define a global platform for your project
# platform :ios, '13.2'
target '33_SqliteDemo' do
# Comment the next line if you don't want to use dynamic frameworks
use_frameworks!
# Pods for 33_SqliteDemo
# 引入FMDB三方库
pod 'FMDB'
#下面是针对测试引入依赖,默认没有依赖东西。
target '33_SqliteDemoTests' do
inherit! :search_paths
# Pods for testing
end
target '33_SqliteDemoUITests' do
# Pods for testing
end
end
下面是执行pod install之后的终端页面,可能需要很长时间。
也有可能经过一段时间之后会失败,比如下面情况
提示错误
说明我们的镜像源有问题了,总是不能下载“包含所有可用三方库信息的仓库”。于是我们选择其他的镜像源地址。
例如下面的:https://mirror.tuna.tsinghua.edu.cn/help/CocoaPods/。其中使用的方法也很详细了,于是接下来的步骤如下:
- cd ~/.cocoapods/repos
- pod repo remove master
- git clone https://mirrors.tuna.tsinghua.edu.cn/git/CocoaPods/Specs.git master
- 然后将podfile文件中source 'https://github.com/CocoaPods/Specs.git’更换为source ‘https://mirrors.tuna.tsinghua.edu.cn/git/CocoaPods/Specs.git’。
- 进入我们的工程根目录
- 执行pod install
然后看一下项目根目录,其中多出来不少文件,如下
此时我们将原来的Xcode工程关闭,然后点击后缀为“.xcworkspace”文件打开Xcode,之后就可以使用了。
不过在使用的过程中可能出现在import头文件的时候出现不能自动提示的可能。解决可参考“xcode import pod 文件不提示“https://www.cnblogs.com/cwy173/p/5584109.html“
。