cocoaPods管理之后工程结构变化

CocoaPods是IOS项目的依赖管理工具,类似于Android的gradle,不过gradle不仅有依赖管理功能,还能负责构建。CocoaPods只负责管理项目对第三方库的依赖,下面我们主要介绍一下一个项目在使用cocoaPods管理依赖之后,项目前后的变化

文件结构变化

请添加图片描述

我们介绍一下新增的文件

podfile

依赖target或者xcode项目的依赖的文件,它的书写需要特定的语法,请参考官网

podfile.lock

记录项目依赖的库的版本,是pod install 的命令操作的文件

xxx.xcworkspace

项目的工作区,使用CocoaPod管理依赖的项目,本质上是一个文件夹,里面保存了一个名为contents.xcworkspacedata的文件,该文件记录了工作区中项目的的路径

pod目录:

请添加图片描述

Pods.xcodeproj:Pods工程,第三方库都由Pods工程构件,

AFNetworking:项目依赖的第三方库,podfile里面记录的项目的每一个依赖库都会生成一个对应的文件目录

Header:

  • private:第三方库的私有头文件
  • public:第三方库的公有头文件

Manifest.lock:描述当前版本的第三方库对其它库的依赖

Target Support Files:支撑target的文件,我们看一下该目录下
(1)AFNetworking目录中内容
请添加图片描述

 - AFNetworking:第三方库目录,也就是podfile里面记录的项目的每一个依赖库都会在这里生成一个对应的文件目录
 - AFNetworking-prefix.pch:pch文件,用来处理公用头文件,可以优化文件的编译速度
 - AFNetworking-dummy.m
 - debug.xcconfig和release.xcconfig:用于工程配置   -

(2)Pods-test
请添加图片描述

 - Pods-test-acknowledgements.markdown:第三方库的声明文件,类似readme文件

 - Pods-test-acknowledgements.plist:第三方库重要信息的plist形式的说明

 - Pods-test-dummy.m

 - Pods-test.debug.xcconfig

 - Pods-test.release.xcconfig

工程结构变化

工程上,在原有的test project基础上新增了一个名为Pods的project,该projct的工程结构如图所示。
请添加图片描述

我们先看左面工程组织形式,我们可以将工程的组织和上面的文件组织做对比,发现并不一致,xcode上面看到的文件目录并不是实际意义上的物理目录,我们将xcode里面的目录称为Gruop(一般将有关系的文件或者同一个业务组的文件放在同一个Gruop中)。下面我们分别看一下主工程的变化和新增的Pod工程结构。

主工程的变化

主工程的变化是在Configuration的设置,引入Pods之前主工程test的Configuration中Debug和Release下面没有configuration,如图所示

请添加图片描述

引入pod之后,主工程的Configuration分别在Debug和Release模式下给主工程配置了xcconfig文件。

在这里插入图片描述

我们简单看一下Pods-test.debug文件内容

GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/AFNetworking"
LIBRARY_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/AFNetworking"
OTHER_LDFLAGS = $(inherited) -ObjC -l"AFNetworking" -framework "CoreGraphics" -framework "MobileCoreServices" -framework "Security" -framework "SystemConfiguration"
PODS_BUILD_DIR = ${BUILD_DIR}
PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
PODS_PODFILE_DIR_PATH = ${SRCROOT}/.
PODS_ROOT = ${SRCROOT}/Pods
USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES

该文件中设置了下面的编译选项,这些编译选项在BuildSetting中都有对应的条目

  • GCC_PREPROCESSOR_DEFINITIONS
  • HEADER_SEARCH_PATHS
  • LIBRARY_SEARCH_PATHS
  • OTHER_LDFLAGS
  • 用户自定义的几项编译选项,包括PODS_BUILD_DIR、PODS_CONFIGURATION_BUILD_DIR、PODS_PODFILE_DIR_PATH、PODS_ROOT和USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES。

新增的Pod工程

在这里插入图片描述

我们先依次介绍一下左边的工程结构

  • Podfile:表示工程里面跟目录的Podfile文件,表示使用cocoapods管理项目,并且记录的依赖库

  • Frameworks:表示项目需要链接的framework,这是xcode里面虚拟的gruop,在项目里没有对应的物理文件目录

  • Pods:根据Podfile安装依赖库之后,每个第三方库都会在这个Gruop中有对应的目录,对应项目目录中Pods/AFNetworking/AFNetworking目录下的内容

  • Products:该Gruop存放项目及依赖的第三方库的静态库,例如本示例中

    • libAFNetworking.a :AFNetworking target将生成的静态库
    • libPods-CardPlayer.a :Pods-CardPlayer target将生成的静态库
  • Targets Support Files:target的支持文件,对应项目目录中Pods/Target Support Files/Pods-test目录下的内容

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员的修养

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值