說一下背景程序員
自從這個項目不死不活的迭代了2年,從項目搭建到如今,一直都是本身在開發和維護,因此項目結構很是清晰,可是以前的水平寫的代碼如今看來也是慘不忍睹,不過本人比較懶,也就沒有考慮太重構的事情 - - 是否是一位不合格的程序員呢,哈哈哈!swift
這個項目中開始是用oc寫的,今年開始,因爲喜歡上了swift,因此致使此次的迭代使用了swift開發,因此項目目前應該算是oc和swift混編(也沒看到swift編譯快到哪裏去呀?),如何混編,這裏就很少贅述了,百度搜一下不少,總結一下,大體就兩點:app
1.swift調用oc的代碼,須要使用「橋接文件」,橋接文件基本上在你建立swift代碼的時候會提示你建立,橋接文件裏導入的是在swift代碼中要使用到的oc代碼。 ui
橋接文件的配置路徑在BuildSettings 中搜索 Swiftdebug
只要路徑正確,配置完成後,在橋接文件裏引入swift代碼中要使用的oc庫便可。blog
2. oc代碼調用swift代碼文件。 在建立swift文件的時候,系統會自動建立一個 "productName-Swift.h"的文件,productName就是項目名,在要使用swift代碼文件的地方 引入便可。這個文件是找不到的,但其實是存在的。圖片
--------------------------分割線-------------------------開發
以上是項目的背景,下面要說到使用targets了部署
在這個項目以前,歷來沒有使用過targets,不是懶 而是由於以前的項目沒這個必要get
可是此次客戶有一個需求,這個app須要有一個內部版本,內部版本開放一些特殊的功能,而線上版本沒有,因此才考慮使用targets來配置一下兩種環境。
若是在相同代碼或者90%代碼不變的狀況下,有部署多端或者部署多個環境的要求下,建議仍是使用targets來管理,很方便。
1.建立targets
這個很少說,很簡單,單擊目前已有的targets,選擇「Duplicate」,複製一個相同環境的tagets,而後修改tagets名稱。 而後 Manage Schemes,
將兩個tagets都選上,這樣打包或者debug的時候,就能夠選擇不一樣的環境配置了
2.配置內部版target
上面第一步建立好了targets後,須要對這個targets進行配置,首先就是在BuildSettings中搜索 「preprocessing」,設置一個內部環境獨有的宏 kTargetInternal,這樣就能夠在代碼中使用此宏了。
除了配置宏,還要配置info.plist。在上面的步驟中,當咱們從新"Duplicate'一個targets的時候,也會從新生成一個plist文件,buildsetting搜索 'Packaging'
OK,配置結束,這個時候運行基本上沒問題,你能夠在這個targets中配置屬於這個環境獨有的圖片,啓動圖等等。
必定要注意一下,若是你是用oc和swift混編的話,注意這裏:
因爲無論有幾個targets,在建立swift文件的時候,會默認生成一個productName-Swift.h的文件,因此這裏必定不要配 $(TARGET_NAME)-Swift,這樣會使你的程序報錯,會提示你找不到xxxswift文件。無論在哪一個targets中,必定要寫死,