全國(guó)咨詢(xún)/投訴熱線(xiàn):400-618-4000

首頁(yè)技術(shù)文章正文

iOS培訓(xùn)之iOS Xcode部署配置

更新時(shí)間:2017-04-13 來(lái)源:黑馬程序員iOS學(xué)院 瀏覽量:

iOS Xcode部署配置
幾乎所有移動(dòng)應(yīng)用,包括我正在編寫(xiě)的一款iOS應(yīng)用 Emmerge 都 需要與服務(wù)器交互。從第一次向團(tuán)隊(duì)成員演示應(yīng)用開(kāi)始,我們就開(kāi)始找一種更快構(gòu)建不同環(huán)境產(chǎn)品的方法。一開(kāi)始我們只需要修改不同環(huán)境下的服務(wù)器地址,但在 經(jīng)過(guò)幾天來(lái)回的在配置文件中切換本地和遠(yuǎn)程服務(wù)器地址后,我對(duì)這種重復(fù)工作煩透了,于是到Google查找解決方法。在搜索一段時(shí)間后,我卻沒(méi)用找到如何 在Xcode中為每一種構(gòu)建環(huán)境分別設(shè)置配置的方法,于是在經(jīng)過(guò)大量搜索stack overflow和博客后,我總結(jié)了一種相當(dāng)簡(jiǎn)潔有效的方法,在這里分享給需要的人。
我們何時(shí)需要考慮不同的部署環(huán)境
任 何需要與后端服務(wù)器通信的APP(最簡(jiǎn)單的APP除外)至少需要一個(gè)可配置的服務(wù)器URL。又或者你的應(yīng)用使用了第三方平臺(tái)登錄,如Facbook、 Google或者類(lèi)似的系統(tǒng),并且在每種構(gòu)建環(huán)境下又需要不同的第三方平臺(tái),那么就需要為不同構(gòu)建環(huán)境設(shè)置不同的平臺(tái)App IDs。又或者你的應(yīng)用需要收集分析數(shù)據(jù),那么你可能就需要配置不同的 mixpanel ID。
具體設(shè)置方法
下面簡(jiǎn)單的例子中,我們需要?jiǎng)?chuàng)建Development和Release兩種環(huán)境,最終我們要為每種環(huán)境創(chuàng)建自己的配置文件(Setting.plist),并且在應(yīng)用運(yùn)行時(shí)只加載相應(yīng)環(huán)境的配置文件。
你可以下載 Demo程序 跟著步驟操作一遍。
1.創(chuàng)建DevelopmentRelease構(gòu)建環(huán)境
在Project Navigator下,選擇項(xiàng)目名,然后在下拉菜單中選擇Project(注意不是Target),然后選中Info標(biāo)簽欄。
1492072382098_1.png
在"Configurations"下點(diǎn)擊 "+" ,然后選擇 "Duplicate 'Release' Configuration",然后重命名為"Production"。
1492072406427_2.png
然后重復(fù)上面操作,復(fù)制"Debug"配置,重命名為"Development"。
接著,刪除默認(rèn)的Debug和Release配置。
1492072617604_3.png
(注意:如果你使用了CocoaPods,請(qǐng)看下面CocoaPods注意項(xiàng)。)
2.為兩種構(gòu)建環(huán)境分別創(chuàng)建配置文件"Settings-Development.plist" "Settings-Production.plist"。
1492072718404_4.png
1492072731920_5.png
3.現(xiàn)在你可以向配置文件中添加任意的配置項(xiàng),但要確保兩個(gè)配置文件中的配置項(xiàng)的key相同。
1492072746686_6.png
4.打開(kāi)Project Navigator,選中項(xiàng)目名,然后在下拉菜單中選中Target(注意不是Project)。
1492072760999_7.png
在Build Phases區(qū)域,在Copy Bundle Resources區(qū)域中移除Target對(duì)兩個(gè)配置文件的引用。
1492072774780_8.png
1492072788796_9.png
5.添加一個(gè)Run Script Build Phase,選擇Editor -> Add Build Phase -> Add Run Script Build Phase。
1492072803344_10.png
6.拷貝下面腳本到新創(chuàng)建的Run Script
1
2
3
4
5
6 6
7
8
if [ “${CONFIGURATION}” == “Development” ]; then
 
cp -r “${PROJECT_DIR}/Settings-Development.plist” “${BUILT_PRODUCTS_DIR}/${PRODUCT_NAME}.app/Settings.plist”
elif [ “${CONFIGURATION}” == “Production” ]; then
 
cp -r “${PROJECT_DIR}/Settings-Production.plist” “${BUILT_PRODUCTS_DIR}/${PRODUCT_NAME}.app/Settings.plist”
 
fi
7.下面我們就可以在程序運(yùn)行時(shí)讀取配置文件中的內(nèi)容:
1
2
3
4
5
6
7
8
9
10
11
12
var serverUrl: String = ""
if let filePath = NSBundle.mainBundle().pathForResource("Settings", ofType: "plist") {
 
    let contentsOfFile = NSDictionary(contentsOfFile: filePath)
     
    serverUrl = contentsOfFile?.objectForKey("ServerUrl") as! String
     
} else {
 
    // no settings!
     
}
8.接下來(lái)設(shè)置應(yīng)用構(gòu)建時(shí)的配置環(huán)境,點(diǎn)擊菜單欄中的Product -> Scheme -> Edit Scheme,選中左側(cè)Action列表欄中的"Run",然后在右側(cè)選擇DevelopmentProduction配置
1492072817656_11.png
1492072832126_12.png
9.同樣,你需要為其他的Action,如Test,ProfileAnalyzeArchive選擇構(gòu)建配置。比如,你對(duì)Production進(jìn)行運(yùn)行/測(cè)試時(shí),請(qǐng)確保在將其打包上傳至TestFlight前,把"Archive"Action的構(gòu)建配置設(shè)為"Production"!
CocoaPods注意事項(xiàng):
如果在添加新的Devlopment和Production配置之前,你已經(jīng)在項(xiàng)目中使用了CocoaPods,那么就可能會(huì)遇到錯(cuò)誤,比如,“[!] CocoaPods did not set the base configuration of your project because your project already has a custom config set. In order for CocoaPods integration to work at all, please either set the base configurations of the target … in your build configuration”,或者與pods相關(guān)的鏈接器錯(cuò)誤。
要解決這些問(wèn) 題,你需要到Project setting區(qū)域的info欄(和步驟1相同位置),將所有新增配置的"Based on Configuration File" 設(shè)置為 "None",然后運(yùn)行"pod install",強(qiáng)制pod工具為新創(chuàng)建的配置重新生成配置文件。同樣如果后面你又添加了新的配置,你需要重復(fù)上面操作。
1492072845735_13.png
接下來(lái)
 
通過(guò)這個(gè)框架,你可以在項(xiàng)目配置文件中添加任何配置項(xiàng),并在程序運(yùn)行時(shí)讀取它們。當(dāng)然,如果你的應(yīng)用需要多種演示測(cè)試環(huán)境,你可以根據(jù)需要?jiǎng)?chuàng)建更多構(gòu)建環(huán)境。同樣你也可以在一個(gè)構(gòu)建環(huán)境中添加多個(gè)項(xiàng)目配置文件,但要記住要為每種構(gòu)建環(huán)境創(chuàng)建單獨(dú)的配置文件,另外你需要在Build Phases腳本中將這些配置文件在構(gòu)建時(shí)拷貝到程序包中(參考步驟6)。

本文版權(quán)歸黑馬程序員IOS培訓(xùn)學(xué)院所有,歡迎轉(zhuǎn)載,轉(zhuǎn)載請(qǐng)注明作者出處。謝謝!
作者:黑馬程序員IOS培訓(xùn)學(xué)院
首發(fā):http://409rqu1.cn/news/ios.html
分享到:
在線(xiàn)咨詢(xún) 我要報(bào)名
和我們?cè)诰€(xiàn)交談!