上一篇关于cocoapods的用法写的有些乱.这里先梳理一下.
1.pod setup的时候,cocoapods 正在去下载cocoapods上项目的索引文件,到$/.cocoapods文件夹下面,需要一定时间等待. cd .cocoapos 然后 du -sh * ,可以实时查看被下载的文件大小.
2.Podfile 一定是要放在一个工作空间目录或者项目文件夹的根目录下.
注意:在Podfile中冒号和后面的参数一定要连起来使用,比如 platform :ios ,target :mytarget
3.Podfile中 pod ‘xxxx’ 下载的项目是给整个空间中的项目共用的. target是给项目中的target专门用的.(一个项目创建好后,默认有个跟项目名一样的target,编译的目标主要就是target,默认的.app文件名跟target一样),
项目中有几个target就可以配置几个target的cocoapods定制.
4.xcconfig文件,debug和release默认是一样的,如:
//gcc 预处理定义
GCC_PREPROCESSOR_DEFINITIONS =
(inherited)COCOAPODS=1//头文件搜索路径HEADERSEARCHPATHS=
(inherited)
“
PODSROOT/Headers/Public”“
{PODS_ROOT}/Headers/Public/AFNetworking”
“
PODSROOT/Headers/Public/FLKAutoLayout”“
{PODS_ROOT}/Headers/Public/ORStackView”
//其他 C语言编译器的参数
OTHER_CFLAGS =
(inherited)−isystem“
{PODS_ROOT}/Headers/Public” -isystem
“
PODSROOT/Headers/Public/AFNetworking”−isystem“
{PODS_ROOT}/Headers/Public/FLKAutoLayout” -isystem
“${PODS_ROOT}/Headers/Public/ORStackView”
//其他的链接参数
OTHER_LDFLAGS =
$(inherited) -ObjC -l”AFNetworking” -l”FLKAutoLayout” -l”ORStackView”
-framework “CoreGraphics”
-framework “MobileCoreServices”
-framework “Security”
-framework “SystemConfiguration”
//SRCROOT 应该就是Podfile所在的根目录
PODS_ROOT = ${SRCROOT}/Pods
上面的路径都是根据磁盘中实际目录而搜索,不是像xcode中的group只是一个标记.
最后的情况是:在同一个工作空间里面,有一个Pod的项目和一个含有两个target(oc,ycsj)项目
Pod中也对应两个target:Pod-oc,Pod-ycsj(当然还有其他的第三方也成为target,并且编译为静态库),
上面两个不同的target的依赖的项目不同(在build phrase里面可以比较);
这两个target最终分别编译成了libPod-oc.a和libPod-ycsj.a两个库.然后两个静态库分别被对应的
oc和ycsj两个target链接.
疑问:假设我在这个空间上又建立了一个项目(File->New 不是点左下的加号),也想用cocoapods怎么弄?
我的想法是直接更新Podfile,只要设置好target就可以了.想法是很好的,但是行不通.cocoapods中的target
是仅仅是对于一个项目来说的.
5.使用swift项目的时候必须用use_frameworks!,项目最后都会编译为.framework文件.
关于4的问题,还有很多其他的问题,还是看这个吧:https://guides.cocoapods.org/syntax/podfile.html#group_workspace
6.经过一番搜索和实验终于找到了如何在一个工作空间里面多个项目使用cocoapods的办法:
Podfile的配置如下(注意黑色部分是一定要写上的,否则会报错)
platform :ios,‘8.0’
workspace ‘myapp’
target :myapp do
xcodeproj ‘myapp’
pod ‘AFNetworking’
end
target :yourapp do
xcodeproj ‘yourapp/yourapp.xcodeproj’
pod ‘ObjectiveSugar’
end
第二个target 的xcodeproj 的路径是根据工作空间的目录为根目录的,
需要根据实际的目录去填写要用cocoapods的项目的相对路径.
如果你是先建立了一个工作空间,然后再下面平行的建立几个项目的话
可以写成这个样子:
platform :ios , ‘8.0’
workspace ‘newworkspacename’
xcodeproj ‘A/A.xcodeproj’
target :A do
xcodeproj ‘A/A.xcodeproj’
pod ‘AFNetworking’
end
target :B do
xcodeproj ‘B/B.xcodeproj’
pod ‘ObjectiveSugar’
end
**注意:
1.workspace 指定的是集成了pod之后新生成的工作空间的名称,不要加上后缀,之前的space也可以打开,只是不包含Pod项目,最好还是删除掉.
2.xcodeproj A/A.xcodeproj必须写两遍,第一遍是要它找到一个默认的项目,第二个是告诉目标是属于哪个项目,以后的就写一遍就可以了.**