以實例演示Xcode中的Targets如何管理開發(fā)的構(gòu)建的
標準的軟件開發(fā)實踐是在不同的開發(fā)環(huán)境下開發(fā)不同版本的軟件,像我們案例中講到的開發(fā)iphone應(yīng)用。應(yīng)用程序的開發(fā)版本通常使用一個不同于生產(chǎn)環(huán)境的數(shù)據(jù)庫(或如分析的其他系統(tǒng))。這就是為什么我們應(yīng)該為不同的環(huán)境中使用單獨的服務(wù)器和數(shù)據(jù)庫。開發(fā)人員在測試期間通常都使用虛擬圖像或虛擬數(shù)據(jù)。在測試環(huán)境中,使用諸如 “test comment”, “argharghargh” 和 “one more test comment”之類的測試數(shù)據(jù)并不少見。顯然,你不希望你的真實用戶看到這樣的消息。如果你的應(yīng)用程序使用了一個分析系統(tǒng)的情況下,你甚至會在測試階段發(fā)送成千上萬的事件。同樣的,你不會把測試數(shù)據(jù)和生產(chǎn)數(shù)據(jù)放在同一個數(shù)據(jù)庫中。這就是為什么總是推薦區(qū)分開發(fā)和生產(chǎn)環(huán)境。
在使用兩個獨立的環(huán)境時,你的應(yīng)用程序需要有一個辦法找出它應(yīng)該連接到的環(huán)境。一種常用的方法是在你的主應(yīng)用代理里定義一個全局變量,它會將您的應(yīng)用程序初始化為開發(fā)或生產(chǎn)模式。
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”)
}
這種方法需要你每次切換環(huán)境時改變?nèi)肿兞俊km然這種方法也許快捷,方便,但是它有一些重要的限制。首先,因為我們在開發(fā)和生產(chǎn)兩個環(huán)境中使用一個Bundle ID,你不能在一臺設(shè)備上安裝應(yīng)用的兩個版本。當你需要要測試開發(fā)版本的應(yīng)用程序時,同時仍在該設(shè)備上使用生產(chǎn)版本的應(yīng)用,這就變的不方便了。此外,這種方法很有可能將應(yīng)用的開發(fā)版本上傳到應(yīng)用商店。如果你忘記了改變這個全局變量,你將會上傳錯誤的應(yīng)用給你的用戶。我記得有一次在提交應(yīng)用程序到應(yīng)用商店之前我忘記改變?nèi)肿兞浚脩?a href='http://www.xsypw.cn/soft/special/' target='_blank' class='arckwlink_none'>下載的是應(yīng)用的開發(fā)版本,這是可怕的。
在這篇文章中,我將展示一個更好的方法來區(qū)分開發(fā)和生產(chǎn)構(gòu)建。具體而言,我們將在Xcode中創(chuàng)建一個開發(fā)的target。這種方法法適用于新的和現(xiàn)有的大型項目,所以你可以用一個現(xiàn)有的應(yīng)用程序?qū)φ毡?a href='http://www.xsypw.cn/v/' target='_blank' class='arckwlink_none'>教程。
通過應(yīng)用這種方法,應(yīng)用的開發(fā)和生產(chǎn)版本將使用相同的基礎(chǔ)代碼,但可以有不同的圖標,bundle ID 和指向不同的數(shù)據(jù)庫。發(fā)布和提交過程將會非常簡單。最重要的是,你的測試人員和經(jīng)理可以在同一設(shè)備上安裝兩個版本的應(yīng)用程序,所以他們完全知道他們在體驗?zāi)膫€版本。
非常好我支持^.^
(0) 0%
不好我反對
(0) 0%