2009-04-27 89 views
15

我有点困惑如何工作 - 这是我的理解:iPhone/Xcode:不同的项目对象可以有不同的包标识符吗?

  • 一个目标的供应配置文件被链接到一个特定的应用程序ID
  • 为目标的包标识下目标信息发现\ Properies \ Identifier

但是... bundle ID也位于Info.plist中。看起来,如果您更改Info.plist中的包ID,则Xcode会自动在目标信息\属性\标识符中进行更改,反之亦然。

那么哪个是优先? 目标信息\属性\标识符捆绑ID或Info.plist捆绑ID?

我问的原因是因为我想为我的应用程序提供两个版本 - 免费的广告支持版本和付费版本,我想用两个不同的目标完成此操作。由于它们将是App Store中的两个不同的应用程序,我的理解是它们需要两个不同的应用程序ID(并且我不想使用应用程序ID沿着*路线走下去,关于App Store上的工作原理的描述使我脑部受伤)。

如果我这样做,是否需要为每个目标使用两个不同的Info.plists,或者我可以使用相同的Info.plist,并且让不同的目标使用不同的开发/分发配置配置文件?

回答

25

没有优先权,属性对话框只是作为您查看Info.plist的另一种方式。

要共享目标之间的plist但具有不同的标识符,请确保为两个目标启用了“Info.plist文件中的”扩展构建设置“选项”。然后,对于每个目标,在您的捆绑ID的目标设置中创建一个新的用户创建的变量(例如,APPLICATION_BUNDLE_IDENTIFIER,请参阅:https://stackoverflow.com/a/18472235/308315),并将其设置为该目标的正确值。在你的plist,把纸捆ID如下:

<key>CFBundleIdentifier</key> 
<string>$(APPLICATION_BUNDLE_IDENTIFIER)</string> 

变量将在编译时为每个目标进行评估,所以每次都会得到右束ID。

+0

这可能是`$(PRODUCT_BUNDLE_IDENTIFIER)`而不是`$(APPLICATION_BUNDLE_IDENTIFIER)`。 – Jano 2017-07-02 19:52:01

相关问题