是否可以根据活动配置控制将哪些文件复制到捆绑包中?我不想为此添加另一个目标,所以这不是一个选项。
现实生活中的例子是一个启动视频,其实际上是8mb大小且很长。应用程序的每次启动都会显示此视频令人讨厌。我不想破解太多代码,因此解决方案是一个非常短的启动视频,这是在调试配置处于活动状态时复制到捆绑包的候选者。
是的,我可以将调试视频设置得非常小,因此如果它与发行版一起提供并不会受到影响,但为了学习新东西,我需要一种方法来控制根据配置复制哪个文件。我想一个Run Script会这样做,但也许有一个我看不到的简单解决方案。
提前致谢!
答案 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)
答案 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