子目录中的资源文件将复制到应用程序包的根目录

nee*_*vek 22 directory resources xcode

我不确定这是预期还是错误.我试图在磁盘中创建与XCode相同的文件夹结构.我使用以下步骤将资源文件添加到我的项目:

  1. Resources在项目的根文件夹下创建一个文件夹.
  2. Resources文件夹拖到XCode,Group为该文件夹创建一个.
  3. 将我的资源文件拖到XCode中FinderResources文件夹.

现在我可以看到Build Phrases- > 中列出了所有资源文件Copy Bundle Resources.

奇怪的是[[NSBundle mainBundle] pathForResource:@"book" ofType:@"epub"]返回一个可以定位的文件路径,同时[[NSBundle mainBundle] pathForResource:@"book" ofType:@"epub" inDirectory:@"Resources"]返回(null).

Build Results窗口,我注意到这一行:

CpResource MBookReader/Resources/book.epub /Users/neevek/Library/Developer/Xcode/DerivedData/workspace-fykuaikryknuhxgevcdtspkspptj/Build/Products/Debug-iphonesimulator/MBookReader.app/book.epub
cd /Users/neevek/workspace/xcode_projects/MBookReader
setenv PATH "/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin:/Applications/Xcode.app/Contents/Developer/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin"
builtin-copy -exclude .DS_Store -exclude CVS -exclude .svn -exclude .git -exclude .hg -resolve-src-symlinks -strip-tool /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/strip /Users/neevek/workspace/xcode_projects/MBookReader/MBookReader/Resources/book.epub /Users/neevek/Library/Developer/Xcode/DerivedData/workspace-fykuaikryknuhxgevcdtspkspptj/Build/Products/Debug-iphonesimulator/MBookReader.app
Run Code Online (Sandbox Code Playgroud)

这表明Resources/book.epub文件确实被复制到MBookReader.app/(应用程序包的根目录).

现在Resources是磁盘中的真实文件夹,为什么不复制文件夹本身?

PS.我正在使用XCode 4.3.2.

Ale*_*lik 37

将Resources文件夹添加到Xcode时,请在滑动窗口中选择"创建文件夹引用"而不是"为任何添加的文件夹创建组".

也就是说,用以下步骤替换问题中的3个步骤.

  1. 在项目的根目录下创建一个Resources目录.按照您希望的方式在Resources目录中组织目录结构.
  2. Resources目录拖到XCode,然后选择Create folder references选项.

你完成了.Xcode将递归地将Resources目录的内容复制到bundle中.

当Xcode没有在Resources目录中的某个位置复制修改后的文件时,您可能会遇到麻烦.干净的构建通常可以解决这个问题.或者,您可以在构建之前删除.app文件.这不会导致未修改的源文件重建,但会强制Xcode重新复制所有资源.

示例文件夹参考

  • 无论是真实目录还是引用,似乎所有资源文件都将复制到应用程序捆绑包的根目录中,无论它们在构建项目时位于哪个目录中。 (2认同)
  • 谢谢,为我工作(XCode 7.3.x).无论如何警告 - 不要将目录命名为"Resources",否则你会遇到像[Code sign error]这样的奇怪问题(http://stackoverflow.com/a/29271922/1656515) (2认同)