我正在美国和中国部署iOS应用程序。应用程序的行为几乎相同,但逻辑略有不同。例如:我们使用电子邮件注册帐户,但在中国使用电话号码。除此之外,app中使用的语言显然不同。
我们将向美国和中国的应用程序商店提交两个不同的应用程序,但我们遇到了这个问题:两个版本共享相当数量的代码库(95%)。话虽如此,如果将来我们需要为应用添加未来,我们必须手动迁移更改,因为我们无法使用git(我假设是因为它们是不同的项目吗?)。这肯定是不可取的。但是现在我觉得没办法绕过它。
任何人都可以就接近此类问题提出任何建议吗?也许有一个git技巧?或者我们不应该首先使用两个不同的项目?如果没有,那么更好的方法是什么?
提前致谢。
答案 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。