正确设置XCode iOS项目?

问题描述:

我只想从一些更有经验的开发人员那里找到适合以下情况的设置。正确设置XCode iOS项目?

我们正在从App Store开发iOS应用程序。基本代码应该与各种应用程序相同,因为功能相同。但是,每个人都应该收到不同的预编译器信息(我知道这很容易通过plist文件,所以没有问题)。现在,每个应用程序应该有不同的资源。图像,声音等等(目前我拥有不同文件夹中的所有资源,命名相同,因此我可以随时将其放入并且应用程序将会更改,但看起来......肮脏至少可以说)。

我应该创建初始版本,然后创建新的目标并复制所有内容吗?或者我们应该复制目标?那我怎么指定不同的资源文件夹?

感谢


@j_mcnally

你建议如下:

CORE_PROJECT 
| 
|-- APP 1 PROJECT 
| |-- target -> free 
| |-- target -> paid 
| 
|-- APP 2 PROJECT 
| |-- target -> free 
| |-- target -> paid 
... 

,然后CORE项目只是不应该有任何的目标?简单的共享来源?对我来说似乎合乎逻辑。还有其他意见吗?

您可以在项目中嵌入项目。所以你可以有一个核心项目,然后将其嵌入到你的父项更具体的项目中。这种方式你应该能够引用相同的核心代码,但建立不同的目标。

+0

请参阅我的更新。 – 2012-03-09 06:28:03

+0

是啊,看起来很好,挂出寿,看看别人说什么。这正是我所要做的,面对你的情况。 – 2012-03-09 06:31:39

+0

还有一件事,因为你似乎有这个钉牢。我的子项目找不到父项目的头文件。任何方向纠正这一点? – 2012-03-09 07:06:13

你真的打算这些应用程序有多类似?如果他们的目标只是在他们的一些配置上有所不同,那么我宁愿不要维护重复的目标或项目。我相信冗余配置不应该改变,但其他开发者和我必须尽力保持同步的冗余配置是一个邀请引入不一致,这将导致错误,并最终可能无意中分裂项目。

相反,我尝试自动化整个过程,并避免在可能的情况下创建重复配置。我将添加一个运行脚本构建阶段作为构建过程中的第一步,在执行构建之前,将适合当前应用程序的资源集符号链接或复制到位置。这样你就可以允许一个环境变量来选择应用程序使用哪一组资源。如果开发人员需要一种方便的方法在xcode中构建和交换这些环境变量值时,他们应该能够将非共享方案添加到其本地工作区。

我发现这个功能对于像配置应用程序与开发/分段/生产后端系统进行通信这样的小配置更改非常有效,而且我已经错过了在设置大型项目时具有相同级别的一致性以仅基于不同的资源集建立多个应用程序,但这些应用程序迅速分化为共享单个代码库的不兼容系统。

现在,如果您认为真的需要为这些不同的应用程序添加独特的行为,那么我建议为通用代码创建共享静态库生成目标,这些目标可以包含在每个应用程序的应用程序生成目标中。将整个群集共享为一个工作区,开发人员只需选择合适的方案即可切换应用程序。这应该保持共享和特定于应用程序的代码之间的干净分离,而不会增加很多开销 随着应用程序的增长和稳定,您可能最终希望将静态库项目分支到多个存储库,作为其他库的通用依赖项。这将导致在应用程序和共享库上工作的成本,但如果您必须谨慎地对该共享代码库进行更改,这可能是可取的。多个存储库还允许每个应用程序锁定共享库的特定修订版本,并在接受新更改时进行控制,具体取决于您的流程可能被视为好或不好。

+0

我正要离开我的脑海。我想在同一个项目中使用单独的目标(我是怎么做的),但是我遇到了问题。只要我创建第二个目标(不重复),我就开始出现问题。它会在我导入它们时找到头文件,但是在编译时会抛出:“针对体系结构i386的未定义符号:”_OBJ_CLASS _ $ _ *******“,引用自...”,它指的是我试图从第一个目标使用的课程。有任何想法吗? – 2012-03-09 09:15:47

+0

这个问题似乎只要我试图用.xib文件实例化一个UIViewController ...任何想法如何可以共享? – 2012-03-09 09:21:52