教育行業(yè)A股IPO第一股(股票代碼 003032)

全國咨詢/投訴熱線:400-618-4000

IOS培訓實戰(zhàn)教程之iOS Xcode部署配置

更新時間:2015年12月28日18時08分 來源:傳智播客IOS培訓學院 瀏覽次數(shù):

iOS Xcode部署配置
幾乎所有移動應用,包括我正在編寫的一款iOS應用 Emmerge 都 需要與服務器交互。從第一次向團隊成員演示應用開始,我們就開始找一種更快構建不同環(huán)境產(chǎn)品的方法。一開始我們只需要修改不同環(huán)境下的服務器地址,但在 經(jīng)過幾天來回的在配置文件中切換本地和遠程服務器地址后,我對這種重復工作煩透了,于是到Google查找解決方法。在搜索一段時間后,我卻沒用找到如何 在Xcode中為每一種構建環(huán)境分別設置配置的方法,于是在經(jīng)過大量搜索stack overflow和博客后,我總結了一種相當簡潔有效的方法,在這里分享給需要的人。
我們何時需要考慮不同的部署環(huán)境
任 何需要與后端服務器通信的APP(最簡單的APP除外)至少需要一個可配置的服務器URL。又或者你的應用使用了第三方平臺登錄,如Facbook、 Google或者類似的系統(tǒng),并且在每種構建環(huán)境下又需要不同的第三方平臺,那么就需要為不同構建環(huán)境設置不同的平臺App IDs。又或者你的應用需要收集分析數(shù)據(jù),那么你可能就需要配置不同的 mixpanel ID。
具體設置方法
下面簡單的例子中,我們需要創(chuàng)建Development和Release兩種環(huán)境,最終我們要為每種環(huán)境創(chuàng)建自己的配置文件(Setting.plist),并且在應用運行時只加載相應環(huán)境的配置文件。
你可以下載 Demo程序 跟著步驟操作一遍。
1.創(chuàng)建DevelopmentRelease構建環(huán)境
在Project Navigator下,選擇項目名,然后在下拉菜單中選擇Project(注意不是Target),然后選中Info標簽欄。
Macintosh HD:Users:chaizhen:Desktop:文章:iOS Xcode部署配置:iOS Xcode部署配置.resources:1ED3B0AB-BBEA-4D0C-831D-5C44650A62A4.png
在"Configurations"下點擊 "+" ,然后選擇 "Duplicate 'Release' Configuration",然后重命名為"Production"。
Macintosh HD:Users:chaizhen:Desktop:文章:iOS Xcode部署配置:iOS Xcode部署配置.resources:5132669B-2C82-4C42-8940-DB79BEC012B2.png
然后重復上面操作,復制"Debug"配置,重命名為"Development"。
接著,刪除默認的Debug和Release配置。
Macintosh HD:Users:chaizhen:Desktop:文章:iOS Xcode部署配置:iOS Xcode部署配置.resources:42965A68-5F96-4253-BF3C-BC2EAA9E561B.png
(注意:如果你使用了CocoaPods,請看下面CocoaPods注意項。)
2.為兩種構建環(huán)境分別創(chuàng)建配置文件"Settings-Development.plist" "Settings-Production.plist"。
Macintosh HD:Users:chaizhen:Desktop:文章:iOS Xcode部署配置:iOS Xcode部署配置.resources:5E5F6318-9485-4431-B4E8-903E3D6A23B8.png
Macintosh HD:Users:chaizhen:Desktop:文章:iOS Xcode部署配置:iOS Xcode部署配置.resources:F2CE04B0-AD00-4802-A179-BACE27785A83.png
3.現(xiàn)在你可以向配置文件中添加任意的配置項,但要確保兩個配置文件中的配置項的key相同。
Macintosh HD:Users:chaizhen:Desktop:文章:iOS Xcode部署配置:iOS Xcode部署配置.resources:836D04AC-7368-44BD-BA60-C44F15FD43FE.png
4.打開Project Navigator,選中項目名,然后在下拉菜單中選中Target(注意不是Project)。
Macintosh HD:Users:chaizhen:Desktop:文章:iOS Xcode部署配置:iOS Xcode部署配置.resources:8DD05A41-3A34-469F-96F1-EDE4EDAB1C63.png
在Build Phases區(qū)域,在Copy Bundle Resources區(qū)域中移除Target對兩個配置文件的引用。
Macintosh HD:Users:chaizhen:Desktop:文章:iOS Xcode部署配置:iOS Xcode部署配置.resources:E9FDDCF3-F83C-4D84-A3EB-0B920A7F4C85.png
Macintosh HD:Users:chaizhen:Desktop:文章:iOS Xcode部署配置:iOS Xcode部署配置.resources:969C5C57-CC7C-4D5A-9F51-8D77CD5559A1.png
5.添加一個Run Script Build Phase,選擇Editor -> Add Build Phase -> Add Run Script Build Phase。
Macintosh HD:Users:chaizhen:Desktop:文章:iOS Xcode部署配置:iOS Xcode部署配置.resources:1F42DAE1-8E43-4551-830F-5A306F26DF5D.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.下面我們就可以在程序運行時讀取配置文件中的內(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.接下來設置應用構建時的配置環(huán)境,點擊菜單欄中的Product -> Scheme -> Edit Scheme,選中左側Action列表欄中的"Run",然后在右側選擇DevelopmentProduction配置
Macintosh HD:Users:chaizhen:Desktop:文章:iOS Xcode部署配置:iOS Xcode部署配置.resources:D3ADD202-A52F-4FFD-BBF6-1C6376E4A65D.png
Macintosh HD:Users:chaizhen:Desktop:文章:iOS Xcode部署配置:iOS Xcode部署配置.resources:076DE8B7-1E69-498C-9EC9-A6ADB0B30458.png
9.同樣,你需要為其他的Action,如Test,ProfileAnalyzeArchive選擇構建配置。比如,你對Production進行運行/測試時,請確保在將其打包上傳至TestFlight前,把"Archive"Action的構建配置設為"Production"!
CocoaPods注意事項:
如果在添加新的Devlopment和Production配置之前,你已經(jīng)在項目中使用了CocoaPods,那么就可能會遇到錯誤,比如,“[!] 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相關的鏈接器錯誤。
要解決這些問 題,你需要到Project setting區(qū)域的info欄(和步驟1相同位置),將所有新增配置的"Based on Configuration File" 設置為 "None",然后運行"pod install",強制pod工具為新創(chuàng)建的配置重新生成配置文件。同樣如果后面你又添加了新的配置,你需要重復上面操作。
Macintosh HD:Users:chaizhen:Desktop:文章:iOS Xcode部署配置:iOS Xcode部署配置.resources:E1D3D4C2-4B86-4640-954A-843D9A4E3FC3.png
接下來
 
通過這個框架,你可以在項目配置文件中添加任何配置項,并在程序運行時讀取它們。當然,如果你的應用需要多種演示測試環(huán)境,你可以根據(jù)需要創(chuàng)建更多構建環(huán)境。同樣你也可以在一個構建環(huán)境中添加多個項目配置文件,但要記住要為每種構建環(huán)境創(chuàng)建單獨的配置文件,另外你需要在Build Phases腳本中將這些配置文件在構建時拷貝到程序包中(參考步驟6)。

本文版權歸傳智播客IOS培訓學院所有,歡迎轉載,轉載請注明作者出處。謝謝!
作者:傳智播客IOS培訓學院
首發(fā):http://m.metathetuscanyresort.com/ios/
0 分享到:
和我們在線交談!