在我们开发移动应用的时候,一般都会使用到第三方工具,而由于第三方类库的种类繁多,我们在项目中进行管理也会相对麻烦,所以此时我们就需要一个包管理工具,在iOS开发中,我们使用最多的就是Cocoapods。
Cocoa是开发OS X下的苹果提供的API,Cocoa Touch是开发ios触摸类设备的API。比如我们在开发iOS中,常常需要新建一个类,就是用Cocoa Touch Class来进行新建的。在本篇博客中我们将会讨论包管理工具Cocoapods的安装与使用。
【一.Cocoapods的安装】
(1)Cocoapods的官方网站为:https://cocoapods.org/。如果你的电脑已经安装了Ruby开发环境,那么在终端(Terminal)中使用以下命令即可直接安装:
sudo gem install cocoapods
(2)如果你的电脑还没有安装Ruby环境,请看以下步骤:首先安装RVM,即Ruby的虚拟机,类似JVM,执行如下命令即可:
curl -L https://get.rvm.io | bash -s stable
(3)重新载入RVM,或者重开终端Terminal也可:
source ~/.rvm/scripts/rvm
(4)检查RVM是否安装成功,并查看RVM的版本:
rvm -v
然后使用RVM安装Ruby环境:
这里注意,你的Rudy的版本是可以自己去选择
如:rvm install 2.0.0
查看Ruby的版本:
ruby -v
然后安装Ruby的时候默认会安装gem,我们也可以查看gem的版本:
gem -v
然后下面开始安装Cocoapods,由于有墙,所以我们要修改Ruby的镜像,
百度了很多贴,基本上很多都是用了某宝的源,但是某宝的源在2017是不能用了,可能是我的姿势不对,反正我是试过几次都不行
这是你建议用https://rubygems.org/ 这个源,亲测ok,具体可以去看我之前贴上的记录,cocoapods遇到的坑,过去看看我的记录就好
然后
如果gem太老,可以尝试使用如下命令升级gem:
$ sudo gem update --system
这个我觉得务必去试试,毕竟时间又不久
然后增加新的镜像:
gem sources -a https://rubygems.org.org/
查看当前的Ruby镜像,如果显示是rubygems就可以了:
gem sources -l
这是最后一步,安装cocoapods:稍等片刻就可以了;
//这里建议翻墙,会快一点,反正我用某信天翼就是很慢, 速度就是几十k 而且还会断
sudo gem install cocoapods
在较早的版本中,执行完(sudo gem install cocoapods)后cocoapods就安装完了。最近还需要执行setup命令:
pod setup
Cocoapods的使用
首先建立一个iOS项目,我以Swift语言为例,我取名为CocoapodsDemo。当前的目录结构如下:
在终端下进入这个项目的根目录,使用vim创建一个Podfile文件,如图:注意,这个名字一定要是Podfile,不能是其他名字!!!
这是在vim里面的
panyixuande-MacBook-Pro:CocoapodsDemo panyixuan$ vim Podfile
platform :ios, '8.0'
use_frameworks!
target 'CocoapodsDemo' do
pod 'AFNetworking','~> 2.6'
pod 'ORStackView', '~> 3.0'
pod 'SwiftyJSON', '~> 2.3'
end
//备注 i 是键入
点esc是推出
然后:wq!是保存
最后pod instal
完成
更新一下
曾遇到的问题
[!] Pods written in Swift can only be integrated as frameworks; add `use_frameworks!` to your Podfile or target to opt into using it. The Swift Pod being used is: SwiftyJSON
platform :ios, '8.0'
#use_frameworks! //这是oc的写法
use_frameworks! //这才是swift的写法
target 'AAAA' do
引用 ZhugeZhan2016年10月05日发布
use_frameworks!
A、用cocoapods 导入swift 框架 到 swift项目和OC项目都必须要 use_frameworks!
B、使用 dynamic frameworks,必须要在Podfile文件中添加 use_frameworks!
(1)如果在Podfile文件里不使用use_frameworks! 则是会生成相应的.a文件(静态链接库),通过staticlibraries这个方式来管理pod的代码。 (2)Linked:libPods-xxx.a包含了其它用pod导入的第三方框架的.a文件。(3)如果使用了use_frameworks! 则cocoapods会生成相应的.frameworks文件(动态链接库:实际内容为Header+ 动态链接库 + 资源文件),使用dynamicframeworks来取代staticlibraries方式。 (4)Linked:Pods_xxx.framework包含了其它用pod导入的第三方框架的.framework文件。
use_frameworks! -> dynamic frameworks 方式 -> .framework
#use_frameworks! -> static libraries 方式 -> .a
关于Library 和 Framework 可以参考:
http://blog.lanvige.com/2015/...
(1)swift项目cocoapods 默认 use_frameworks!(2)OC项目cocoapods 默认 #use_frameworks!
用cocoapods导入OC框架到swift项目:
(1)#use_frameworks! 必须创建头文件,在头文件里面 #import "AFNetworking.h"
(2)use_frameworks! 如果有头文件,在头文件里面 #import "AFNetworking/AFNetworking.h",其它swift文件中用到不需要再import;如果没有头文件,则在每个需要用到的swift文件里 import AFNetworking。
用cocoapods导入swift框架到swift项目:
(1)必须use_frameworks!
(2)不需要头文件,在需要用到框架的swift文件里 import Alamofire
用cocoapods导入OC框架到OC项目:
(1)#use_frameworks! 在需要用到的文件里 #import "AFNetworking.h";也可以通过pch文件,用法类似swift中的头文件。
(2)use_frameworks! 与(1)类似,用法上没有区别。
用cocoapods导入swift框架到OC项目:不考虑
总结:
(1)用swift项目考虑到会使用 OC 和 swift 两种第三方框架,所以Podfile中使用swift项目默认的 use_frameworks! 更为妥当,并且frameworks动态链接库具有一定的优势。
(2)可以建立一个Bridge头文件,用来import那些OC框架的.h文件:#import "xxx/xxx.h"。或者不建头文件,像swift框架一样,直接在需要用到的swift文件中import
网友评论