我正在美国和中国部署 iOS 应用程序。 App 的行为几乎相同,但逻辑略有不同。例如:我们使用邮箱注册账户,但在中国使用电话号码。除此之外,显然应用程序中使用的语言不同。
我们打算向美国和中国应用商店提交两个不同的应用程序,但我们遇到了这个问题:两个版本共享相当多的代码库 (95%)。话虽这么说,如果将来我们需要向应用程序添加 future ,我们必须手动迁移更改,因为我们将无法使用 git(我假设是这样,因为它们是不同的项目,对吗?)。这当然是不可取的。但到目前为止,我看不出有什么办法可以解决这个问题。
任何人都可以提供有关处理此类问题的建议吗?也许有一个 git 技巧?或者我们一开始就不应该使用两个不同的项目?如果不是,什么是更好的方法?
提前致谢。
最佳答案
根据我们的讨论,建议在同一个项目中使用 Targets,代码被重用并且可以 checkin 一个 repo。以下是我将如何在同一个项目中维护多个目标。
在 Target US
Build Settings 的 Preprocessor Macros 中,添加以下内容:
TARGET='TARGET_US'
在 Target China
Build Settings,Preprocessor Macros 中,添加以下内容:
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
还只是想指出,有一种方法可以将已编译的源文件与目标相关联,它可以在构建阶段中找到。您可以选择编译所需的代码文件。例如,对于 Target US
,添加 main-us.m 和 USAppDelegate.m 进行编译,对于 Target China
,使用 main-china.m 和 ChinaAppDelegate.m。
关于ios - 如何针对不同地区和语言管理单个应用程序的 2 个版本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24582589/