0.PRE:
iOS開發(fā)中,很可能有以下場景:需要開發(fā)多個版本,或因需區(qū)分收費版,免費版,或因為網(wǎng)絡(luò)環(huán)境需要區(qū)分測試版,發(fā)布版,或因渠道不同需要區(qū)分企業(yè)版,AppStore版等等。解決辦法無非就是CheckOut多份代碼,然后按照指定需求,修改配置……
不同的渠道需要不同的證書,不同的BundleID需要不同的描述文件,不同的BundleID也可能對應(yīng)不同的綁定BundleID的第三方庫。甚至于不同的網(wǎng)絡(luò)環(huán)境也需要不同的BaseUrl,雖然這個可以宏定義解決。可以想象,每次CheckOut改這些配置,是有多么麻煩。其實有一種方式可以完美結(jié)局以上問題——創(chuàng)建多個Target。
1.TARGET
Apple對于TARGET的定義:“ Targets that define the products to build. A target organizes the files and instructions needed to build a product into a sequence of build actions that can be taken.”就是說一個Target包含了你想要創(chuàng)建(build)的產(chǎn)品(product)包含的源文件,資源,配置等等。我靠,這不就是一個應(yīng)用所需的全部嗎?
做過iOS8開始的第三方輸入法,Today插件或者AppleWatch擴展的童鞋一定對Target不會陌生。不過今天所關(guān)注的是公用一份代碼,而配置不同的Target拷貝。
2.創(chuàng)建Target拷貝
創(chuàng)建一個應(yīng)用,默認(rèn)會有一個工程文件名的Target和一個Tester的target,Xcode7創(chuàng)建的話可能也會默認(rèn)有一個UITest的target。
選中我們的項目Target右鍵選擇Duplicate,我們就拷貝了這個Target,這個Target共享之前的所有代碼。
之后就是改名字的操作了。默認(rèn)會生成一個拷貝的Info.plist。這個Info.plist就對應(yīng)與我們新創(chuàng)建的Target。如果需要改名字轉(zhuǎn)移位置的話,需要先Remove然后文件夾轉(zhuǎn)移后再添加進去即可。然后就可以隨意的修改BundleID,證書,描述文件了等等了。之后為新創(chuàng)建的Target在配置一個Schem。
3.新Target的配置
除了基本的修改BundleID外,還能控制源文件,第三方庫,資源文件的編譯選項等情況。在這里就介紹一下我我遇到的不懂BundleID對應(yīng)不同的第三方靜態(tài)庫吧。首先把兩個靜態(tài)庫文件全部添加,然后不同Target加載不同庫即可。
如果新加入了文件或者資源,一定要選擇所有的Target,默認(rèn)貌似的不是所有
新的target對應(yīng)plist重新chose后一定要設(shè)置相對路徑,不需要在前邊的$(SRCROOT),不然使用命令諸如xcrun agvtool what-marketing-version
就會找不到