真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

詳解iOSProject和Targets配置

最近開始學(xué)習(xí)完整iOS項(xiàng)目的開發(fā)流程和思路,在實(shí)際的項(xiàng)目開發(fā)過程中,我們通常需要對項(xiàng)目代碼和資料進(jìn)行版本控制和管理,一般比較常用的SVN或者Github進(jìn)行代碼版本控制和項(xiàng)目管理。我們iOS項(xiàng)目的開發(fā)工具Xcode本來就集成了Github的代碼控制,所以用GitHub會更方便一些,想具體了解Xcode和GitHub鏈接具體操作步驟的小伙伴可以戳這里:iOS學(xué)習(xí)——Xcode9上傳項(xiàng)目到GitHub。

網(wǎng)站建設(shè)哪家好,找成都創(chuàng)新互聯(lián)公司!專注于網(wǎng)頁設(shè)計(jì)、網(wǎng)站建設(shè)、微信開發(fā)、微信小程序、集團(tuán)企業(yè)網(wǎng)站建設(shè)等服務(wù)項(xiàng)目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了東昌府免費(fèi)建站歡迎大家使用!

創(chuàng)建完項(xiàng)目之后,我們再對一個(gè)項(xiàng)目進(jìn)行代碼開發(fā)之前,我們首先需要對iOS項(xiàng)目的開發(fā)環(huán)境進(jìn)行搭建,我們的應(yīng)用名稱、項(xiàng)目名稱、應(yīng)用圖標(biāo)、啟動圖片等都是在這一步進(jìn)行設(shè)置的,所以這一部分是整個(gè)項(xiàng)目開發(fā)的基礎(chǔ),在后續(xù)的開發(fā)過程中也經(jīng)常會有些設(shè)置需要用到這里的步驟進(jìn)行修改。但是目前網(wǎng)上查到的資料都非常簡短和零散,所以今天我們希望對Xcode上iOS項(xiàng)目搭建各種細(xì)節(jié)都進(jìn)行一個(gè)詳盡的了解和學(xué)習(xí)。

一 Project 和 Targets區(qū)別

首先,iOS項(xiàng)目的開發(fā)環(huán)境搭建主要就是基于我們項(xiàng)目的Project 和 Targets進(jìn)行展開的。那么,這兩個(gè)東西到底是啥玩意呢?我們點(diǎn)擊我們的項(xiàng)目名,就會出現(xiàn)下圖所示的界面。從圖片中可以看到,在項(xiàng)目導(dǎo)航面板的右側(cè)面板上有藍(lán)色和紅色框所示的PROJECT和TARGETS兩部分。

詳解iOS Project和Targets配置

PROJECT和TARGETS到底是什么意思呢?簡單解釋如下:

project:project是所有文件、資源、信息/配置的repository。一個(gè)project包含所有build your products所需的內(nèi)容并且維護(hù)他們之間關(guān)系。它可以包含多個(gè)targets。一個(gè)project為所有的target定義默認(rèn)的build setting(每一個(gè)target可以自定義它們的build setting,這些自定義的setting會覆蓋project默認(rèn)的build setting,這個(gè)在后面會講到)。  target:簡單地說,target定義了project的編譯設(shè)置,確定了project中各種資源和代碼的編譯順序。每個(gè)target都唯一依賴于一個(gè)project,但是一個(gè)project中可以有多個(gè)targets,上圖所示的target就有2個(gè)(KLBaiSi、KLBaiSiTest),每一個(gè)的設(shè)置不同,但是同一時(shí)間里只有一個(gè)active Target,在編譯時(shí)我們可以選擇用哪一個(gè)target進(jìn)行編譯,具體操作選擇如下圖所示。一個(gè)Target和它的product可以和其他Target聯(lián)系,如果一個(gè)target build需要另一個(gè)target的“輸出”,可以說成第一個(gè)target依賴第二個(gè)。如果這倆個(gè)target在同一個(gè)workspace,Xcode會發(fā)現(xiàn)他們的依賴關(guān)系,從而build the products按照特定的順序。這樣的關(guān)系被稱為“ implicit dependency.” 你也可以為倆個(gè)targets指定明確的target 依賴關(guān)系在build setting里面。例如,你可能build一個(gè)library和一個(gè)鏈接這個(gè)library的application(同一個(gè)workspace)。Xcode可以發(fā)現(xiàn)這種關(guān)系并且自動build這個(gè)library first。然而,你如果要去鏈接library的某個(gè)版本而不是one built in the workspace,你可以在build settings里創(chuàng)建一個(gè)確定的依賴關(guān)系,它將會覆蓋implicit dependency。

詳解iOS Project和Targets配置

詳解iOS Project和Targets配置

二 project和target的屬性設(shè)置

關(guān)于project和target的屬性設(shè)置,如下圖所示就是project和target的屬性設(shè)置界面,左邊是project的屬性設(shè)置界面,右邊是target的屬性設(shè)置界面。相對而言project的比較簡單,只有info和build setting兩項(xiàng),畢竟只是對項(xiàng)目資源進(jìn)行簡單的設(shè)置,而target的設(shè)置則比較復(fù)雜,有g(shù)eneral、capabilities、resource tags、 info、build setting、build phases和build rules七項(xiàng),因?yàn)閠arget的每一項(xiàng)設(shè)置都直接決定了我們最終App的顯示效果。下面我們就一一來學(xué)習(xí)和了解各個(gè)界面的設(shè)置有什么作用。

詳解iOS Project和Targets配置   

詳解iOS Project和Targets配置

2.1 project屬性設(shè)置

project的屬性設(shè)置有兩塊內(nèi)容,info和build setting,但是project的build setting和target的build setting之間是相關(guān)的,target的build setting的一部分設(shè)置會繼承project的build setting部分。所以,project的build setting部分內(nèi)容就放在2.2target屬性設(shè)置部分進(jìn)行統(tǒng)一講解,本小節(jié)就主要了解project的info屬性設(shè)置部分,info屬性的界面如下:

詳解iOS Project和Targets配置

主要分為三部分:Deployment Target、Configurations和Localizations。

Deployment Target:部署配置,主要是對本project的生成的App的可以運(yùn)行的最低版本進(jìn)行配置,默認(rèn)是當(dāng)前Xcode上API的最新版本,所以,在我們的項(xiàng)目中有需要對低版本適配的地方需要在這里設(shè)置。同樣的,我們還可以在build setting中對這一屬性進(jìn)行設(shè)置,兩者是同步的。 Localizations:本地化,這里的功能主要是添加我們的App所支持的語言,通過上圖最下面的紅色圈內(nèi)的【+】【-】按鈕可以添加或刪除不同的語種,并可以選擇根據(jù)手機(jī)的設(shè)置進(jìn)行不同語種的自適應(yīng)。關(guān)于最下面的選擇是否開啟國際化,默認(rèn)是開啟的

Configurations:用來配置iOS項(xiàng)目的xcconfig文件,主要用于在幾套不同的開發(fā)環(huán)境編譯。xcconfig文件其實(shí)就是xcode里的config文件,本質(zhì)是一個(gè)用來保存Build Settings鍵值對的純文本文件。這些鍵值對覆蓋Build Settings中的值,所以當(dāng)在xcconfig文件中配置了的選項(xiàng),在Build Settings中設(shè)置將失效。我們在項(xiàng)目中一般不會進(jìn)行xcconfig文件的自定義。具體xcconfig文件是什么東東,大家可以查看:iOS之Xcconfig雜談 。估計(jì)很多新入門的iOS開發(fā)對xcconfig文件都不是很熟悉(其實(shí)我也不是很了解。。。), 但是大家可能都用過Cocoapods, 其實(shí)Cocoapods的項(xiàng)目配置管理很多都是依賴xcconfig文件去實(shí)現(xiàn)的。所以在使用Cocoapods進(jìn)行導(dǎo)包的項(xiàng)目中,我們通過打開.xcworkspace文件,我們會發(fā)現(xiàn)project-->info-->configutations下的都有對應(yīng)的配置文件,而原先沒有用Cocoapods配置的則沒有相關(guān)的配置文件,具體區(qū)別如下圖所示。

 詳解iOS Project和Targets配置   

詳解iOS Project和Targets配置

 2.2 target屬性設(shè)置

在前面我提到了,target的屬性設(shè)置的內(nèi)容比較多,總共有g(shù)eneral、capabilities、resource tags、 info、build setting、build phases和build rules七項(xiàng),接下來我們就一個(gè)一個(gè)來了解和學(xué)習(xí)。

 2.2.1 target的general屬性設(shè)置

target的general屬性設(shè)置界面如下圖所示,主要分為六個(gè)部分,下面我們隊(duì)每一部分的設(shè)置的意思進(jìn)行一個(gè)解讀。

詳解iOS Project和Targets配置 

Identify(標(biāo)識符)欄主要定義了一些和應(yīng)用發(fā)布有關(guān)的標(biāo)識屬性。 Display Name(App應(yīng)用顯示名):安裝到iOS手機(jī)或iPad上App的名稱。 Bundle Identifier(包標(biāo)識符)是該應(yīng)用的唯一ID,用來讓操作系統(tǒng)和AppStore識別。在創(chuàng)建項(xiàng)目或者對象過程中Xcode就自行創(chuàng)建了包標(biāo)識符,一般情況下不要修改它。 Version(外部版本號)使用戶能夠看到的版本號。 Build(內(nèi)部版本號)開發(fā)者自己看到的版本號,以區(qū)分內(nèi)部測試版本。 Signing(簽名)主要是進(jìn)行證書管理,在真機(jī)調(diào)試或者打包時(shí)我們都需要進(jìn)行簽名進(jìn)行認(rèn)證才可以的。這里有一個(gè)簡單的使用教程,大家有需要可以戳這里: IOS的Automatically Sign功能,直接在設(shè)備上打包。 Deployment Info(部署信息)定義了一些和應(yīng)用配置相關(guān)的標(biāo)識屬性。 Deployment Target(部署對象):用來設(shè)置支持的最低版本。這個(gè)和project的info中的一個(gè)意思,并且,這兩個(gè)的設(shè)置最好是一樣,如果不一樣,最后的App會以target的設(shè)置為準(zhǔn)。 Devices(設(shè)備):用來設(shè)置支持的設(shè)備,有iPhone、iPad和Universal三個(gè)選項(xiàng)。 Main Interface(主界面):應(yīng)用啟動時(shí)預(yù)加載的主界面視圖。一般有兩種方法: 一種是通過Main.storyboard進(jìn)行啟動,設(shè)置這種方法需要我們整個(gè)項(xiàng)目的邏輯和跳轉(zhuǎn)都在Main.storyboard中完成取消stroryboard的方式啟動主界面,而是通過代碼的方式運(yùn)行main.m的方法進(jìn)行啟動,并通過在AppDelegate的 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 方法中指定主界面視圖進(jìn)行啟動。一般項(xiàng)目中都是采用這種方法進(jìn)行的,因?yàn)橐话沩?xiàng)目中界面比較多,很多都是通過純代碼的風(fēng)格進(jìn)行定義的,這樣方便修改和定位問題,項(xiàng)目的邏輯也更清晰,特別是多人合作的項(xiàng)目,這種風(fēng)格更適合。 Device Orientation(設(shè)備方向):定義應(yīng)用支持的方向。有Portrait、Upside Down、Landscape Left(橫評、Home鍵在左)、Landscape Right幾種方向。 Status Bar Style(狀態(tài)欄樣式)  App Icons and Launch Images:應(yīng)用圖標(biāo)和啟動頁面。主要設(shè)置三項(xiàng):應(yīng)用圖標(biāo)、啟動圖片和啟動頁面。具體應(yīng)用圖標(biāo)和啟動頁面的大小尺寸介紹見官網(wǎng):Human Interface Guidelines。 App icon Source(應(yīng)用圖標(biāo)):對應(yīng)著文件資源Assets.xcassets目錄中的AppIcon中的圖片,如下圖所示。最右邊的面板可以選擇添加哪一種或哪幾種設(shè)備上的圖標(biāo),每一個(gè)型號的設(shè)備上的圖標(biāo)的尺寸是不同的。在中間有一個(gè)個(gè)的小格子,我們將所有切好的圖標(biāo)直接拖過來,他們會自動找到自己應(yīng)該放在的格子里。這些小格子主要分為四類: Notification:通知時(shí)的圖標(biāo),類似有應(yīng)用相關(guān)的推送消息時(shí),有時(shí)候需要顯示本應(yīng)用的圖標(biāo)則會顯示這個(gè)尺寸的 Spotlight:搜索小圖標(biāo),當(dāng)在Spotlight中輸入應(yīng)用名,搜索結(jié)果中出現(xiàn)該應(yīng)用時(shí)的圖標(biāo)就是這個(gè)尺寸的,還有設(shè)置里的圖標(biāo)也是這個(gè)尺寸的。 App:這就是正常的App圖標(biāo),安裝好之后在桌面顯示的,或者分享推薦時(shí)顯示的應(yīng)用也是這個(gè)尺寸的圖標(biāo) App store:應(yīng)用商店中的顯示的圖標(biāo) Luanch Image Source(啟動圖片):同樣對應(yīng)著文件資源Assets.xcassets目錄中的LuanchImage中的圖片,設(shè)定了各種情況下的啟動圖片,具體界面就不截圖了,和Appicon一樣,我們將所有切好的圖標(biāo)直接拖過來,他們會自動找到自己應(yīng)該放在的格子里。啟動圖片實(shí)際上定義了應(yīng)用啟動后的界面大小,所以在不同機(jī)型中我們需要做好適配,見下面的【啟動頁面在屏幕適配中的作用】。一款A(yù)pp必須設(shè)定對應(yīng)設(shè)備的啟動圖片,否則點(diǎn)開應(yīng)用會是一片黑白。 Luanch Screen File(啟動頁面文件):是一個(gè)storyboard文件,作用與Luanch Image一樣,但是啟動文件的優(yōu)先級高于啟動圖片,就是說如果兩個(gè)都設(shè)置了,那么啟動頁面以啟動文件為準(zhǔn),如果都沒有設(shè)置,則無法啟動。啟動頁面的作用:在我們點(diǎn)擊應(yīng)用圖標(biāo)啟動應(yīng)用時(shí),應(yīng)用啟動需要一定的操作時(shí)間,再啟動期間,為了增強(qiáng)應(yīng)用程序啟動時(shí)的用戶體驗(yàn),您應(yīng)該提供一個(gè)啟動圖像。啟動圖像與應(yīng)用程序的首屏幕看起來非常相似。當(dāng)用戶在主屏幕上點(diǎn)擊您的應(yīng)用程序圖標(biāo)時(shí),iPhone OS會立即顯示這個(gè)啟動圖像。一旦準(zhǔn)備就緒,您的應(yīng)用程序就會顯示它的首屏幕,來替換掉這個(gè)啟動占位圖像。一定要強(qiáng)調(diào)的是,之所以提供啟動圖像,是為了改善用戶體驗(yàn),并不是為了提供:應(yīng)用程序進(jìn)入體驗(yàn)」,比如啟動動畫。

啟動頁面在屏幕適配中的作用:每個(gè)機(jī)型,比如同時(shí)支持iPhone和iPad的程序,需要分別為iPhone跟iPad指定啟動圖片。當(dāng)舊的iPhone 4的程序,運(yùn)行在iPhone 5上面,沒有iPhone 5的啟動圖片,就采用兼容模式,上下留黑邊。當(dāng)為iPhone 5指定了新的啟動圖片,系統(tǒng)就認(rèn)為這個(gè)應(yīng)用程序是已經(jīng)適配了iPhone 5的。當(dāng)舊的iPhone 5程序運(yùn)行在iPhone 6上面,假如沒有經(jīng)過適配。舊程序自動等比放大,鋪滿新手機(jī),舊程序也可以正常運(yùn)行。這種方案可算是自動適配。但因?yàn)榕f程序拉伸了,整體看起來有點(diǎn)虛,也不能更好利用大屏空間。當(dāng)需要開發(fā)者手動適配的時(shí)候,跟iPhone 4過渡到iPhone 5一樣,在新程序中,指定一張新的啟動圖片。當(dāng)指定了啟動圖,系統(tǒng)就認(rèn)為應(yīng)用已經(jīng)做好了屏幕適配,屏幕分辨率就變成應(yīng)有的大小。在某機(jī)型上,如果是自動適配,比如iPhone 5,老版程序就會在屏幕上、下倆端多出倆塊黑條;比如iPhone6/6plus,老版程序就會自動等比拉伸。那如何關(guān)閉自動適配?指定啟動圖或者使用Launch Screen File.xib,即程序使用手動適配,不會做拉伸等,但是程序內(nèi)部必須已做處理,否則使用自動適配方案。  Embedded Binaries(綁定二進(jìn)制文件):用來連接二進(jìn)制文件,一般在使用第三方SDK的時(shí)候使用。  Linked Frameworks and Libraries(鏈接的框架和庫):選擇要鏈接的框架和庫,既可以是SDK自帶的框架,也可以是第三方框架,在Build Phases中也有類似的功能選項(xiàng)。

詳解iOS Project和Targets配置

2.2.1 target的info屬性設(shè)置

target的info屬性設(shè)置界面如下圖所示,主要分為五個(gè)部分,下面我們隊(duì)每一部分的設(shè)置的意思進(jìn)行一個(gè)解讀。

詳解iOS Project和Targets配置

在這一部分,最重要的就是第一部分Custom iOS Target Properties自定義iOS目標(biāo)屬性,其他的四個(gè)部分基本上都不怎么用,大家不用管就好了。在target的info選項(xiàng)卡中的五項(xiàng)信息與我們項(xiàng)目資源目錄下的info.plist文件中的內(nèi)容是一致,并且修改其中一個(gè)另一個(gè)會自動修改。此外,我們在2.2.1中講到的general選項(xiàng)卡中的一些設(shè)置也會對應(yīng)到info.plist文件中,所以這些內(nèi)容都是相通的,我們修改一處,其他的地方會同步次修改。info.plist中其實(shí)加載的信息會非常多,上面是創(chuàng)建項(xiàng)目之后自動生成的一些最基本的設(shè)置選項(xiàng),每一項(xiàng)對應(yīng)的意思如下解釋:

Localization native development region : 與本地化設(shè)置有關(guān),為默認(rèn)的開發(fā)語言 Executable file:程序安裝包的名稱 Bundle identifier:軟件唯一的標(biāo)識,是根據(jù)公司的標(biāo)識與項(xiàng)目名稱自動生成的,在上傳和測試的時(shí)候會用到 InfoDictionary version:版本信息 Bundle name:App安裝后顯示的名稱 Bundle OS Type code:用來標(biāo)識軟件包類型 Bundle versions string, short:發(fā)布的版本字符串 Bundle creator OS Type code:創(chuàng)建者的標(biāo)識 Bundle version:應(yīng)用程序版本號 Application requires iPhone environment:用于指示程序包是否只能運(yùn)行在iPhone OS 系統(tǒng)上,默認(rèn)為YES Launch screen interface file base name:歡迎界面的文件名稱 Main storyboard file base name:默認(rèn)情況下程序的主入口 Supported interface orientations:設(shè)置程序默認(rèn)支持的方向

除此之外,我們在開發(fā)過程可能還需要添加一些其他的信息,包括一些權(quán)限的添加,網(wǎng)絡(luò)權(quán)限、定位權(quán)限、讀寫聯(lián)系人權(quán)限等等,應(yīng)用白名單的添加等都是在這里進(jìn)行配置的。關(guān)于info.plist的具體信息和內(nèi)容詳情參見:Xcode中的Info.plist字段列表詳解。

另外四部分的簡單解釋:

Document Types 文檔類型:定義了應(yīng)用程序所能識別的文檔類型,并且還可以定義在系統(tǒng)中顯示的該類型文檔的自定義圖標(biāo)。 Exported UTIs 導(dǎo)出的UTI:UTI Uniform Type Identifiers同一類型標(biāo)識符。 Imported UTIs 導(dǎo)入的UTI: URL Types URL類型:用來定義URL以便讓應(yīng)用程序理解應(yīng)用間交換的數(shù)據(jù)結(jié)構(gòu)。可用于:IOS喚醒其他程序,程序間相互調(diào)用。例如::在URLTypes中URLSchemes中組冊AAPP;在B程序中,openUrl:[NSURL urlWithString:@"AAPP:"];注意":"冒號,沒有冒號是不能成喚醒另一個(gè)程序的。其次如果參數(shù)中有“&”特殊字符穿,建議對參數(shù)進(jìn)行base64轉(zhuǎn)換。

2.2.3 target的capabilities屬性設(shè)置

target的capabilities屬性設(shè)置這一塊主要是一些性能設(shè)置開關(guān)選擇,例如推送通知、云存儲、游戲中心、后臺模式等,我們選擇需要的開關(guān)進(jìn)行打開或者關(guān)閉,這些相應(yīng)的狀態(tài)都會在info.plist中進(jìn)行修改。所以,同樣的,我們也可以在info.plist添加一些權(quán)限或性能開關(guān)之后,在target的capabilities中也會進(jìn)行相應(yīng)的修改的。具體的界面如下圖所示:

詳解iOS Project和Targets配置

2.2.4 target中的Resource Tag屬性設(shè)置

target中的Resource Tag選項(xiàng)卡主要是為項(xiàng)目中的資源進(jìn)行添加tag分類,方便我們對齊加載順序和加載時(shí)機(jī)進(jìn)行選擇和設(shè)置,即實(shí)現(xiàn)按需加載,在需要的時(shí)候才加載資源,屬性設(shè)置界面如下圖所示。這樣做的好處就是可以實(shí)現(xiàn)如下幾種資源加載形式:

初始資源的延遲加載:app有一些資源是主要功能要用到的,但在啟動時(shí)并不需要。將這些資源標(biāo)記為“初始需要”。操作系統(tǒng)在app啟動時(shí)會自動下載這些資源。例如,圖片編輯app有許多不常用的濾鏡。 app資源的延遲加載:app有一些只在特定情景下使用的資源,當(dāng)應(yīng)用可能要進(jìn)入這些場景時(shí),會請求這些資源。例如,在一個(gè)有很多關(guān)卡的游戲中,用戶只需要當(dāng)前關(guān)卡和下一關(guān)卡的資源。 不常用資源的遠(yuǎn)程存儲:app有一些很少使用的資源,當(dāng)需要這些資源時(shí)會去請求它們。例如,當(dāng)app第一次打開時(shí)會展示一個(gè)教程,而這個(gè)教程之后就可能不會在用到。app在第一次啟動時(shí)請求教程的資源,這之后只在需要展示教程或者添加了新功能才去請求該資源。應(yīng)用內(nèi)購買資源的遠(yuǎn)程存儲:app提供包含額外資源的應(yīng)用內(nèi)購買。app會在啟動完成后請求已購買模塊的資源。例如,用戶在一個(gè)鍵盤app內(nèi)購買了SuperGeeky表情包。應(yīng)用程序會在啟動完成后請求表情包的資源。第一次啟動時(shí)必需資源的加載:app有一些資源只在第一次啟動時(shí)需要,之后的啟動不再需要。例如,app有一個(gè)只在第一次啟動時(shí)展示的教程。

詳解iOS Project和Targets配置

關(guān)于Resource Tag和按需加載的詳情內(nèi)容和步驟參見下面兩篇文章:

On-Demand Resources Guide中文版(按需加載資源--上)

On-Demand Resources Guide中文版(按需加載資源--下)

2.2.5 target的build setting屬性設(shè)置

target的build setting選項(xiàng)卡的是最主要的一部分編譯選項(xiàng)設(shè)置,配置界面如下圖所示,界面只是截了一部分,完整的build settings共有20項(xiàng)配置內(nèi)容。從配置界面上看,每一項(xiàng)的配置都有四列,我們可以看到,從左至右的順序分別是:Resolved列、帶Target圖標(biāo)列、帶Project圖標(biāo)列、iOS Default列,每一列所代表的意義如下。

詳解iOS Project和Targets配置

Resolved列:最終確定的編譯方式,無法自己設(shè)定,其結(jié)果是根據(jù)其右邊三欄的選擇結(jié)果以及優(yōu)先級順序來確定最后編譯時(shí)采用的編譯方式。在圖的第二行選項(xiàng)卡中選擇combined選項(xiàng),可以直接地看到只有該欄的最后結(jié)果。帶Target圖標(biāo)列:target的build setting配置的編譯選項(xiàng),可自定義。其優(yōu)先級最高,一旦進(jìn)行設(shè)置,則最后的編譯方式以該欄的結(jié)果為準(zhǔn)。帶Project圖標(biāo)列:project的build setting配置的編譯選項(xiàng),可自定義,這一欄的結(jié)果與project中build setting選項(xiàng)卡中的結(jié)果是一致的,修改其中一個(gè)地方,另一處也會自動修改。其優(yōu)先級介于target和default之間,當(dāng)target沒有設(shè)置編譯選項(xiàng),而該欄進(jìn)行了設(shè)置時(shí),則最后的編譯方式以該欄為準(zhǔn)。 iOS Default列:在創(chuàng)建項(xiàng)目時(shí)系統(tǒng)自帶的默認(rèn)編譯選項(xiàng),無法修改。優(yōu)先級最低,只有當(dāng)其他兩欄都沒有設(shè)置選項(xiàng)時(shí),最后的編譯方式才會以該欄為準(zhǔn)。優(yōu)先級順序:帶Target圖標(biāo)列 >> 帶Project圖標(biāo)列 >> iOS Default列。

target的build setting選項(xiàng)卡中的每一行具體所代表的編譯詳情參見:Xcode 編譯選項(xiàng)詳解。

2.2.6 target的build phase屬性設(shè)置

target的build phase選項(xiàng)卡的的主要功能是配置編譯器在不同編譯階段的參數(shù),包括編譯所需的資源文件(包括代碼、配置以及各種資源文件),配置界面如下圖所示,主要包括四方面的內(nèi)容。

詳解iOS Project和Targets配置

Target Dependencies Target對象依賴階段:某些Target可能依賴某個(gè)Target輸出的值,這里設(shè)置依賴。依賴于其他target的輸出的時(shí)候,在編譯時(shí)系統(tǒng)會自動先編譯被依賴的target,得到輸出值,再編譯當(dāng)前target。對象依賴階段可以讓Xcode知道必須在當(dāng)前選擇的對象編譯之編譯的其它依賴對象(比如應(yīng)用擴(kuò)展、插件等等)。這個(gè)階段是無法被刪除的。 Compile Sources 源文件編譯階段: 是指將有哪些源代碼被編譯,可以通過紅框中的【+】【-】按鈕進(jìn)行添加或刪除資源來控制編譯的代碼文件。并且可以通過修改改階段的Compiler Flags(編譯器標(biāo)識)來為每個(gè)單獨(dú)文件設(shè)置其編譯器編織,比如優(yōu)化設(shè)置等等。 Link Binary With Libraries 鏈接二進(jìn)制庫階段:是指編譯過程中會引用哪些庫文件,我們同樣可以通過【+】【-】按鈕進(jìn)行添加或刪除編譯所引用的庫文件。 Copy  Bundle Resources 復(fù)制資源文件階段:是指生成的product的.app內(nèi)將包含哪些資源文件,同樣可以通過紅框中的【+】【-】按鈕進(jìn)行添加或刪除資源來控制編譯的資源文件。該階段定義了對象中的資源文件,包括應(yīng)用程序、圖標(biāo)、界面構(gòu)造器、視頻、模板等等。這些資源都會被復(fù)制到安裝包的Contents/Resources文件夾下。

2.2.7 target的build rules屬性設(shè)置

關(guān)于target的build rules這一塊平時(shí)沒有接觸過,也沒有進(jìn)行相關(guān)的設(shè)置,網(wǎng)上查詢了半天的資料也沒有找到(囧),如果大家有相關(guān)的資料,麻煩評論里留一下,我可以補(bǔ)充上來。


分享標(biāo)題:詳解iOSProject和Targets配置
文章起源:http://weahome.cn/article/jeipoo.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部