强制Xcode在构建时始终复制资源文件夹

8

好的,情况相当简单(尽管无法解决...):

  • 我有一个文件夹引用,在我的Xcode项目中,主要包含HTML/JS/CSS资源,经常使用外部编辑器进行更改
  • 我希望这个特定的文件夹在每次构建时重新复制到应用程序包中,而不必清理项目(该项目非常庞大,因此不必要的重新编译是浪费时间的)

我尝试添加自定义Build Phase(运行脚本),通过 touch 文件夹或在资源文件夹中创建虚拟文件并随后删除它,但都没有起作用。

有什么想法吗?

2个回答

4

对我最终奏效的方法:

  • Create a "Run" Build Script phase, before Copy Bundle Resources
  • Set the script as follows:

    find "${SRCROOT}/path/to/resources/$1" -type f -print0 | xargs -0 touch
    

为什么不编写一个脚本来为您完成复制呢? - trojanfoe
@trojanfoe 嗯,有趣的是在我解决这个问题(并为此奋斗了2个小时...)几分钟后,我就想到了这个(显而易见的)解决方案!哈哈。 :-) - Dr.Kameleon
唯一的问题是您需要在正常构建和归档构建中使用正确的Xcode提供的环境变量才能使其工作。虽然不是微不足道的,但我过去曾编写过签名和复制文件的脚本,因此肯定是可行的 :) - trojanfoe
我使用一个复杂的 rsync 脚本,它会按原样复制一个“资源文件夹”。然而,Xcode 在模拟器和设备上无法正确地“同步”资源:例如,在构建中已删除的资源文件如果在之前的构建中存在,则不会从设备中删除。你必须从设备中删除应用程序才能解决这个错误。没有其他解决方法。 - CouchDeveloper

2

我已经测试过,如果将文件的最后修改日期更改为现在,Xcode将生成该包中的新文件。

使用您的脚本新建一个运行脚本构建阶段,该脚本必须在复制包资源之前运行。

enter image description here

在脚本中,枚举每个资源文件并使用touch -m filename命令。


谢谢!接近了但还是没能解决我的问题。我会发出最终可行的解决方案。 - Dr.Kameleon

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接