假设我有类似的应用程序共享大量代码。付费和免费版本,针对不同客户公司的白标应用程序,诸如此类。一般来说,应用程序之间的差异会相对较小;一些图像会不同,一些文本会不同,某些标志值会不同——共享代码会检查这些值并相应地改变行为。
一个不错的好处,但不是必需的,是每个应用程序都能够添加代码来扩展/覆盖一些共享代码。
我已经阅读了几种不同的方法——可能还有更多我没有考虑过的方法。
许多存储库中使用的一个 .framework 文件 我对此知之甚少,但我认为这就像用 Java 制作 JAR;编译代码以供其他程序按原样使用。这可能适用于许多不同类型的应用程序使用的通用库,但据我所知,它不适合上述目的(如果我错了,请纠正我)。
一个存储库,一个项目,多个目标 据我了解,这在“一个应用程序具有付费和免费版本”的情况下最流行,在这种情况下,生成的应用程序之间只有很小的差异——它们本质上是同一个应用程序.
但是,我不知道这在不同目标之间的变化方面有多灵活。我认为可以为每个目标设置不同的 .plist 文件,这可能会导致应用程序出现不同的文本、标志或(通过某种尴尬的解决方法)不同的图像,就是这样,对吗?
我也对为多个项目使用一个存储库感到不舒服,但是当它们密切相关时,也许这并不重要。
一个存储库,一个工作区,多个项目 虽然这似乎是项目之间的更清晰的划分,但我不确定是否有一种为不同项目分离资源的好方法。最合乎逻辑的解决方案是为不同项目的资源设置不同的文件夹,并将它们包含在工作区中,每个目标只有一个——但我似乎不能这样做。除此之外,此选项与先前选项之间似乎几乎没有区别。
那么,为彼此之间只有一些差异的多个项目制作共享代码的正确方法是什么?它是上述方法之一(如果是,你是怎么做的?)还是有什么不同?