在 Cocoapods 中使用预编译时是不是可以在源代码和二进制文件之间切换

Posted

技术标签:

【中文标题】在 Cocoapods 中使用预编译时是不是可以在源代码和二进制文件之间切换【英文标题】:Is there anyway to switch between source code and binary when using pre-compiling in Cocoapods在 Cocoapods 中使用预编译时是否可以在源代码和二进制文件之间切换 【发布时间】:2020-10-22 14:20:36 【问题描述】:

我有一个庞大的 Xcode 项目,使用 CocoaPods 和 150 多个依赖项。没有 Xcode 构建缓存的索引时间和构建时间是一场噩梦,Xcode 响应速度较慢。所有这些原因都阻碍了我们的有效发展。所以我们将在我们的项目中使用Pre-compiling。

这个CocoaPods插件主要做的是:

    下载源代码到Pods/_prebuild/xxx文件夹 在温带文件夹Pods/build 文件夹中构建静态框架 生成静态框架,最后存放在Pods/_prebuild/generatedFrameworks文件夹中 构建完成后,删除Pods/_prebuild/xxx中的源代码,在Pods文件夹中生成xxx文件夹,其中包含指向Pods/_prebuild/generatedFrameworks文件夹中static framework的符号链接。此外,如果您在Podfile 中使用keep_source_code_for_prebuilt_frameworks,则可以将源代码保存在Pods/_prebuild/ 文件夹中。

但是,一旦将依赖项转换为二进制文件。开发者在开发时调试非常困难。

    一个简单的解决方案是使用 pod "ExpectoPatronum", :binary => true | false 并再次使用pod installcocoapods-binary 提供了这个选项来决定这个 pod 是应该是源代码还是应该转换成二进制。

    这个插件好像来自中国独角兽Mei Tuan。并且,他们没有使用方案一在源代码和二进制之间进行切换,而是使用了一种更棘手的方式将二进制转换为源代码。

目前,我正在尝试在 CocoaPods 中使用预编译时找到更多在源代码和二进制文件之间切换的解决方案。你想了解一下吗?谢谢。

【问题讨论】:

【参考方案1】:

我也遇到过类似的问题并开发了自己的实用程序?Rugby。 在当前版本中,Rugby 可以缓存所有远程 pod 依赖项,并将其目标从Pods 项目中删除。

另外,Rugby 不会更改 Podfile。您可以使用pod install && rugby 处理缓存,或者只使用pod install 处理源代码。

【讨论】:

以上是关于在 Cocoapods 中使用预编译时是不是可以在源代码和二进制文件之间切换的主要内容,如果未能解决你的问题,请参考以下文章

在使用 github 操作进行构建期间执行诗歌安装时,使用预编译的 numpy 包而不是构建它

Cocoapods:确定 pod 版本

CocoaPods安装使用

在应用程序扩展中找不到库中的 cocoapods

第三个库在编译期间报告错误(使用 cocoaPods)

理解 ASP.NET 预编译