配置cocoaPods环境
说明:为了举例创建了一cocoaPodsExample项目
- cd到工程目录下使用终端创建一个名字为
podfile
的文件
- 这里举例使用coocapods继承AFN框架,打开终端,执行命令
pod search AFNetworking
- 使用vim编辑器编辑
podfile
文件
- 执行命令
pod install
安装,结果出现报错
错误大概是因为我们没有指定target
,此时,我们使用vim
,重新编podfile文件
- 此时重新执行 pod install ,提示安装成功
- 这次查看我们的工程目录
- 以后我们打开项目就直接打开
workspace
就可以了
- 引入框架开始使用
- 接下来就大功告成了!!!!!!
=============================================
彻底删除已经集成cocoaPods项目中cocoaPods
- 新建完一个项目的目录结构
- 下面我们来随意在项目中通过cocoaPods导入一个第三方依赖
命令:pod install --verbose --no-repo-update
- 集成完成之后的目录
开始彻底卸载cocoaPods
- 删除temp.xcworkspace 、Podfile.lock、Podfile文件
- 打开temp.xcodeproj文件,删除项目的libPods-temp.a、Pods-temp.debug.xcconfig、Pods-temp.release.xcconfig的引用
3.打开Build Phases选项, 删除Check Pods Mainfest.lock和Copy Pods Resources:
- 完成编译通过,删除成功,此时可以顺便将项目还残余的Pods跟Frameworks两个空文件家删除,这样项目目录又回到新建的一模一样了.
pod file只是补充
Podfile文件详细描述了一个或多个工程中targets的依赖关系。Podfile会默认创建一个隐式的目标链接到工程中用户的第一个target,名称为“default”。
一个Podfile可以非常简单:
pod 'AFNetworking', '~> 1.0'
也可以配置的复杂一点,如下
source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '6.0'
inhibit_all_warnings!
xcodeproj 'MyProject'
pod 'ObjectiveSugar', '~> 0.5'
target :test do
pod 'OCMock', '~> 2.0.1'
end
post_install do |installer|
installer.pods_project.targets.each do |target|
puts #{target.name}
end
end
Dependencies(依赖项)
Podfile描述用于各个用户targe中的依赖项
- pod 是声明指定依赖的方法
-
podspec
提供了一个简单的API用于创建pod specs -
target
允许你在工程中限定依赖项只在你指定的targets中生效
pod
指定工程的一个依赖
一个依赖项通过pod名和可选的版本号来声明
当你开始一个项目的时候你可能只需要一个最新版本的依赖,那么你就可以忽略版本号了,这样写:
pod 'SSZipArchive'
以后你可能想指定一个Pod的固定版本的时候,可以写上具体的版本号来指定:
pod 'Objection', '0.9'
对版本号的操作除了指定与不指定,你还可以做其他操作:
-
>0.1
高于0.1的任何版本 -
>=0.1
版本0.1和任何更高版本 -
<0.1
低于0.1的任何版本 -
<=0.1
版本0.1和任何较低的版本 -
〜>0.1.2
版本 0.1.2的版本到0.2 ,不包括0.2。这个基于你指定的版本号的最后一个部分。这个例子等效于>= 0.1.2并且 <0.2.0,并且始终是你指定范围内的最新版本
Using the files from a local path (使用本地文件)
如果你想用一个自己开发的本地的Pod,你可以用path选项
pod 'AFNetworking', :path => '~/Documents/AFNetworking'
使用这个选项后,Cocoapods会将给定的文件夹认为是Pod的源,并且在工程中直接引用这些文件。这就意味着你编辑的部分可以保留在CocoaPods安装中
注意:Pod的podspec
文件也应该被放在这个文件夹当中
target
在target块里面定义依赖项,如果对应的target不想添加依赖可以用:exclusive => true参数
Podfile文件将会创建一个全局的target名叫:default,default将会生成一个libPod.a文件。这个target将会与用户工程中的第一个target绑定起来如果没有指定特殊的link_with属性的话
例子:
定义一个target:
target :ZipApp do
pod 'SSZipArchive'
end
定义一个独有的target:
target :ZipApp do
pod 'SSZipArchive'
target :test, :exclusive => true do
pod 'JSONKit'
end
end
Target configuration (目标项配置)
这些设置用来控制cocoa pods生成project
开头platform
用来说明项目的工作平台,xcodeproj
允许你指定需要链接的工程
platform
指定了静态库应该被编译在哪个平台
Cocoapods提供一个默认的部署目标如果你自己没有指定的话。目前的默认设置是iOS4.3、OS X10.6、tvOS 9.0、watchOS 2.0
如果部署目标要求iOS版本小于4.3,armv6
架构将会被添加到ARCHS
中
例子:
指定平台
platform :ios,
platform :ios
xcodeproj
指定包含引用pod库的target的Xcode工程会被链接到
如果没有显示的project被指定,那么会默认使用target的父target指定的project作为目标。如果如果没有任何一个target指定目标,那么就会使用和Podefile在同一目录下的project。同样也能够指定是否这些设置在release或者debug模式下生效。为了做到这一点,你必须指定一个名字和:release/:debuge关联起来
例子:
指定用户工程
# Look for target to link with in an Xcode project called
# `MyProject.xcodeproj`.
xcodeproj 'MyProject'
target :test do
# This Pods library links with a target in another project.
xcodeproj 'TestProject'
end
inhibit_all_warnings!
屏蔽cocoapods库里面的所有警告
inhibit_all_warnings ! (swift必须包含
)
可以用framework的pod替代静态库的