Xcode使用筆記之Target

前言

在開發項目時,常常須要在開發環境下增長一些方便調試的方法,或者須要完成相似馬甲包的操做,等等,Xcode爲咱們提供了一個簡單的方案。shell

簡介

Target爲咱們提供了一個徹底獨立的編譯環境,能夠很是靈活的編譯工程代碼。bash

生成Target

有兩種方法能夠生成一個新的Target,新建一個Target和複製原有Target。框架

新建

在Targets欄目下點擊+新建一個Target。ui

彈框中有不少可選項,好比一些應用的擴展也在這裏生成。咱們須要的是Application下的選項,通常都是Single View App。spa

用這種方法生成的Target至關於新建了一個應用,多個Target間有各自的文件夾,文件相互之間不會因命名的問題衝突。3d

複製

在要複製的Target上點擊右鍵,在彈框中選擇Duplicate。調試

這時候會生成一個以copy結尾的Target,並在項目中生成一個對應plist文件。code

屬於所複製的應用原有的文件都會在新的Target中生效。cdn

基於Target開發

生成了Target以後,會有一些基於此Target的操做,這個時候須要瞭解項目中文件的做用範圍。blog

文件做用範圍

在新建文件的時候能夠選擇文件生效的Target,能夠多選。

能夠針對不一樣的Target聲明不一樣的OC類,可是叫同一個名字,這樣就能夠用同一套邏輯完成針對不一樣Target的各自實現,可是注意不要把相同名字的類存放在一個文件夾下。

若是項目中存在一些相同名字的類的話,在修改時要注意這個類的做用範圍。

若是在編譯的時候報錯找不到這個類,注意檢查一下是否是這個類的做用範圍不包括正在編譯的這個Target。

Target設置

在新建Target會根據你生成的方式默認填入相關的配置,併爲這個Target生成Info.plist,固然,你也能夠向平時同樣,手動指定其餘的plist文件。你也能夠針對Target配置不一樣的證書等等,這裏就再也不贅述。

宏的運用

有時候對不一樣的Target不須要專門生成一個類去處理邏輯間的區別,這個時候預編譯宏就能起到很好的區分做用了,能夠聲明一個宏,對不一樣的Target賦予不一樣的值,再在代碼中根據值作不一樣的邏輯。

Run Script Phase

XCode爲咱們提供了Run Script功能,讓咱們能用過shell腳本在項目編譯時完成更多的操做,幫咱們將關注儘量的聚焦於代碼部分。

在Target對應的Build Phases裏面點擊+號,選擇New Run Script Phase,添加一個腳本。

咱們在項目中有時候也用腳原本作Releas版本的Build的自增,避免了手動的繁瑣和失誤。

if [ $CONFIGURATION == Release ]; then
echo "Bumping build number..."
plist=${PROJECT_DIR}/${INFOPLIST_FILE}
 #increment the build number (ie 115 to 116)
buildnum=$(/usr/libexec/PlistBuddy -c "Print CFBundleVersion" "${plist}")

if [[ "${buildnum}" == "" ]]; then
echo "No build number in $plist"
exit 2
fi

buildnum=$(expr $buildnum + 1)

/usr/libexec/Plistbuddy -c "Set CFBundleVersion $buildnum" "${plist}"

echo "Bumped build number to $buildnum"

else
echo $CONFIGURATION " build - Not bumping build number."
fi
複製代碼

然而有了Target以後,咱們能夠作的事情就更多了。好比咱們能夠針對開發和發佈各生成一個Target,在發佈的的Target下將生成的ipa移動到指定的文件夾甚至發佈到網上,或者移除一些三方庫中模擬器的框架。不過要注意的是,由於腳本是在代碼編譯完以後才執行的,因此替換代碼或資源對當前編譯的結果是無效的,只要下次編譯的時候纔會生效。

不過這就要求對shell比較熟悉,很少說了,我去學shell了。

相關文章
相關標籤/搜索