【问题标题】:Build phase that create a Plist and copy it in resource bundle创建 Plist 并将其复制到资源包中的构建阶段
【发布时间】:2013-08-28 02:19:50
【问题描述】:

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

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

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

此脚本输出以下文件夹${PROJECT_DIR}/plistr/output/data.plist中的plist

我不知道如何将它复制到 Bundle 资源中,以便我可以通过以下方式访问它:

[[NSBundle mainBundle] pathForResource:@"data" ofType:@"plist"];

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

【问题讨论】:

    标签: xcode


    【解决方案1】:

    您可以通过这种方式将文件复制到包中:

    cp /tmp/foo.txt ${BUILT_PRODUCTS_DIR}/${PRODUCT_NAME}.app
    

    请注意,不建议将 info.plist 复制到包中,如果在复制包资源构建阶段复制也会产生警告。

    this official statement

    【讨论】:

    • 能否修复“官方声明”的链接,这似乎不是指向任何内容的有效链接。谢谢。
    • 那篇文章说复制应用程序的 Info.plist 文件而不是 plist 唯一不好(就像 OP 正在做的动态生成的 plist)
    • @NickWeaver 我有一些类似于您在生成商店或临时构建之前将文件复制到 .app 文件的东西。但是,这样做似乎会损坏文件并且您无法在手机上安装它(它会说无法安装该应用程序)。你遇到过这个问题吗?
    • @kevinl 不抱歉,但看看答案的日期,它可能已经过时了,不可能了。
    • @NickWeaver 谢谢。我想到了。我在我的 Resources 文件夹下创建了一个名为“Cached”的文件夹。我将“缓存”文件夹拖到 xcode 中(最初为空),但是当“文件和组”选项出现时,您检查“为任何文件夹添加的任何文件夹引用”。从那里一切都应该很好。我使用基本的 shell 脚本将缓存的图像复制到新创建的“缓存”文件夹中,以便该文件夹将添加在构建期间放置在其中的任何资源:)
    猜你喜欢
    • 2019-05-03
    • 2018-04-16
    • 1970-01-01
    • 1970-01-01
    • 2012-06-25
    • 1970-01-01
    • 2020-09-16
    • 2013-11-15
    • 1970-01-01
    相关资源
    最近更新 更多