2010-11-10 34 views
10

我經常發現我需要在iPhone上創建一個可以指向我的演示服務器的「演示就緒」版本。我也想要一個構建,這是我用開發服務器開發的最新和最好的調試版本。有沒有人找到一種非常簡單的方式來安裝兩個應用程序,它們可能是完全相同的代碼,但指向不同的服務器?另外也許我會有一個應用程序是最新版本後面的幾個版本?最好我會使用相同的XCode項目來構建並安裝到iPhone上。使用XCode將多個相同的iOS應用程序安裝到iPhone上的最佳方式是什麼?

回答

9

您可以爲它們添加特殊的構建配置,每個配置使用不同的info.plist文件。所以,也許對於你的演示,你有一個名爲MyApp-Info-DEMO.plist的info.plist和MyApp-Info.plist。

然後,您可以將您的服務器變量添加爲info.plist變量,並在應用程序啓動時查找它。甚至可以在你的新配置中創建一個DEFINE語句,就像SERVER = demo.myserver.com用於演示,SERVER = production.myserver.com用於live。

最重要的部分是在新的info.plist中更改CFBundleIdentifier。所以在你的演示中,你可以將它命名爲com.mycompany.myapp.DEMO,而真正的可能只是com.mycompany.myapp。

這將允許兩個版本同時出現在手機上(不同的CFBundleIdentifiers)。請記住,如果您使用的是應用內購買或服務器推送通知,那麼如果沒有針對您的真實應用標識符和演示應用標識符的單獨特定配置文件,您將無法做到這一點。

+5

您可以在Info.plist文件中使用'$(BUNDLE_IDENTIFIER)',而不是單獨的文件,然後將其值設置爲用戶定義的構建設置。 – benzado 2010-11-10 00:28:40

1

使用當前版本的Xcode,您可以通過更改應用程序的Info.plist文件以使用不同的包標識符(也可能更改生成設置中應用程序的產品名稱)來實現此目的。

Xcode的即將推出的版本,從我在預發佈文檔中閱讀的內容中,有一個功能可以簡化您想要執行的操作。然而,由於預發佈軟件包含在NDA中,所以我無法給你任何細節。

2

您可以使用2個不同的info.plists和2個不同的預處理器定義(在2個目標中的每個目標的Build Settings中)創建2個不同的目標。然後,如果在預處理器上定義了選擇服務器常量的編譯器爲每個目標使用。

然後在兩個不同的目標設置中使產品名稱和包ID不同(這樣設備或模擬器都不會混淆這兩個應用程序包)。

相關問題