我开始在一家开发移动支付应用程序的公司工作。有一个"终端" -App,接收客户的付款,然后是" Wallet" -App,用户可以下载并用于支付(在这些终端)。
该项目由2个目标组成 - 一个用于钱包,一个用于终端。该应用程序仅在2个国家/地区使用。它非常复杂,拥有庞大的代码库。
现在我需要为一个客户白板标记整个产品,他们想要使用我们的应用程序(两个目标)和他自己的品牌(可能还有一些额外的功能或没有一些特定的功能)而且我不确定是什么最好的方法是实现这一目标。
目前我看到3个选项:
要将整个项目复制到新文件夹并在新文件夹中进行更改可能是最糟糕的"脏"做法。在某些时候,我的第一个代码库可能与重复的代码库有太多不同。此外,如果出现任何与安全相关的问题,我将不得不在两个项目中修复它。
我其实认为这是最好的方式。为Wallet和终端创建一个新目标,然后检查源代码中的当前目标以确定应该启用或禁用哪些功能对我来说非常好。但后来我创建了新目标并注意到我必须在每个单个类上为该新目标设置该复选标记。除此之外,我不确定是否真的是最好的方式。
第三个选项是使用if循环包装每个仅在一个应用程序中可用的函数。我认为这是最便宜的"选项,因为它易于设置,我仍然可以很好地维护我的代码库。
我还有其他选择吗?你会走哪条路?
基础应用程序和带有白标签的应用程序之间最重要的区别将是它的语言。白色标签版本将从右到左,但iOS在这方面做得非常好,而不需要我进行所有镜像。
答案 0 :(得分:4)
你绝对想要额外的目标。拥有新目标意味着可以轻松使用单独的捆绑包标识符,签名设置等。如果必须勾选一堆盒子来将文件添加到新目标中可能看起来很痛苦(可能更快地使用Xcode中目标的Build Phase | Compile Sources列表)但是值得在应用程序之间创建真正的分离
不要使用大量源代码检查来确定您所在的白标应用,而是考虑让您的应用更加数据驱动。 plist文件可用于确定您的应用程序具有哪些功能,并且可以为每个目标使用不同的plist文件。
例如,它可能包含一个名为features
的顶级字典,其中包含一组功能名称的true
/ false
值。您有一个FeatureManager
来读取文件,并且是想知道某些内容是否可用的所有应用组件的唯一真实来源。