CocoaPods 自学笔记 -- 基础篇

CocoaPods 自学笔记 -- 基础篇

告别了只会 pod init、pod install 的时期~

CocoaPods 简介

CocoaPods 是用 ruby 语言编写的用来管理 iOS 项目的依赖管理器。

为什么要使用 CocoaPods ?

以前使用第三方库步骤:

拷贝源码

手动添加 framework

设置 BuildPhrase

若有组件升级,需要重新走一遍以上流程。整个流程很繁琐、浪费时间且容易出错!

Use CocoPods:

中心化配置:所有依赖的第三方库都配置到 Podfile 文件下进行依赖和版本控制。便于管理和更新

一键集成:只需运行 pod install 即可把所有依赖安装进项目中

自动处理依赖关系

CocoaPods 原理

在 pod install 的时候 CocoaPods 会根据填写在 Podfile 中的名字,在拉取的 source 的 podspec 仓库中找到它们对应的 .podspec 文件。.podspec 文件记录了该依赖的 remote url 和安装方式以及依赖关系。通过 .podspec 就可以将依赖下载并安装到本地项目中。

CocoaPods 与 Bundler

除了 CocoaPods 和 Bundler,这里再引入一个 RVM 工具。

RVM 与 Ruby

RVM 是一个管理多个 Ruby 环境的工具,可以提供一个便捷的多版本 Ruby 环境的管理和切换。通过 RVM 我们可以轻松的切换 Ruby 的版本,从而使用不同的 Ruby 环境。

Ruby 和 RubyGem

RubyGems 简称 Gem,是一个用于对 Ruby 组件进行管理及打包的工具。通过 Gem 我们可以管理多个 Ruby 工具集。在日常 gem install xxx 的时候,其实是通过 rubygems.org 网站去查询对应的 Gem Package。

我们日常用到的很多工具都是一个 Gem 工具,例如:Bundler、CocoaPods、Fastlane 等等。

CocoaPods 和 Bundler (Bundle)

Bundler 是一个 Ruby 工具,是一个 Gem。Bundler 是用来管理项目中 Gem 依赖和版本的工具。如果我们用一个 iOS (Android、JavaScript、Python)工程来类比一个 Ruby 工程,Bundler 就相当于工程中的 CocoaPods(Gradle、npm 或者 yarn、pypi)。

Bundler 这个工具中,也有对应的来描述这个工程的依赖关系的文件 – Gemfile 。其中使用 Ruby 的语法来描述工程所需依赖、版本等信息。

实战部分

编写 Podfile

其中的 source 、workspace 如果你不修改的话,默认不用显性声明,inhibit_all_warnings!是可选配置。

安装依赖

pod install 后,新增 Podfile.lock、Pods/、xxx.xcworkspace

Podfile.lock: 第一次pod install后生成的文件,Podfile.lock 中会标注项目当前依赖库的准确版本,其中包括了项目在 Podfile 中直接标注使用的库,以及这些库依赖的其他库。

xxx.xcworkspace: 组织了 xxx.xcodeproj 和 Pods.xcodeporj 后续在这个工作区开发

Pods/ : 所有 Pod 的目录,每一个 Pod 对应 Pods 的一个 target 这个 target 最终会被打包为一个静态库 .a 。工程还有一个 Pods-xxx 的 target 最终打包为一个总的 Pods-xxx.a 被项目所依赖。

Pods/ 内容

各个 Pod 包括:

源码

.xcconfig:编译说明书

.pch:预编译处理文件

.dummy.m:类的空实现

Pods-xxx 额外包括:

debug/release.xcconfig:对应主 Project –> Info –> Configurations 里的 xcconfig

resources.sh:编译或处理 .storyboard、.xcassets 等资源文件

framework.sh:用于实现 framework 类型第三方库的链接

Headers:头文件的软链接,HEADER_SEARCH_PATHS 的搜索目录

Mainfest.lock:Podfile.lock 的拷贝文件

Target Support Files:存放 build 时所依赖的一些文件

版本控制

Pod/:因为这里面的 Pod 文件本身有 Pod 各自的远程仓库去存放。无需加入版本控制,在 .gitignore 里申明忽略就好。

Podfile.lock:可以保证 pod install 后依赖的第三方库版本一致。不会出现 UserA pod install 后,某个依赖升级,导致后面 UserB pod install 工程里某个依赖版本跟 UserA 不一样的情况。

创建自己的私有 Pod

创建步骤

创建 Pod 工程

1

pod lib create PodName

编写代码

编写 .podspec 文件

提交代码,按照 .podspec 中的 .version 打 tag

校验 .podspec 文件,包括语法规则和内容完整性等

1

2

3

# 项目中若有依赖静态库,则需要 --uer-libraries

# 在Pod中warnings都会被当成error,所以需要忽略 --allow-warnings

pod lib lint --use-libraries --allow-warnings

创建 podsepc 远程仓库

将 podspec 远程仓库拉取到本地

1

pod repo add RepoName url

将 .podspec 文件推送到远程仓库

1

2

# 根据情况在项目中加入 --uer-libraries 和 --allow-warnings

pod repo push RepoName xxx.podspec

使用

要在项目中使用创建的私有 Pod,则需要在 Podfile 中添加

1

source 'https://xxxx' # 或者 @git...

相关推荐

欣玥可以当名字吗,欣玥这个名字的含义是什么
朱光潜 | 陶渊明

朱光潜 | 陶渊明

11-16 💫 403
app真的能赚钱吗?来了解试玩app的盈利模式
足球jpg格式

足球jpg格式

10-07 💫 4364

本文标签