ios - 无论如何在 Cocoapods 中使用预编译时在源代码和二进制文件之间切换

标签 ios xcode binary cocoapods reverse-engineering

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

这个CocoaPods插件主要做的是:

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

但是,一旦依赖被转换成二进制文件。开发者在开发时调试难度很大。

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

  2. 这个插件好像来自 unicorn ,Mei Tuan .并且,他们没有使用解决方案 1 在源代码和二进制文件之间切换,而是使用更棘手的方法将二进制文件转换为源代码。

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

最佳答案

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

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

关于ios - 无论如何在 Cocoapods 中使用预编译时在源代码和二进制文件之间切换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62688633/

相关文章:

cocoa-touch - 第一次点击 UITextField 时发生奇怪的崩溃

ios - 以编程方式显示模态视图时出现问题

coldfusion - 如何使用 ColdFusion 显示 Active Directory jpegPhoto?

c - 如果将正数左移为负值,为什么会得到负结果?

ios - UIImagePickerController - 自定义覆盖上的重新拍摄按钮(Swift)

ios - CoreData 不跨多个 iOS 设备存储数据

ios - 仅在 Testflight 构建时应用程序崩溃

iphone - 在 iPhone 的 LinkedIn 集成中共享图像

ios - 无法使具有标识符 Cell 的单元格出列 - 必须为标识符注册一个 nib 或一个类,或者在 Storyboard中连接一个原型(prototype)单元格?

c# - 如何在 C# 中读取 SQL 二进制字段