Xcode:在同一个目标中构建两个应用程序(使用相同的plist)

时间:2015-09-18 08:23:58

标签: ios xcode build target ipa

现在我的iOS应用程序中有3个目标,所以我构建了3个应用程序(3个ipa)。 但我想只保留3个目标,但我想生成6个应用程序(6 ipa)。

在每个目标上,我想创建一个应用和一个试用版应用。 我真的只想为app和pilot app保留1个plist。 与app和pilot应用程序的区别仅在于:

  • 捆绑标识符(在同一设备上安装这两个应用)
  • 图标应用
  • plist中的1个参数
  • 代码中很少行(使用#IF PILOT更改代码#ENDIF

为每个目标保持相同的plist非常重要(目标相当于环境TEST,INT和PROD)。因为如果我在两个目标(例如PROD和PROD PILOT)中复制我的目标,那么维护应用程序会更加困难,因为如果有一天我想在plist中更改某些内容,我将在PILOT目标plist中执行相同的操作。 所以你明白,如果我忘记改变我的变化,它会产生差异。

最后,如果我可以在1个版本中构建应用程序和试用版应用程序,并且同时生成2个档案库,那将会非常棒。

有可能吗? 你有实现的想法吗?

我只有很少的想法:

  • 在我的目标中添加参数
  • 添加用户定义的设置
  • 添加预处理宏

由于

3 个答案:

答案 0 :(得分:0)

在您的项目设置下,针对每个目标,在构建设置下查看 - >打包,尝试将所有info.plist文件设置为指向同一个文件而不是它们自己的版本。

答案 1 :(得分:0)

如果是测试目的, 尝试更改项目设置中的Bundle标识符,并在构建设置中更改产品名称并获取存档文件。 它将作为设备中的单独应用程序部署。

答案 2 :(得分:0)

谢谢Fonix!

我的解决方案使用您的建议。 我复制了我的3个目标但是app目标及其试用版链接到同一个plist文件。 此外,我在每个pilote版本中都有一个预处理器宏“PILOTE = 1”。 最后,我在用户定义中声明了一个字符串来定义我的图标(“ICON - > icon.png或icon-pilote.png),我在CFBundleIcon item0 - > $ {ICON}中声明。

为了添加部分代码,我将juste声明为代码区别:

#IFDEF PILOTE

//代码试用版

#ELSE

//代码标准版

#ENDIF

对我的需求来说,这是一个不错的选择吗?