根据构建配置嵌入不同的框架

时间:2019-02-26 18:11:59

标签: ios xcode macos frameworks

我有4种构建配置:

  • 调试
  • 发布
  • WhiteLabelDebug
  • WhiteLabelRelease

Configurations

DebugRelease应该链接并嵌入我的自定义LightTheme.framework,而不是WhiteLabelTheme.framework

WhiteLabelDebugWhiteLabelRelease应该链接并嵌入我的自定义WhiteLabelTheme.framework,而不要嵌入LightTheme.framework

这两个框架都有一些自定义代码,本地化的字符串,颜色,字体和图像。我们使用不同的方案来构建每个配置,并将其作为完全不同的应用提交到App Store。但是,目前我们的品牌应用程序和带有白色标签的应用程序都有图像,字体,颜色,字符串等两组,这确实会损害文件的大小。

我可以轻松地将两个框架都弱链接到应用程序目标,但是我不知道如何仅基于当前配置嵌入框架。

Embed Frameworks settings

1 个答案:

答案 0 :(得分:2)

转到目标构建阶段,并添加New Run Script Phase作为最后一步。

脚本如下所示:

if [[ ${CONFIGURATION} == "WhiteLabelRelease" ]]; then
    rm -R "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/LightTheme.framework"
elif [[ ${CONFIGURATION} == "Release" ]]; then
    rm -R "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/WhiteLabelTheme.framework"
fi

在构建任何* Release版本(以及归档以供提交)时,脚本将删除相应的框架。调试时会将它们保留在适当的位置。