CocoaPods的使用

2017-04-26  本文已影响0人  黄易女民工jiang

http://guides.cocoapods.org/using/using-cocoapods.html#should-i-ignore-the-pods-directory-in-source-control

将Pods加入一个Xcode Project中

在你开始之前

1.检查Specs仓库或者cocoapod.org来确认你想要用的libraries是可用的

2.在你的电脑安装CocoaPods

安装

创建一个Podfile, 并且加入你的依赖

target 'MyApp' do

 pod 'AFNetworking', '~>3.0'

 pod 'FBSDKCoreKit','~>4.9'

end

1. 在你的项目路径后面,运行 $ pod install 

2.打开 App.xcworkspace 并且 编译

用CocoaPods创建一个新的Xcode 项目

想要用CocoaPods创建一个新项目,按照如下步骤:

1.像你平时那样,在Xcode穿件一个新的项目

2.打开终端,并且 cd 你的项目路径

3.创建一个Podfile。这个是通过运行pod init 来得到的。

4.打开你的Podfile。第一行应该指定支持的平台和版本号。

platform:ios, '9.0'

1.为了使用cocoaPods你需要定义Xcode target去链接他们。所以如果你想写一个iOS app, 这个将会是你app的名字。创建一个target块通过写入target '$TARGET_NAME' do 和在最后写一个end.

2.添加一个CocoaPod通过指定 pod '$PODNAME'在你的target block中的一行。

target 'MyApp' do 

 pod 'ObjectiveSugar' 

end

1.保存你的Podfile

2.运行 pod install 

3.打开你创建的MyApp.xcworkspace.这个文件就是以后你每天都要打开的了。

集成一个已经存在的workspace

集成一个已经存在workspace的CocoaPod需要在你的Podfile额外的一行代码。仅仅指定.xcworkspace的文件名字 在你target block块之外就可以:

workspace 'Myworkspace'

什么时候用pod install VC pod update ?

许多人迷惑于设么时候用pod install 和 pod update.典型的是,他们经常用pod update当需要用pod install的地方。

你可找到一个详细的解释关于什么时候用什么在这里 pod install VS. pod update

原文 http://guides.cocoapods.org/using/pod-install-vs-update.html

应该检查Pods目录在Source Control?

无论在Pods文件夹里检查与否都取决于你自己,因为工作流因项目而异。我们推荐你保持Pods目录在源控制下,顶贴不要告你的.gitignore添加进去。但是最后如下讨论取决于你:

检查Pod目录的优势

1.在克隆repo之后,项目就可以很快的编译和运行,即使该设备并没有安装CocoaPods.这里不需要运行pod install, 网络也不是必要的。

2.Pod artifacts(code/libraries)通常是可用的,即使Pod(e.g GitHub)的源下架。

3.在克隆repo后,Pod artifacts保证与原本就安装的相同。

忽视Pod目录优势

1.soure control repo 将会更下并且占用更少的空间。

2.只要所有的Pods源文件(e.g GitHub)是有效的,CocoaPods通常可以重新创建相同的安装。(技术上来讲这并没有保证的是,运行pod install将会fetch和recreate相同的artifacts当你不再Podfile中提交SHA.特别是在Podfile中用zip文件)

3.当执行source control操作,例如merge不同pod版本的分支,这并没有任何冲突去解决。

无论你是否检查Pods目录,Podfile和Podfile.lock一直都在版本控制下。

什么是Podfile.lock?

这个文件是在你第一次运行pod install之后产生的,追踪每一个已经安装的Pod的版本。举个例子,设想在Podfile中有如下的依赖:

pod 'RestKit'

运行pod install会安装RestKit的当前版本,会生成一个Podfile.lock文件指明准确的安装版本号(e.g RestKit 0.10.3).得益于Podfile.lock, �随后在另外一个机器上对该项目运行pod install,即使一个新的版本存在仍旧会安装RestKit 0.10.3.如果不更新Podfile中的依赖或者调用pod update(这个会生成一个新的Podfile.lock),CocoaPods会一直保持Podfile.lock中的版本。在这种方式下,CocoaPods避免了不希望的依赖改变带来的麻烦。

这有一个来自Google的video来展示如何运行的。 "CocoaPods and Lockfiles (Route 85)"

幕后之后发生了什么

在Xcode, 与直接从Ruby源引用,它:

1.创建或者更新一个workspace

2.如果需要把你的project添加到workspace.

3.如果需要把CocoaPods静态库project添加到workspace.

4.添加libPods.a :targets=>build phases =>linke with libraries.

5.把CocoaPods 的Xcode 配置加入到你的app项目中

6.依赖于CocoaPods改变你app的目标配置。

7.添加一个构建阶段,从您安装到应用程序包的任何副本中复制资源。即“脚本构建阶段”,所有其他构建阶段如下:

      Shell: /bin/sh

      Script:${SRCROOT}/Pods/PodsResources.sh

注意第三步起如果CocoaPods静态库已经在你的项目跳过,这主要基于Jonah Williams对静态库的研究。

Pods 和 Submodules

CocoaPods和git子模块试图解决非常相似的问题。他们都试图简化在你项目中的第三方代码。Submodules链接到该项目的特定提交上面,而CocoaPods绑定到了开发者开发的版本上去。

切换submodules到CocoaPods

当你决定把所有都切换到CocoaPods上,确定你现在使用的所有库都是可用的。记录当前使用的库的版本号也是一个好主意,所以你可以使用同一个安装CocoaPods。这也是一个好主意这样做增量,依赖依托于依赖,取代大的更改。

1.安装CocoaPods.如果你并没有做的话。

2.创建你的Podfile

3.移除submodule索引

4.在Podfile中添加你已经移除的库的索引

5.运行 pod install 

上一篇下一篇

猜你喜欢

热点阅读