Xcode : 在同一目标中构建两个应用程序(使用相同的 plist)
Xcode : build two apps in same target (with the same plist)
现在我的 iOS 应用程序中有 3 个目标,所以我构建了 3 个应用程序 (3 个 ipa)。
但我只想保留 3 个目标,但我想生成 6 个应用程序(6 个 ipa)。
我想在每个目标上创建一个应用程序和一个试点应用程序。
我真的只想为应用程序和试点应用程序保留 1 个 plist。
应用程序和试点应用程序的唯一区别是:
- 捆绑包标识符(将这两个应用程序安装在同一台设备上)
- 图标应用
- plist 中有 1 个参数
- 代码中的几行(用#IF PILOT更改添加代码#ENDIF
为每个目标保持相同的 plist 很重要(一个目标相当于环境 TEST、INT 和 PROD)。因为如果我在两个目标(例如 PROD 和 PROD PILOT)中复制我的目标,那么维护这些应用程序将更加困难,因为如果有一天我想更改 plist 中的某些内容,我将在 PILOT 目标 plist 中做同样的事情。
所以你明白,如果我忘记重复我的更改,它会产生差异。
最后,如果我可以在 1 次构建中构建应用程序和试点应用程序,并同时生成 2 个存档,那就太好了。
可能吗?
你有实现的想法吗?
我只有几个想法:
- 在我的目标中添加参数
- 添加用户自定义设置
- 添加预处理宏
谢谢
在您的项目设置下,对于每个目标,查看构建设置 -> 打包,尝试将所有 info.plist 文件设置为指向同一个文件而不是它们自己的版本。
如果是测试目的,
尝试在项目设置中更改 Bundle 标识符并在构建设置中更改产品名称并获取存档文件。
它将作为单独的应用程序部署在设备中。
感谢 Fonix!
我的解决方案采纳了您的建议。
我复制了我的 3 个目标,但一个应用程序目标及其试点版本链接到同一个 plist 文件。
此外,我在每个 pilote 版本中都有一个预处理器宏 "PILOTE=1"。
最后,我在用户定义中声明了一个字符串来定义我的图标(“ICON -> icon.png 或 icon-pilote.png),我在 CFBundleIcon item0 -> ${ICON}.
为了添加部分代码,我只在 :
中声明了代码差异
#IFDEF 飞行员
//代码试点版本
#其他
//代码标准版
#ENDIF
它适合我的需求吗?
现在我的 iOS 应用程序中有 3 个目标,所以我构建了 3 个应用程序 (3 个 ipa)。 但我只想保留 3 个目标,但我想生成 6 个应用程序(6 个 ipa)。
我想在每个目标上创建一个应用程序和一个试点应用程序。 我真的只想为应用程序和试点应用程序保留 1 个 plist。 应用程序和试点应用程序的唯一区别是:
- 捆绑包标识符(将这两个应用程序安装在同一台设备上)
- 图标应用
- plist 中有 1 个参数
- 代码中的几行(用#IF PILOT更改添加代码#ENDIF
为每个目标保持相同的 plist 很重要(一个目标相当于环境 TEST、INT 和 PROD)。因为如果我在两个目标(例如 PROD 和 PROD PILOT)中复制我的目标,那么维护这些应用程序将更加困难,因为如果有一天我想更改 plist 中的某些内容,我将在 PILOT 目标 plist 中做同样的事情。 所以你明白,如果我忘记重复我的更改,它会产生差异。
最后,如果我可以在 1 次构建中构建应用程序和试点应用程序,并同时生成 2 个存档,那就太好了。
可能吗? 你有实现的想法吗?
我只有几个想法:
- 在我的目标中添加参数
- 添加用户自定义设置
- 添加预处理宏
谢谢
在您的项目设置下,对于每个目标,查看构建设置 -> 打包,尝试将所有 info.plist 文件设置为指向同一个文件而不是它们自己的版本。
如果是测试目的, 尝试在项目设置中更改 Bundle 标识符并在构建设置中更改产品名称并获取存档文件。 它将作为单独的应用程序部署在设备中。
感谢 Fonix!
我的解决方案采纳了您的建议。 我复制了我的 3 个目标,但一个应用程序目标及其试点版本链接到同一个 plist 文件。 此外,我在每个 pilote 版本中都有一个预处理器宏 "PILOTE=1"。 最后,我在用户定义中声明了一个字符串来定义我的图标(“ICON -> icon.png 或 icon-pilote.png),我在 CFBundleIcon item0 -> ${ICON}.
为了添加部分代码,我只在 :
中声明了代码差异#IFDEF 飞行员
//代码试点版本
#其他
//代码标准版
#ENDIF
它适合我的需求吗?