Why? 爲什麼根據target區分、優缺點
代碼區分 | target區分 | |
---|---|---|
UI表現(icon、開屏) | 不可區分 | 自定義icon、開屏 |
打包問題 | 打包忘記修改易出問題 | 根據不同需求打包不同target |
操作 | 頻繁修改代碼 | 運行不同target即可 |
操作流程
1、新建target,選中project,選擇主target,右鍵Duplicate,創建出一個copy版的target
2、新建target後,項目目錄會生成新的plist文件,修改新建的target的名稱以及匹配的plist名稱
3、修改scheme裏的target名稱。 選擇"Product"->"Scheme"->"Edit Scheme"
4、配置target對應的plist文件,選中對應target 下的 "Build Settings",輸入搜索 "Packaging",修改爲target對應的plist文件"TargetTestProject_dev-Info.plist"。
5、(推薦非必選)新建一組AppIcon以區分正式版和測試版本,選中 Assets.xcassets 然後添加新的 App 圖標。選擇"icon" > "App Icons & Launch Images" > "New iOS App Icon". 將新圖標命名爲 "AppIcon-dev"添加對應的icons。這種便於傳包人員和用戶區分當前App是哪個正式/測試版本。
6、給兩個版本的target 同時設置一個預處理宏和編譯器標誌。這樣在之後的開發中我們就可以在代碼中使用這個標識來檢測當前運行的應用是哪個版本。
選擇 "Building Settings",搜索"Preprocessing",滾動到 Apple LLVM 7.0 - Preprocessing。展開 "Preprocessor Macros" 並且爲 Debug 和 Release 添加一個變量。對於測試環境版本target(即 TargetTestProject_dev),設置變量的值爲** DEVMODE=1**(校對注:等號兩邊不能有空格)。相對地,設置正式環境版本target 的值爲 DEVMODE=0。
7、根據預處理宏判斷區分正式環境和測試環境下一些key值、證書、請求URL的選擇
8、如果項目使用cocoapods集成第三方庫的話需要對Podfile做如下處理
platform :ios, '8.0'
# target數組 如果有新的target直接加入該數組
targetsArray = ['TargetTestProject', 'TargetTestProject_dev']
# 循環
targetsArray.each do |t|
target t do
pod 'FMDB' #
pod 'pop','~> 1.0.7' #
pod 'Masonry','~> 0.6.1' #
end
end
注意事項
新建文件時記得需要勾選測試環境對應的target