我有点困惑这是如何工作的 - 这是我的理解:
- 目标的配置文件链接到特定的应用 ID
- 目标的 bundle 标识符位于Target info\Properies\Identifier下
但是...捆绑 ID 也位于 Info.plist 中。看来,如果您更改 Info.plist 中的捆绑 ID,Xcode 会自动在 Target info\Properties\Identifier 中更改它,反之亦然。
那么哪个优先呢? Target info\Properties\Identifier bundle ID 或 Info.plist bundle ID?
我问这个问题的原因是因为我希望我的应用程序有两个版本 - 一个免费广告支持版本和一个付费版本,并且我希望通过两个不同的目标来实现这一目标。由于它们将是 App Store 中的两个不同的应用程序,因此我的理解是它们需要两个不同的应用程序 ID(并且我不想使用应用程序 ID 沿着 * 路线走下去,关于如何在 App Store 上工作的描述使我脑损伤)。
如果这样做,我是否需要为每个目标使用两个不同的 Info.plist,或者我可以使用相同的 Info.plist,并且让不同的目标使用不同的开发/分发配置文件吗?
最佳答案
没有优先顺序,属性对话框只是作为您查看 Info.plist 的另一种方式。
要在目标之间共享 plist 但具有不同的标识符,请确保为两个目标启用“在 Info.plist 文件中展开build设置”选项。然后,对于每个目标,在捆绑 ID 的目标设置中创建一个新的用户创建的变量(例如 APPLICATION_BUNDLE_IDENTIFIER,请参阅此处: https://stackoverflow.com/a/18472235/308315 )并将其设置为该目标的正确值。在您的 plist 中,输入以下内容作为 bundle ID:
<key>CFBundleIdentifier</key>
<string>$(APPLICATION_BUNDLE_IDENTIFIER)</string>
该变量将在构建时针对每个目标进行评估,因此每个目标都会获得正确的包 ID。
关于iPhone/Xcode : can different project targets have different bundle identifiers?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/792170/