0

我正在构建一个存在两个不同“版本”的应用程序。每个版本都有不同的布局(不同的字符串、图像、颜色和字体)。我使用宏实现了这一点:所有类中都包含一个头文件(我们现在称之为 Layout.h)。Layout.h 包含一个#define确定应该构建哪个版本的语句。如果这个声明,我们称之为DARK_STYLE,是真的,DarkStyle.h是进口的。如果陈述为假,BrightStyle.h则包括在内。两者DarkStyle.hBrightStyle.h都包含相同的定义,但具有不同的值。例如:

<DarkStyle.h>
#define TEXT_COLOR      [UIColor blackColor]

<BrightStyle.h>
#define TEXT_COLOR      [UIColor whiteColor]

到目前为止,一切都很好。现在我已经到了必须交付应用程序的地步。不幸的是,每个版本都有不同的应用程序图标和不同的启动画面。我现在要做的是使用 Xcode 构建脚本根据 Layout.h 中的 DARK_STYLE 宏自动生成应用程序的 Icon.png 和 Default.png 文件。

我此时拥有的构建脚本能够确定 DARK_STYLE 是设置为 1 还是 0。下一步是我遇到的麻烦:将属于深色样式的 Icon.png 和 Default.png 资产复制到应用程序的捆绑包(构建脚本在“复制捆绑资源”阶段之后执行)。

以下不起作用:

if find $SRCROOT -name "Layout.h" -exec echo {} \; -exec grep "#define DARK_STYLE" {} \; -exec grep 1 {} \;
then

# Copy dark style resources and rename them
find $SRCROOT -name "dark_icon.png" -exec cp "{}" "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/" \;
mv "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/dark_icon.png" "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Icon.png"

else
find $SRCROOT -name "bright_icon.png" -exec cp "{}" "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/" \;
mv "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/bright_icon.png" "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Icon.png"

fi

我在这里想念什么?

4

1 回答 1

0

在您的 Xcode 项目中为应用程序的每个版本创建一个单独的构建目标。确保每个目标都包含每个资产的正确版本。

于 2013-08-31T11:45:32.880 回答