根据活动配置将文件复制到捆绑包

时间:2011-03-22 09:37:47

标签: xcode ios configuration bundle

是否可以根据活动配置控制将哪些文件复制到捆绑包中?我不想为此添加另一个目标,所以这不是一个选项。

现实生活中的例子是一个启动视频,其实际上是8mb大小且很长。应用程序的每次启动都会显示此视频令人讨厌。我不想破解太多代码,因此解决方案是一个非常短的启动视频,这是在调试配置处于活动状态时复制到捆绑包的候选者。

是的,我可以将调试视频设置得非常小,因此如果它与发行版一起提供并不会受到影响,但为了学习新东西,我需要一种方法来控制根据配置复制哪个文件。我想一个Run Script会这样做,但也许有一个我看不到的简单解决方案。

提前致谢!

4 个答案:

答案 0 :(得分:26)

我找不到比使用Run Script更好的解决方案。最佳参考是Copy file to the App Resources directory if debug configuration is selected

我用这个运行脚本解决了我的问题:

RESOURCE_PATH=$SRCROOT/ResourcesCopiedByRunScript

FILENAME_IN_BUNDLE=splashVideo.mp4

BUILD_APP_DIR=${BUILT_PRODUCTS_DIR}/${PRODUCT_NAME}.app

if [ "$CONFIGURATION" == "Debug" ]; then
    cp $RESOURCE_PATH/shortDebugSplashVideo.mp4 $BUILD_APP_DIR/$FILENAME_IN_BUNDLE
else
    cp $RESOURCE_PATH/productionSplashVideo.mp4 $BUILD_APP_DIR/$FILENAME_IN_BUNDLE
fi

答案 1 :(得分:4)

如果您可以为这两个不同的文件指定相同的名称,则可以将它们放在构建产品文件夹中以进行相应的配置。然后将其中一个添加到项目中,并使其成为相对于构建产品的引用。

如果要将文件存放在其他位置,可以在构建产品文件夹中放置符号链接。但是我不确定如果文件名称不同但符号链接名称相同,它是否会起作用。

我已经在Mac项目上完成了这个技巧,我认为它也适用于iOS。

编辑:这是我做过的一个例子:我希望我的应用程序的调试版本链接到某个库的调试版本,我希望应用程序的发布版本链接到版本的发布版本图书馆。所以我将调试库(或符号链接)放到app build文件夹的Debug子文件夹中,然后将发布库放入app build文件夹的Release子文件夹中。然后,当我将库添加到项目中时,我指定引用是“相对于构建产品”。

答案 2 :(得分:1)

使用图像中显示的构建设置下的排除源文件名是最好的方法。

enter image description here

答案 3 :(得分:0)

您可以在编译步骤之前使用运行脚本将一个文件替换为另一个文件

RESOURCE_PATH=$SRCROOT/SampleProject/SupportingFiles/

LICENSE=license.txt
LICENSE_PROD=license_prod.txt

if [ "$CONFIGURATION" == "Release" ]; then
cp $RESOURCE_PATH/$LICENSE_PROD $RESOURCE_PATH/$LICENSE
fi