加入收藏 | 设为首页 | 会员中心 | 我要投稿 汽车网 (https://www.0577qiche.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 教程 > 正文

iOS-CocoaPods原理

发布时间:2023-04-01 13:56:13 所属栏目:教程 来源:
导读:CocoaPods是IOS项目上负责管理依赖的工具,即对第三方库的依赖。

CocoaPods 的原理是将所有的依赖库都放到另一个名为Pods的项目中, 然而让主项目依赖Pods项目,
这样,源码管理工作任务从主项目移到了Pods项目中.
CocoaPods是IOS项目上负责管理依赖的工具,即对第三方库的依赖。

CocoaPods 的原理是将所有的依赖库都放到另一个名为Pods的项目中, 然而让主项目依赖Pods项目,
这样,源码管理工作任务从主项目移到了Pods项目中.
  1.Pods项目最终会编译成一个名为libPods.a的文件, 主项目只要依赖这个.a文件即可.
  2.对于资源文件, CocoaPods提供了一个名为Pods-resources.sh的bash脚步, 该脚本在每次项目
    编译的时候都会执行,将第三方库的各种资源文件复制到目标目录中.
  3.CocoaPods通过一个名为Pods.xcconfig的文件在编译设置所有的依赖和参数

IOS工程有3种库项目,framework,static library,Meta library,我们通常只使用前两种。我们在使用static library库工程时,一般使用它编译出来的静态库libxxx.a,以及对应的头文件,在写应用时,将这些文件拷贝到项目里,然后将静态库添加到链接的的依赖库路径里,并将头文件目录添加到头文件搜索目录中。而framework库的依赖会简单很多,framework是资源的集合,将静态库和其头文件包含在framework目录里。

CocoaPods同时支持static library和framework的依赖管理,下面介绍这两种情况下CocoaPods是如何实现构建上的依赖的

static library
先看一下普通的项目的文件结构

Cardplayer

├── Cardplayer

│   ├── Cardplayer

│   ├── Cardplayer.xcodeproj

│   ├── CardplayerTests

│   └── CardplayerUITests

├── exportOptions.plist

└── wehere-dev-cloud.mobileprovision

然后我们使用Pod来管理依赖,编写的PodFile如下所示:

project 'Cardplayer/Cardplayer.xcodeproj'

target 'Cardplayer' do

pod 'AFNetworking', '~> 1.0'

文件结构的变化
然后使用pod install,添加好依赖之后,项目的文件结构如下所示:

Cardplayer

├── Cardplayer

│   ├── Cardplayer

│   ├── Cardplayer.xcodeproj

│   ├── CardplayerTests

│   └── CardplayerUITests

├── Cardplayer.xcworkspace

│   └── contents.xcworkspacedata

├── PodFile

├── Podfile.lock

├── Pods

│   ├── AFNetworking

│   ├── Headers

│   ├── Manifest.lock

│   ├── Pods.xcodeproj

│   └── Target\ Support\ Files

├── exportOptions.plist

└── wehere-dev-cloud.mobileprovision

可以看到我们添加了如下文件

PodFile 依赖描述文件

Podfile.lock 当前安装的依赖库的版本

Cardplayer.xcworkspace

xcworkspace文件,使用CocoaPod管理依赖的项目,XCode只能使用workspace编译项目,如果还只打开以前的xcodeproj文件进行开发,编译会失败

xcworkspace文件实际是一个文件夹,实际Workspace信息保存在contents.xcworkspacedata里,该文件的内容非常简单,实际上只指示它所使用的工程的文件目录

如下所示:

<?xml version="1.0" encoding="UTF-8"?>

<Workspace

version = "1.0">

<FileRef

location = "group:Cardplayer/Cardplayer.xcodeproj">

</FileRef>

<FileRef

location = "group:Pods/Pods.xcodeproj">

</FileRef>

</Workspace>

(编辑:汽车网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章