我的XCode项目以多种配置的方式设置,允许我为我的应用程序的不同变体使用相同的代码库,但每个都有独特的元素,如应用程序名称,版本,包标识符,图标,启动屏幕,等我已经关注这个网站,以完成大部分设置: http://appfoundry.be/blog/2014/07/04/Xcode-Env-Configuration/
我还有一个config.plist,其中包含与每个XCode配置相关联的各种唯一设置,这些设置只能在构建时成功复制。以下是运行脚本构建阶段的片段:
RESOURCE_PATH=${SRCROOT}/${PRODUCT_NAME}/config/${CONFIGURATION}
BUILD_APP_DIR=${BUILT_PRODUCTS_DIR}/${PRODUCT_NAME}.app
echo "Copying all files under ${RESOURCE_PATH} to ${BUILD_APP_DIR}"
cp -v "${RESOURCE_PATH}/"* "${BUILD_APP_DIR}/"
我的下一个目标是能够在构建时复制特定配置的资产目录,以避免将所有不同配置的图像捆绑到构建中,从而导致它变得臃肿。我使用Run Script尝试了与上面相同的解决方案,更改了复制行以包含递归选项(因为资产目录本质上是一个目录):
cp -rv "${RESOURCE_PATH}/"* "${BUILD_APP_DIR}/"
然而,当我这样做时,我的应用程序无法构建并说它无法找到应用程序图标并启动图像。有什么想法吗?
答案 0 :(得分:24)
这是你可以做的工作:
EXCLUDED_SOURCE_FILE_NAMES
用户定义设置。
通过这样做,Xcode将只编译适当的资产目录,而忽略其他资产目录。我已经在我们的一个项目中对此进行了测试,并且按预期工作。
祝你好运!备注:如果您正在使用CocoaPods,您可能会遇到麻烦,因为CocoaPods会添加自己的构建步骤来编译您的资产,并将您的依赖项添加到.car文件中。有关此问题的讨论,请参阅https://github.com/CocoaPods/CocoaPods/issues/1546。 TL; DR:确保此步骤不在构建阶段执行,或者编辑它们执行的CocoaPods脚本以不进行资产构建。
更新时间:2009年1月19日:使用最新的稳定Xcode(10.1)和Cocoapods(v1.5.3),它们开箱即用。无需更改Cocoapods脚本或构建步骤,只需按照描述设置EXCLUDED_SOURCE_FILE_NAMES
。