如何管理不同地区和语言的单个应用程序的2个版本?

时间:2014-07-05 03:02:06

标签: ios xcode git cocoa app-store

我正在美国和中国部署iOS应用程序。应用程序的行为几乎相同,但逻辑略有不同。例如:我们使用电子邮件注册帐户,但在中国使用电话号码。除此之外,app中使用的语言显然不同。

我们将向美国和中国的应用程序商店提交两个不同的应用程序,但我们遇到了这个问题:两个版本共享相当数量的代码库(95%)。话虽如此,如果将来我们需要为应用添加未来,我们必须手动迁移更改,因为我们无法使用git(我假设是因为它们是不同的项目吗?)。这肯定是不可取的。但是现在我觉得没办法绕过它。

任何人都可以就接近此类问题提出任何建议吗?也许有一个git技巧?或者我们不应该首先使用两个不同的项目?如果没有,那么更好的方法是什么?

提前致谢。

1 个答案:

答案 0 :(得分:2)

根据我们的讨论,建议在同一个项目中使用Targets,重用代码并将其签入一个repo。以下是我在同一个项目中维护多个目标的方法。

在目标US构建设置,预处理器宏中,添加以下内容:

TARGET='TARGET_US'

在目标China构建设置,预处理器宏中,添加以下内容:

TARGET='TARGET_CN'

然后在代码中,使用预处理器来检查:

#define STRINGIZE(str) #str
#define STRINGIZE_MACRO(str) STRINGIZE(str)

#ifdef TARGET
    if (STRINGIZE_MACRO(TARGET)=="TARGET_US") {
        // US app logic goes here
    } else if (STRINGIZE_MACRO(TARGET)=="TARGET_CN") {
        // China app logic goes here
    }
#endif

另外,我只想指出有一种方法可以将Compiled源文件与Targets相关联,它可以在Build Phases中找到。您可以选择编译所需的代码文件。例如,对于目标US,添加main-us.m和USAppDelegate.m进行编译,对于目标China,使用main-china.m和ChinaAppDelegate.m。