Xcode项目中的多目标用法

有多种方法可以向用户展示应用程序的特殊功能。 向用户展示特殊功能的一种方式是拥有应用的多个版本(如Lite和Pro)。

在这种情况下,Xcode中的目标扮演主要角色。 实现此要求的另一个不好的方法是每个应用程序都有不同的项目。 但是,对一个项目有多个目标可能会生成多个版本的应用程序。

目标是通过在Xcode中运行“ build”创建的最终产品。 它可能是一个应用程序,一个框架,一个静态库或一个单元测试包。 无论是什么,它通常对应于“已建产品”文件夹中的单个项目。

  • 在Xcode中,“文件”->“新建”->“项目”->“单视图应用程序”将在下图中填写必填字段后创建一个简单项目。
  • 现在,您的项目导航器如下所示。
  • 您可以在Storyboard和AppDelegate / ViewController中进行任何基本的UI和代码更改。 在此“ SimpleApp”中,有一个UIImageView作为ViewController的视图的背景图像,还有一个UILabel,其中包含用于区分应用程序目标的文本,如下所示。
  • 现在,单击ProjectName(SimpleApp),您可以看到“目标”部分。 右键单击要在其中添加特殊功能的目标。 点击“复制”。
  • 您将看到以下警报。 只需单击“仅重复”。 它将复制所选目标。

注意: 存在此对话框的原因是为您提供一种使用两个不同目标在单个项目中创建应用程序的iPhone和iPad版本的简便方法。 如果这是您要执行的操作,则可以选择“复制并转换到iPad”。 但是,在走这条路之前,您应该考虑使应用通用,而不是使应用的iPhone和iPad版本分开。

  • 只需点击“返回”键,通过选择新的目标进行重命名即可进一步使用。 重命名两个目标后,“目标”部分将如下所示。
  • 要解决的另一个命名问题是目标的方案。 方案定义了当您按下“ Build”,“ Test”,“ Profile”等时会发生什么。通常,每个目标都有至少一个方案。
  • 我们必须通过单击上方菜单中的“管理方案”来重命名方案。 我们只需按如下所示的“ Return”键即可重命名方案。 重命名过程后,单击“关闭”。
  • 在以上所有过程中,Xcode将生成一个新的plist文件并将其添加到您的项目导航器中。 这些plist文件名与目标服务器的名称不一致。 因此,我们必须使用相同的“返回”键方法来重命名它们。 重命名后,我们必须在Xcode Project设置中设置正确的plist文件。 还要根据需要更改包的显示名称。

现在,您可以使用多个目标了。

在单个代码库上运行时,我们需要某种编程方式来确定当前正在运行的产品(目标),以便您可以适当地做出这样的决定。这是Preprocessor Macro发挥作用的地方。

每个目标的Plist都有一些预处理器宏来标识您的工作环境。 我们必须设置一个自定义宏才能在这种情况下使用。

要添加自定义宏,请单击ProjectName(SimpleApp)->要添加宏的特定目标->构建设置。 然后按单词“ Macro”过滤。 然后,您将找到“预处理器宏”部分。

您会在这里看到Debug版本已经有了一个名为DEBUG = 1的宏。 您想要添加类似于“调试”和“发布”配置文件的内容,以表明该目标已与PRO产品绑定在一起。 双击这些值,然后单击“ +”按钮并输入一个名为PRO = 1的宏。

我们可以通过以下代码检查此宏。 在目标-C中,

  #ifdef PRO 

infoLabel.text =“专业版”

#其他

infoLabel.text =“精简版”

#万一

同样在Swift中,在“其他Swift标志”区域中使用“ -DPRO”。

  #if PRO 

infoLabel?.text =“ PRO版本”

#其他

infoLabel?.text =“精简版”

#万一

如果要将任何新图像拖放到项目工具中,则项目会提示您选择目标,如下所示。 在该提示下,您必须选择要使用图像的特定目标。

如果您使用.xcassets文件来处理图像,我的最佳建议是使用单独的.xcassets文件和公用文件。 请参见下图,其中两个.xcassets文件的AppIcon不同。

最后,宾果游戏。您的项目有多个目标。 在模拟器(或设备)上运行两个目标,您可以从单个项目中导出具有不同功能的多个应用程序。

如果您有任何疑问,请发表评论,或者可以建议我一些其他方法来实现它。