xcode在部署时运行脚本

时间:2013-01-08 17:12:36

标签: ios cocos2d-iphone xcode4.5

我有一个游戏中有xml文件。我的游戏适用于iPad和iPhone,我需要相应地对这些xml文件进行一些更改,但xml文件是原始的,我不希望它们被更改,所以我想要的是我的xml文件在编译时自动更改。为此我有一个ruby脚本,它可以满足我的需要。 假设这个脚本是level_converter.rb 我可以执行(在终端中)如下:

for f in Resources/*.xml; do ruby level_converter.rb "$f"; done

所以我将此代码添加到Build Phases to Run Script这样做,这确实按预期工作,它确实正确地更改了所有xml文件,但是它改变了资源中的原始xml文件。所以说如果我跑了两次 - 我会将这些文件更改两次。我想要的是这些文件保持不变,但只有那些部署应该改变。所以我需要某种$(PROJECT_DISTRIBUTION_AND_DEVELOPEMENT_TEMP_FOLDER)或类似的东西,而不仅仅是Resorces / * .xml例如。

for f in $(PROJ_DISTRIB_AND_DEV_TMP_FLDE)/*.xml; do ruby level_converter.rb "$f"; done

编辑:问题一定不是那么清楚,所以我已经改写了

此致 伊戈尔

1 个答案:

答案 0 :(得分:0)

我能够实现我想要的,这是脚本:

PROJ_DIR=${PWD}

echo "Converting xml files..."
for f in "${CODESIGNING_FOLDER_PATH}/"*.xml
do
    cp $PROJ_DIR/Resources/"${f##*/}" "$f"
    ruby level_converter.rb "$f" $PROJ_DIR/key_hash;
done

exit 0;

所以我使用了这个$ {CODESIGNING_FOLDER_PATH}变量。

说明:

  • for for迭代目标目录中的* .xml文件
  • cp $ PROJ_DIR / Resources /“$ {f ## * /}”“$ f”:只要xcode仅在更改资源时才复制资源我必须手动复制xml文件以防止它们被转换更多然后一次 - 所以每次构建都会执行转换器,所以它应该有原始文件来转换
  • ruby​​ level_converter.rb“$ f”$ PROJ_DIR / key_hash; :这只是执行脚本

这样做我不想但是有缺点/疑点:

  • 我不时会收到警告,指出已更改或删除的签名资源(尽管这并不令我感到惊讶)。也许有办法压制这个?它确实阻止了应用程序被沙盒化,我必须再次构建并希望下次不会发出警告。幸运的是,它经常不会出现
  • 构建需要更长时间,如果原始文件在哪里更改并且只在必要时执行脚本仍然很好
  • 我仍然认为应该有一些“正确”的方式来达到我想要的目标
  • 我不确定我是否正确选择了变量CODESIGNING_FOLDER_PATH,也许我应该再使用另一个

编辑:我在编译源代码之前移动了运行脚本,并且从那时起没有收到有关已签名资源的任何警告。徘徊,如果这是原因

相关问题