粗談Xcode build setting 和build phaese

相信很多人寫iOS項(xiàng)目僅僅是按照默認(rèn)醒目生成的配置去寫代碼,沒有去深究過哪些編譯配置是什么涮拗。這里來介紹總結(jié)一下一些相關(guān)的配置選項(xiàng),還有我近來工作的碰到的一些問題,以及最后的解決。

build setting :

顧名思義三热,這是項(xiàng)目編譯前的一些配置鼓择。說道項(xiàng)目的編譯過程,大家都知道是將源文件(.c , .m等)通過編譯轉(zhuǎn)化為目標(biāo)文件(.o)就漾,再通過鏈接器將.o文件轉(zhuǎn)化為可執(zhí)行文件呐能。鏈接的過程就是把醒目里的一些引用庫 連進(jìn)來。有點(diǎn)扯遠(yuǎn)了抑堡。摆出。。 ?言歸正傳首妖,這個(gè)欄目里的設(shè)置很多偎漫,就說說一些常見的吧。

Architecture:

Valid Architecture:意思是項(xiàng)目所支持的手機(jī)的CPU架構(gòu)有缆,目前常用的也就是arm64象踊,armv7,armv7s妒貌。

armv7設(shè)備 : iPhone 4, iPhone 4S

armv7s設(shè)備:iPhone 5通危,iPhone 5s, iPhone 5c

arm64設(shè)備:iPhone 5s iPhone 6 iPhone 6s ,iPhone 6p iPhone 7,iPhone 7p

build options:

Enable Bitcode:bitcode是被編譯程序的一種中間形式的代碼灌曙。包含bitcode配置的程序?qū)贏pp store上被編譯和鏈接。bitcode允許蘋果在后期重新優(yōu)化程序的二進(jìn)制文件节芥,而不需要重新提交一個(gè)新的版本到App store上在刺。這一項(xiàng)是與ipa包有關(guān)系,具體不會影響到性能头镊,但是有的第三方是不支持這一項(xiàng)的蚣驼,例如 大家熟知的JSONKit 所以需要把這個(gè)默認(rèn)的yes改為no。

Enable Testbility:這是單元測試有關(guān)選項(xiàng)相艇,項(xiàng)目里如果沒有單元測試 就關(guān)了吧颖杏。之前先項(xiàng)目里轉(zhuǎn)到(iOS 10 xcode 8)有個(gè)問題,不知道有沒有使用face++做活體和人臉識別的坛芽,這個(gè)選項(xiàng)如果是yes會報(bào)編譯錯(cuò)誤留储,但是(iOS 9,xcode 7)沒有問題咙轩。原因我也不曉得了获讳。。活喊。如果有人知道的話丐膝,歡迎留言。

Linking :

Other Link Flags :這是XCode的鏈接器參數(shù),有-ObjC 帅矗,-all_load偎肃, -force_load等取值。

-ObjC:是將項(xiàng)目里的OC類和分類在最后鏈接到可執(zhí)行文件中

-all_load:是項(xiàng)目的將所有都鏈接到可執(zhí)行文件中浑此,哪怕是一個(gè)txt文件软棺。。尤勋。

-force_load:所做的事情跟-all_load其實(shí)是一樣的喘落,但是-force_load需要指定要進(jìn)行全部加載的庫文件的路徑,這樣的話最冰,你就只是完全加載了一個(gè)庫文件瘦棋,不影響其余庫文件的按需加載。

默認(rèn)是只加載 OC 類文件暖哨,這個(gè)在寫項(xiàng)目時(shí)沒什么影響赌朋,但當(dāng)你寫的是.a或者framwork的時(shí)候。不加-ObjC或者-all_load篇裁,而.a中又有 分類的話 就會報(bào)錯(cuò),因?yàn)檫@個(gè)分類并不會被編譯到.a中沛慢。

Signing:

code sign identity:證書的描述文件,開發(fā)用開發(fā)的达布。打包的時(shí)候用企業(yè)的团甲。

development Team:證書所屬的單位。

Prefix header: pch文件黍聂。這個(gè)不用多講了吧躺苦。。产还。

Search Path:

User header search paths 和header search path:Library / Header Search Paths是一定會去搜索的匹厘。而User Header Search Paths只有在Always Search User Paths為Yes時(shí)才會被搜索。編碼時(shí)候通過 #include 引入頭文件的方式有兩種 <> 和 ""脐区。<> 是只從 Header Search Paths 中搜索愈诚, 而 "" 則能從? Header Search Paths 和 User Header Search Paths 中搜索。換言之 牛隅,假如你把 路徑加到? User Header Search Paths 中炕柔,那么 你用 #include的方式去引入對應(yīng)的頭文件,就會報(bào)錯(cuò)倔叼。 如果加到? Header Search Paths,? 就沒有問題了汗唱。

$(SRCROOT) 這個(gè)是 當(dāng)前工程的意思,添加的項(xiàng)目前需要加$(SRCROOT)/... ? 當(dāng)然 項(xiàng)目默認(rèn)是從項(xiàng)目路徑下查找丈攒,但是項(xiàng)目里有多個(gè)target的時(shí)候哩罪,這個(gè)地方就是設(shè)置的關(guān)鍵了授霸。

-------------------------------------------華麗的分割線-------------------------------------------

build phaese :

build phaese選項(xiàng)卡

Target Dependencies?:就是項(xiàng)目中有多個(gè) target ,而當(dāng)前的target 需要依賴其他的target,這些target 最后的product是 .a活著framwork际插。

Compile Sources :

1.是項(xiàng)目里要編譯的.m文件碘耳,這里有個(gè)細(xì)節(jié):當(dāng)編譯.a文件的時(shí)候可以從這里把你不想編譯到.a的文件去掉,但是在原來的.a項(xiàng)目里不會出現(xiàn)編譯錯(cuò)誤框弛。當(dāng)把.a導(dǎo)入其他項(xiàng)目調(diào)用時(shí) 辛辨,會報(bào)錯(cuò)誤,說那個(gè)你去掉的文件例如a.o文件不存在瑟枫,這說明沒有編譯進(jìn)去斗搞。如果你的項(xiàng)目里有a.m就不會報(bào)錯(cuò)啦。
這個(gè)用處就是:給別的項(xiàng)目打包.a的時(shí)候很容易出現(xiàn)文件沖突慷妙,因?yàn)楦鞣N泛濫的第三方僻焚。。膝擂。像afn虑啤,sdwebimage等,這時(shí)就可以通過去掉.a里對應(yīng)的文件架馋,前提是 你們使用的版本不要有太大的區(qū)別狞山。當(dāng)然啦,最好不要再.a文件中引用第三方啦叉寂,或者 自己去把類名修改成全世界都不會重復(fù)的一份萍启,哈哈哈 至少是用的人不會重復(fù)。那我就順便把一個(gè)可以統(tǒng)一修改類名的方法的鏈接貼出來 .

2. 有的是用MRC寫的第三方庫例如 JSONKit办绝,需要在后邊的 compile flags加上-fno-objc-arc表示不啟用ARC伊约。

Link Binary With Libraries: ? 這里是項(xiàng)目用到的第三方類庫和系統(tǒng)類庫。沒啥可說的了

Copy Bundle Resources:這是項(xiàng)目用的資源文件孕蝉。



下期預(yù)告 把我設(shè)計(jì)sdk的過程和心得敘述一下,多閱讀好的源碼腌逢,才會有更快的進(jìn)步降淮。







最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市搏讶,隨后出現(xiàn)的幾起案子佳鳖,更是在濱河造成了極大的恐慌,老刑警劉巖媒惕,帶你破解...
    沈念sama閱讀 217,542評論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件系吩,死亡現(xiàn)場離奇詭異,居然都是意外死亡妒蔚,警方通過查閱死者的電腦和手機(jī)穿挨,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,822評論 3 394
  • 文/潘曉璐 我一進(jìn)店門月弛,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人科盛,你說我怎么就攤上這事帽衙。” “怎么了贞绵?”我有些...
    開封第一講書人閱讀 163,912評論 0 354
  • 文/不壞的土叔 我叫張陵厉萝,是天一觀的道長。 經(jīng)常有香客問我榨崩,道長谴垫,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,449評論 1 293
  • 正文 為了忘掉前任母蛛,我火速辦了婚禮翩剪,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘溯祸。我一直安慰自己肢专,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,500評論 6 392
  • 文/花漫 我一把揭開白布焦辅。 她就那樣靜靜地躺著博杖,像睡著了一般。 火紅的嫁衣襯著肌膚如雪筷登。 梳的紋絲不亂的頭發(fā)上剃根,一...
    開封第一講書人閱讀 51,370評論 1 302
  • 那天,我揣著相機(jī)與錄音前方,去河邊找鬼狈醉。 笑死,一個(gè)胖子當(dāng)著我的面吹牛惠险,可吹牛的內(nèi)容都是我干的苗傅。 我是一名探鬼主播,決...
    沈念sama閱讀 40,193評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼班巩,長吁一口氣:“原來是場噩夢啊……” “哼渣慕!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起抱慌,我...
    開封第一講書人閱讀 39,074評論 0 276
  • 序言:老撾萬榮一對情侶失蹤逊桦,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后抑进,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體强经,經(jīng)...
    沈念sama閱讀 45,505評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,722評論 3 335
  • 正文 我和宋清朗相戀三年寺渗,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了匿情。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片兰迫。...
    茶點(diǎn)故事閱讀 39,841評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖码秉,靈堂內(nèi)的尸體忽然破棺而出逮矛,到底是詐尸還是另有隱情,我是刑警寧澤转砖,帶...
    沈念sama閱讀 35,569評論 5 345
  • 正文 年R本政府宣布须鼎,位于F島的核電站,受9級特大地震影響府蔗,放射性物質(zhì)發(fā)生泄漏晋控。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,168評論 3 328
  • 文/蒙蒙 一姓赤、第九天 我趴在偏房一處隱蔽的房頂上張望赡译。 院中可真熱鬧,春花似錦不铆、人聲如沸蝌焚。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,783評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽只洒。三九已至,卻和暖如春劳坑,著一層夾襖步出監(jiān)牢的瞬間毕谴,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,918評論 1 269
  • 我被黑心中介騙來泰國打工距芬, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留涝开,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,962評論 2 370
  • 正文 我出身青樓框仔,卻偏偏與公主長得像舀武,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子离斩,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,781評論 2 354

推薦閱讀更多精彩內(nèi)容

  • 僅以方便自己查閱記錄前言1.靜態(tài)庫和動態(tài)庫有什么異同奕剃?靜態(tài)庫:鏈接時(shí)完整地拷貝至可執(zhí)行文件中,被多次使用就有多份冗...
    190CM閱讀 4,209評論 0 4
  • 靜態(tài)庫與動態(tài)庫的區(qū)別 首先來看什么是庫柿顶,庫(Library)說白了就是一段編譯好的二進(jìn)制代碼茄袖,加上頭文件就可以供別...
    吃瓜群眾呀閱讀 11,938評論 3 42
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn)嘁锯,斷路器宪祥,智...
    卡卡羅2017閱讀 134,656評論 18 139
  • 讀詩 讀詩 你看到的是一個(gè)個(gè)雋美方塊 我看到的是方塊間隙半躲半露饑餓的掙扎的靈魂 垂吊在藍(lán)色網(wǎng)線的另一頭 用比特的...
    舒己懷_Frank閱讀 759評論 30 39
  • 何謂傻子?在我看來耀找,傻子與弱智翔悠、腦殘不同,他們身上有著兩種極端的性格特征野芒,一方面他們知識淺薄蓄愁,閱歷不深,還未形成扎...
    顏牧之閱讀 3,187評論 15 24