在Xcode中组织不同版本的App

时间:2012-11-07 20:15:47

标签: iphone ios xcode cocoa-touch dependency-management

我正在开发一款可以编辑图像的iPhone应用程序。最终,我希望有一个允许用户简单编辑图像的小版本,以及允许图像社交网络的大版本。然后我想为iPad开发一个版本。

由于这是我第一次涉足商业移动开发,我对如何在Xcode中组织所有这些版本感到困惑。显然,每个版本之间都会共享文件重用。我想我的问题是,如何以最有效的方式组织这些单独的项目,以便它们共享文件,因此当我编辑共享的特定文件时,会对应用程序的每个版本进行更改?在XCode中是否存在某种构造?

是否有关于如何进行此操作的链接或文献? (不确定搜索它的正确术语)。

3 个答案:

答案 0 :(得分:1)

我建议将“精简”和“完整”项目分开但在同一个工作区内。这样,您可以将共享文件保留在一个项目中,只需在另一个项目中使用共享文件。对任一项目的共享文件所做的所有更改都将影响两者。

就iPhone / iPad版本而言,我还建议您将这些应用程序完全分开,但在同一工作区内(以便它们可以共享代码)。如果您浏览一下在单个项目(也就是通用应用程序)中管理这两个应用程序的建议,唯一真正的好处是客户可以购买一个应用程序并可以在任一设备上下载,如果不是,有些人可能会感到不安可供他们使用。如果您的应用是免费的,请不要担心。

最后,关于工作空间的警告,您需要在所有项目中唯一地命名您的文件。例如,如果您正在使用一个使用MainViewController.h子类的项目和另一个使用MainViewController.h子类的项目,那么无论您在哪个项目中,都可以意外地分配或编辑错误的项目,因此要小心。如果使用唯一文件名是一个问题,您只需创建一个空项目以将所有共享代码转储到其中,然后从那里添加对独立应用程序的引用,就可以绕过使用工作区。

答案 1 :(得分:1)

请记住:如果您发现自己重复/重复某些事情,请怀疑您做错了。

在这种情况下,您的Xcode项目将有4个目标。此设置的基本目标布局如下所示:

  • 静态库(适用于您的共享源文件)
  • 资源包(用于共享资源)
  • App-Full(通用)
  • App-Lite(通用)

应用程序链接到共享静态库,并复制资源包。

当然,应用程序将拥有不同的源/库/依赖项 - 那些应用程序目标(或其他依赖项)。

根据你的背景:计划花费大量时间(最初和你去的时候)并耐心地弄清楚应该如何组成,使用和维护这些依赖关系。

答案 2 :(得分:0)

如果你选择保留项目的各种副本以获得不同的功能,那么最终会让人感到困惑,因为有些地方XCode会为你提供一件事而不是另一件事。其中一个地方是 - 当您从位置X打开一个项目时,它也会在您上次打开它时从Y位置显示您的副本。因此,您可能会犯更多错误。组织者是另一个你可以犯错误的地方。

XCode是独立的,足以维护iPhone和iPad版本。如果您选择通用作为应用程序的类型,您将有两个单独的故事板,可以成为一个项目的一部分。

对于各种功能,您不应该维护项目的单独副本。相反,推荐的方法是将所有功能保留在单个项目中,并让应用程序逻辑提供对各种功能的访问。

单击项目时,XCode会在“目标”部分下保留您的构建版本。要通过开发周期维护多个版本,请使用源代码存储库(git或svn)。