ios - 如何为要求略有不同的多家公司管理一个 Xcode iOS 应用程序存储库?

标签 ios xcode git projects-and-solutions release-management

我在 AppStroe 上为许多不同的公司开发了一个移动应用程序。每个公司都使用不同的端点来连接服务器/图标/ Logo 。我已成功将其添加到自定义 plist 文件中,并根据公司端点,我切换到不同的构建设置。

现在这些公司正在采用不同的身份验证方式。一种是使用另一个应用程序进行身份验证,另一种是使用服务器调用。另外,对于一家公司,我正在接收来自服务器调用的数据,另一种来自本地文件的数据。

我必须处理不同项目的不同登录行为。它主要是显示/禁用一些额外的 View 。我不想有两个存储库或分支。因为几乎 %85 的功能是相同的。我想同时向两者添加功能,有时只向其中之一添加功能,并运行我的测试和所有测试。

我正在寻找某种方式来管理此应用程序以维护大多数功能并仅保留它一个应用程序。我怎样才能做到这一点?有什么建议吗?

最佳答案

这是一个很老的问题。基本上你有两个选择:构建时和运行时;根据您的描述,您可能需要两者(我不相信配置来驱动我的身份验证代码)。

构建时间意味着使用条件编译(例如 Which conditional compile to use to switch between Mac and iPhone specific code? )和针对每个客户的不同构建配置文件。我假设 Xcode Targets(参见 How to manage the code of multiple, very similar Xcode projects)允许您定义不同的构建配置文件。

运行时检查映射到 Feature Toggling .

我建议不要使用版本控制来管理同一应用程序的细微差别,因为它很快就会成为 merge 的噩梦,即使使用 Git 也是如此。

关于ios - 如何为要求略有不同的多家公司管理一个 Xcode iOS 应用程序存储库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37435065/

相关文章:

iOS:上传图片到服务器,打不开

iOS 结果类型 'Element' 与预期类型不匹配(Swift - Coredata)

git - 更新 SourceTree 中的历史提交信息

git - merge 后未出现对主分支的更改

ios - 在 viewDidLoad 中调用 Web 服务导致屏幕挂起 iOS

android - 本地商店与包含关键数据(信用卡、姓名...)的 ddbb 商店

iphone - 如何检查设备的方向?

ios - dyld_fatal_error 与 Typhoon+Swift+iOS7.x+Plist-bootstrapping

ios - 在常量初始化中使用 IBoutlet

linux - 在共享主机上安装 git - ./configure : no such file or directory