ios - Xcode 重复复制包资源

标签 ios xcode

我有一个关于 Xcode 和捆绑资源副本的问题。

我目前正在处理一个包含大型 Assets 库的项目。因此,全新安装或捆绑资源中的更改保证了"new"捆绑资源的副本。

但是,我目前面临的问题是 Xcode 每次构建应用程序时都会复制整个 Assets 库的一部分。这种行为非常奇怪,因为在我工作过的所有项目中,Xcode 仅在资源发生更改时复制资源,或者它是全新安装,或者如果有以前没有复制过的新内容。

然而,在这种情况下,它复制了全新安装的所有资源(预期)。但是,在每次连续构建时,它仍然会复制一些文件。现在这非常奇怪,因为所有文件都没有更改,并且它没有复制所有文件,只是其中的一小部分。还有一件事 - 如果我在模拟器上使用相同的配置运行相同的应用程序,则不会发生复制(奇怪的事情)。

是否有一些我可以更改的设置,或者我可以添加一个标志来防止这种情况发生?

在此先感谢您的帮助!

干杯!

最佳答案

这个问题被问到已经一个月了,我设法找到了“某种解决方法”的解决方案。

现在,我之所以将其作为已接受的答案放入其中,主要是因为在撰写本文时尚未发布其他答案/解决方案。如果发布了更好的答案(或者如果我有更新),我一定会将更好的答案标记为已接受的答案。

无论哪种方式,如果您拥有一组不会在连续构建过程中发生变化的超大 Assets ,这种“变通办法”就会奏效。

我正在处理的项目有很多已经准备好的音频和视频文件,并且不会更改(除了偶尔重新录制或类似的东西)。

因此,正如我的问题所述,Xcode 正在复制资源的一个子集。理想情况下,一旦资源被复制(并且没有对其进行更改),它就不会在连续的构建中被重新复制(至少不应该被重新复制)。就我而言,它在每次连续运行时都会被复制,导致我的总构建开始时间约为 15 ~ 20 分钟。我还想指出,无论我们是否在构建阶段使用“运行脚本”,或者我们的 Xcode 项目中是否有媒体,我们都面临着同样的问题。

解决方法: 我所做的是清理我的项目,删除应用程序,然后重新安装。因此,第一次,它将所有文件复制到应用程序中。此外, Assets 目录在我的 Xcode 项目中NOT。我们添加了一个“运行脚本”阶段,其中我们在每次构建期间运行 rsync 以将媒体从媒体文件夹复制到应用程序。

现在,一旦应用程序完成全新构建;它会复制所有必需的媒体文件。

然后,删除/禁用脚本,在 Xcode 中执行清理(command + shift + K)并再次运行项目。这一次,由于没有运行脚本,并且 Xcode 执行了清理,现在它认为它需要做的就是重新编译二进制文件,因此构建速度非常快。因为我没有删除了应用程序,媒体文件夹仍在我的应用程序中,我的构建开始时间现在大约是 30 秒 ~ 1 分钟(这包括沙盒和代码签名)。代码签名和“沙盒”应用程序仍然需要时间,但这比每次我点击运行时都要等待 15 ~ 20 分钟要好得多。 :)

希望这对您有所帮助!

关于ios - Xcode 重复复制包资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14697942/

相关文章:

ios - NSURLSession dataTaskWithURL 非常 "slow"

iphone - 如何监控我的应用程序消耗了多少内存?

swift - 打印或控制台打印输出的不同值

ios - 使用 Swift Package Manager 包的 iOS 应用程序的 Xcode 导出本地化失败 : No such module UIKit

ios - 授予 ViewController 访问数据和 Controller 类的权限

.net - iOS中如何实现用户注册和认证?

iphone - 如何使 UINavigationBar 不下推 View ?

ios - GPUImage2 - 如何获取处理后的视频 URL 以保存在设备中?

xcode - 为什么 autoshrink 不能正常工作?

ios - 在 Swift 中获取表格内容的高度