以實例演示Xcode中的Targets如何管理開發的構建的
標準的軟件開發實踐是在不同的開發環境下開發不同版本的軟件,像我們案例中講到的開發iphone應用。應用程序的開發版本通常使用一個不同于生產環境的數據庫(或如分析的其他系統)。這就是為什么我們應該為不同的環境中使用單獨的服務器和數據庫。開發人員在測試期間通常都使用虛擬圖像或虛擬數據。在測試環境中,使用諸如 “test comment”, “argharghargh” 和 “one more test comment”之類的測試數據并不少見。顯然,你不希望你的真實用戶看到這樣的消息。如果你的應用程序使用了一個分析系統的情況下,你甚至會在測試階段發送成千上萬的事件。同樣的,你不會把測試數據和生產數據放在同一個數據庫中。這就是為什么總是推薦區分開發和生產環境。
在使用兩個獨立的環境時,你的應用程序需要有一個辦法找出它應該連接到的環境。一種常用的方法是在你的主應用代理里定義一個全局變量,它會將您的應用程序初始化為開發或生產模式。
enum environmentType {
case development, production
}
let environment:environmentType = .production
switch environment {
case .development:
// set web service URL to development
// set API keys to development
print(“It‘s for development”)
case .production:
// set web service URL to production
// set API keys to production
print(“It’s for production”)
}
這種方法需要你每次切換環境時改變全局變量。雖然這種方法也許快捷,方便,但是它有一些重要的限制。首先,因為我們在開發和生產兩個環境中使用一個Bundle ID,你不能在一臺設備上安裝應用的兩個版本。當你需要要測試開發版本的應用程序時,同時仍在該設備上使用生產版本的應用,這就變的不方便了。此外,這種方法很有可能將應用的開發版本上傳到應用商店。如果你忘記了改變這個全局變量,你將會上傳錯誤的應用給你的用戶。我記得有一次在提交應用程序到應用商店之前我忘記改變全局變量,用戶下載的是應用的開發版本,這是可怕的。
在這篇文章中,我將展示一個更好的方法來區分開發和生產構建。具體而言,我們將在Xcode中創建一個開發的target。這種方法法適用于新的和現有的大型項目,所以你可以用一個現有的應用程序對照本教程。
通過應用這種方法,應用的開發和生產版本將使用相同的基礎代碼,但可以有不同的圖標,bundle ID 和指向不同的數據庫。發布和提交過程將會非常簡單。最重要的是,你的測試人員和經理可以在同一設備上安裝兩個版本的應用程序,所以他們完全知道他們在體驗哪個版本。
非常好我支持^.^
(0) 0%
不好我反對
(0) 0%