2009-04-27 71 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

相關問題