cocoapods 如何确定源中的哪些文件要保留在安装中?

How does cocoapods determine which files from source to keep in installation?

例如,让我们使用 AdColony 视频广告平台。我将 pod 'AdColony' 放入我的 Podfile 并在 运行 宁 pod install 之后,我的 Pods 目录中有一个 AdColony 文件夹(并且 Xcode 项目被配置为能够使用它)。

现在,该文件夹包含两个项目:AdColony.framework iOS 框架和一个 README.md 文件。正是您所需要的,对吧?然而,当深入一点时,事情变得神秘起来。

AdColony Cocoapods page has a link 到 Podspec。其中,我们有以下条目:

"source": {
"git": "https://github.com/AdColony/AdColony-iOS-SDK-3.git",
"tag": "v3.2.1"
}

如果你去 github 项目和标签,你会看到它有 pod 的内容,但它还有其他东西:一个 SampleApps 文件夹,一个 CHANGELOG.md 文件和 W-9 PDF。 None 个出现在 Pods 目录中。

如果您不仅从项目中删除 pod,而且从计算机的缓存中删除 pod,并且 运行 pod install --verbose,您将在控制台中看到 git 命令。它看起来像这样:

/usr/bin/git clone https://github.com/AdColony/AdColony-iOS-SDK-3.git
 /var/folders/jp/lm8trz8d7nl1pf4_mh690dvr0000gn/T/d20180112-57517-1j1p7dc
 --template= --single-branch --depth 1 --branch v3.2.1

运行 自己命令(减去目标路径的随机字符串)生成一个文件夹,其中包含您在 git 中心页面上看到的所有内容--- SampleApps 文件夹,等等

在这个克隆过程和将 AdColony 文件夹放入我项目的 Pods 目录之间的某个地方,cocoapods 删除了不需要的文件。

这是什么时候发生的?

cocoapods 如何知道要删除和保留哪些文件?

这是开发者可以控制的吗?如果可以,怎么做?

是否记录了这些内容?

它在 Cocoapods 的幕后工作。它的作用是从您的框架中获取 podspec - podspec 将定义必要的文件 minus SampleApp。

尝试转到 podspec 并查找 public_headerframeworkssource_file(如果 git 包含任何来源)。

我强烈建议您在本地工作区创建一个示例 pod 并试用它:)