如何使用通用代码创建多个iOS项目?

时间:2013-09-11 20:44:46

标签: ios objective-c cocoa-touch

假设我有类似的应用程序共享大量代码。付费和免费版本,针对不同客户公司的白标贴牌应用程序。一般来说,应用程序之间的差异相对较小;某些图像会有所不同,某些文本会有所不同,某些标记值会有所不同 - 共享代码会检查这些值并相应地更改行为。

一个很好的奖励,但不是必需的,每个应用程序都可以添加代码来扩展/覆盖一些共享代码。

我已经阅读了几种不同的方法 - 可能还有更多我没有考虑过。

许多存储库中使用的一个.framework文件 我对此并不了解,但我认为这就像在Java中制作JAR一样;编译其他程序原样使用的代码。这可能适用于许多不同类型的应用程序使用的通用库,但据我所知它不适合上述目的(如果我错了,请纠正我)。

一个存储库,一个项目,多个目标 根据我的理解,这对于“有付费和免费版本的应用程序”情况最为流行,其中所生成的应用程序之间只有非常微小的差异 - 它们本质上是相同的应用程序。

但是,我不知道这对于不同目标之间的变化有多么灵活。我收集它可以为每个目标设置一个不同的.plist文件,这可能导致不同的文本,标记或(通过某种尴尬的解决方法)应用程序的不同图像,这是正确的吗?

我对使用一个存储库进行多个项目感到不舒服,但是当它们密切相关时,也许并不重要。

一个存储库,一个工作区,多个项目 虽然这似乎是项目之间的一个更清晰的划分,但我不确定是否有一种很好的方法来为不同的项目分离资源。最合乎逻辑的解决方案是为不同的项目提供不同的资源文件夹,并将它们包含在工作区中,每个文件只有一个目标 - 但我似乎无法做到这一点。除此之外,这与前一个选项似乎没什么区别。

那么,为多个项目制作共享代码的正确方法只是彼此之间存在一些差异?它是上述方法之一(如果是这样,你是怎么做到的?)或它是不同的东西?

1 个答案:

答案 0 :(得分:0)

我更喜欢为每个项目设置单独的项目和单独的文件夹。

然后根据需要将每个共享单元带入项目中。共享功能(大多数功能)都在共享单元中。

如果要使用最新的Rest.hRest.m升级一个项目,请将其带入项目文件夹。也许在下一个项目中,你还没准备好升级到最新版本。

您将拥有重复的文件(每个项目一个),但它允许您以原子方式更新,测试和精细控制每个项目。

一个存储库与否,无关紧要,因为项目将具有不同的文件夹,并且共享文件将被复制(每个文件中可能存在不同的版本,主干具有最新的共享文件)。

另一方面,我希望这些许多类似的应用程序不会全部进入App Store。