在 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 install
。
cocoapods-binary
提供了这个选项来决定这个 pod 是应该是源代码还是应该转换成二进制。
这个插件好像来自中国独角兽Mei Tuan。并且,他们没有使用方案一在源代码和二进制之间进行切换,而是使用了一种更棘手的方式将二进制转换为源代码。
目前,我正在尝试在 CocoaPods 中使用预编译时找到更多在源代码和二进制文件之间切换的解决方案。你想了解一下吗?谢谢。
【问题讨论】:
【参考方案1】:我也遇到过类似的问题并开发了自己的实用程序?Rugby。
在当前版本中,Rugby
可以缓存所有远程 pod 依赖项,并将其目标从Pods
项目中删除。
另外,Rugby
不会更改 Podfile
。您可以使用pod install && rugby
处理缓存,或者只使用pod install
处理源代码。
【讨论】:
以上是关于在 Cocoapods 中使用预编译时是不是可以在源代码和二进制文件之间切换的主要内容,如果未能解决你的问题,请参考以下文章