创建一个Plist并将其复制到资源包中的构建阶段

3

我制作了一个Ruby脚本,可以从其他格式的数据生成一个Plist文件(该脚本位于Xcode项目文件夹中)。

我制作了一个自定义的运行脚本构建阶段来调用我的脚本:

echo "Running xls Plister"
cd ${PROJECT_DIR}/plistr
ruby plistr.rb
scriptExitStatus=$?
echo "DONE with script: (exitStatus=${scriptExitStatus})"
exit "${scriptExitStatus}"

这个脚本将输出以下文件夹中的plist:${PROJECT_DIR}/plistr/output/data.plist 我无法弄清楚如何将其复制到Bundle资源中,以便我可以使用类似于以下内容的东西进行访问:
[[NSBundle mainBundle] pathForResource:@"data" ofType:@"plist"];

编辑:我的实际解决方法是将脚本作为第一个构建步骤运行,并手动将对生成的plist的引用添加到“复制包资源”中。

1个回答

14

你可以通过以下方式将文件复制到Bundle中:

cp /tmp/foo.txt ${BUILT_PRODUCTS_DIR}/${PRODUCT_NAME}.app
请注意,将 info.plist 复制到bundle中并不被建议,如果通过Copy Bundle Resources build phase进行复制也会产生警告。
请查看官方声明

请修复指向“官方声明”的链接,这似乎不是有效的链接。谢谢。 - Mecki
那篇文章说,仅复制应用程序的 Info.plist 文件是不好的,而不是像 OP 所做的动态生成 plist 这样的 plist。 - mgrandi
@NickWeaver 我有类似于你的东西,可以在生成商店或 adhoc 构建之前将文件复制到 .app 文件中。然而,这样做似乎会损坏文件,导致无法在手机上安装它(会显示应用程序无法安装)。你遇到过这个问题吗? - kevinl
@kevinl 不好意思,但请看回答的日期,它可能已经过时并且不再可行。 - Nick Weaver
1
@NickWeaver 谢谢。我弄清楚了。我在我的资源文件夹下创建了一个名为“Cached”的文件夹。我将“Cached”文件夹拖到xcode中(最初为空),但当“文件和组”选项出现时,您需要勾选“为任何文件夹添加创建文件夹引用”。从那里开始一切都应该就绪了。我使用基本的Shell脚本将缓存图像复制到新创建的“Cached”文件夹中,因此该文件夹将在构建期间放置在其中的任何资源 :) - kevinl

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