Iphone 我可以在XCode中保留一个项目,但为Mac OS X、Apple Mac Store和iOS设备构建它吗?

Iphone 我可以在XCode中保留一个项目,但为Mac OS X、Apple Mac Store和iOS设备构建它吗?,iphone,xcode,macos,ios,Iphone,Xcode,Macos,Ios,我注意到这里的每个平台都有不同的要求。我想知道是否有可能建立一个单一的项目,但有多个目标,其中每个目标是Mac OS X(类似CD/安装构建)、Apple Mac Store和iOS设备 如果我走错了方向,我很想知道!我主要是在个人电脑上开发,但随着应用商店的发展,我希望尽可能多地推广 在大多数情况下,是的。所有Mac/iOS应用程序都可以用Objective-C编写,代码非常相似。但是,您必须记住,iOS设备的屏幕大小与Mac甚至彼此不同。这意味着输入隐喻不同,UI也不同。虽然可以做您想做的事

我注意到这里的每个平台都有不同的要求。我想知道是否有可能建立一个单一的项目,但有多个目标,其中每个目标是Mac OS X(类似CD/安装构建)、Apple Mac Store和iOS设备


如果我走错了方向,我很想知道!我主要是在个人电脑上开发,但随着应用商店的发展,我希望尽可能多地推广

在大多数情况下,是的。所有Mac/iOS应用程序都可以用Objective-C编写,代码非常相似。但是,您必须记住,iOS设备的屏幕大小与Mac甚至彼此不同。这意味着输入隐喻不同,UI也不同。虽然可以做您想做的事情,但不建议只编写一次代码并编译三次


也就是说,我不使用Xcode 4,所以我不能告诉你。如果您希望为不同的设备进行不同的构建,您将希望尽可能分别编写应用程序逻辑和输入逻辑。然后,创建多个目标,每个构建一个目标。您可以为每个目标定义编译器标志。在代码中,您将使用这些标志为构建使用适当的代码

为Mac app store和独立分布的Mac应用程序保留单独的目标很简单。您只需确保您的收据验证代码有条件地包含在app store目标中,而不是包含在其他目标中;而您的自定义许可证计划则包含在另一个方面。如果在两个目标中针对不同的操作系统,事情会变得更复杂一些,但它们并不是不可克服的:您可以在运行时测试类或选择器的存在,以确保您永远不会在较旧的系统上调用较新的API


顺便说一句,为这些目标设置单独的
Info.plist
文件也是值得的。部分原因是您不需要或不想在应用商店目标中包含Sparkle属性之类的内容,但也因为每个目标都应该具有唯一的捆绑包标识符。当你安装了一个应用程序时,应用程序商店会做一些奇怪的事情,它认为这个应用程序来自商店,但实际上并没有,你也不想冒险让你的更新程序或苹果试图更新通过其他机制部署的应用程序。但这并不是组织您的Xcode项目,而是部署问题。

至少从3.2.5开始,这绝对不是问题。您不一定能够在项目范围内应用所有的构建设置,但是您可以在每个目标的基础上指定它们。
只需添加适当的类型目标(Cocoa Touch、Cocoa等)。

非常感谢,事实证明,即使这是可能的,我也无法以这种方式执行此任务。谢谢你的信息!谢谢你的信息!我也不在Xcode4上(这里是3.2.5),但这似乎是可能的,所以为什么不问问呢。我们已经按照您对其他平台的建议做了,但是在我们的情况下,如果我们将项目作为一个单独的实体保留,这对我们没有任何好处。虽然这是完全可能的^。^是的,正是我所想的!每个目标的基础是好的,但每个项目是事情变得有点混乱。前一篇文章基本上描述了这种情况,尽管它与手头的问题关系不大。