xcode 配置心得

xcode 配置文件*.xcconfig

Configuration Settings File文件,后綴名為*.xcconfig

可以設(shè)定多個環(huán)境自匹配debug模式和release模式解孙,eg: debug.xcconfig release.xcconofig


如何新增變量:

在*.xxconfig文件中添加:GCC_PREPROCESSOR_DEFINITIONS = $(inherited) DEBUG=1 COCOAPODS=1 PRODUCT_WALLET=1 MARK_POINT_INFO=@\"46000221\"

指令集Architectures 配置

處理器:中央處理器

程序編譯后,要調(diào)用處理器能識別的指令來完成我們設(shè)定程序要做的任務(wù)裆泳。這些指令必須是處理器能夠識別并能夠執(zhí)行的。這就引出了兩個元素懦趋,處理器和處理器對應(yīng)的指令集合。比如 ARM 處理器 疹味,指令集合比如 arm7 , arm7s, arm64等等仅叫。

真機(jī)指令集:


模擬器指令集


Architectures:

包含的指令集

Excluded Architectures

xcode 12 新增功能,要排除掉的指令集糙捺,一般模擬器中去掉 arm指令集 可以在*.xcconfig中設(shè)定:EXCLUDED_ARCHS[sdk=iphonesimulator*] = arm64

Other Linker Flags

ios工程的編譯過程:源代碼 > 預(yù)處理器 > 編譯器 > 匯編器 > 機(jī)器碼 > 鏈接器 > 可執(zhí)行文件

問題:Objective-C的鏈接器并不會為每個方法建立符號表诫咱,而是僅僅為類建立了符號表。這樣的話洪灯,如果靜態(tài)庫中定義了已存在的一個類的分類坎缭,鏈接器就會以為這個類已經(jīng)存在,不會把分類和核心類的代碼合起來签钩。這樣的話掏呼,在最后的可執(zhí)行文件中,就會缺少分類里的代碼铅檩,這樣函數(shù)調(diào)用就失敗了憎夷。

解決方法:other linker flags添加

-ObjC 鏈接器就會把靜態(tài)庫中所有的Objective-C類和分類都加載到最后的可執(zhí)行文件中

-all_load或者-force_load :如果文件只有分類,沒有類昧旨,-ObjC不起作用拾给,此時使用-all_load(不常用,如果有兩個類同名可能會有duplicate symbol錯誤)

Debug Information Format

xcode 配置文件 Build Settings -> Build Options -> Debug Information Format? 中設(shè)置

DWARF:不會產(chǎn)生dSYM符號表文件

DWARF with dSYM File會產(chǎn)生dSYM符號表文件

$(inherited)

一般用于配置Frameworker Search Paths兔沃,Header Search Paths等蒋得,$(inherited) 代表Target中的配置繼承上面project默認(rèn)的配置

Podfile文件配置

ios中 .h文件即頭文件,無論是framework(動態(tài)庫)方式還是.a(靜態(tài)庫)方式乒疏,都會有頭文件

使用use_frameworks!

使用cocoapods管理項目時额衙,Podfile文件中聲明use_frameworks! 表示使用第三方庫導(dǎo)入工程會使用framework方式,一般swift工程或者混合工程使用



工程中導(dǎo)入類方式: #import "<XXX/XXX.h>"

不使用use_frameworks!

工程中導(dǎo)入第三方庫會使用xxxlib.a方式



工程中導(dǎo)入類方式: #import "XXX.h"

原因分析:

xcode制作動態(tài)庫和靜態(tài)庫


xcode早期常用.a靜態(tài)庫方式怕吴,必須要配置 Header Search Path頭文件入偷,頭文件配合,a文件使用,而且在鏈接時會copy .a靜態(tài)庫代碼到app的可執(zhí)行文件中械哟,而且隨著.a文件被使用次數(shù)的增加疏之,整個app提交也會增加,制作靜態(tài)庫時暇咆,Mach-O Type選擇 Static Library

后面xcode推出了framework方式锋爪,framework可以制作動態(tài)庫丙曙,也可以制作靜態(tài)庫,區(qū)別在于Mach-O Type的設(shè)置其骄,經(jīng)過實驗發(fā)現(xiàn)亏镰,無論是靜態(tài)庫還是動態(tài)庫,xcode相當(dāng)于進(jìn)行了簡化:

1)使用framework方式的庫包拯爽,可以不用設(shè)置Header Search Path頭文件索抓,但是必須指定framework search path

2)使用framework打的靜態(tài)包(Mach-O Type配置成 Static Library)可以指定Embed 也可以指定 do not Embed(代表framwork嵌入到app可執(zhí)行代碼中)

3)使用framework打的動態(tài)包,必須是 embed(代表framwork嵌入到app資源包中毯炮,app運行使用的時候逼肯,動態(tài)鏈接)

4)和.a文件不同的是,由于沒有配置頭文件桃煎,在使用的時候需要指定framwork 例如? #import "<XXX/XXX.h>"


cocoapods 和carthage區(qū)別:

carthage導(dǎo)入framework篮幢,swift項目的包管理,只編譯一次

cocoapods每次都會編譯

http://www.cloudchou.com/ios/post-990.html

xcode多工程聯(lián)編

1)使用xxx.xcworkspace只是多個xxx.xcodeproj的捆綁为迈,并沒有其他設(shè)置

2)xcode有個很有趣的特性三椿,至今未搞懂:(多個子工程聯(lián)編的時,主工程會自動編譯子工程)


test1為主工程葫辐,test2為子工程搜锰,test2一般是我們創(chuàng)建的 framwork sdk,在test1的xcode配置中引入test2.framwork后耿战,如果test.framwork對應(yīng)的工程源碼和test1在同一個xcworkspace下纽乱,編譯主工程時,會自動聯(lián)編譯test2子工程昆箕,也就是test2可以斷點調(diào)試鸦列,這也是為什么pods的工程每次都是重新編譯三方庫,而carthage不會鹏倘,carthage沒有中央管理的概念薯嗤,引入每個三方庫都只是是引入三方庫自己的framwork而且沒有引入源碼

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市纤泵,隨后出現(xiàn)的幾起案子骆姐,更是在濱河造成了極大的恐慌,老刑警劉巖捏题,帶你破解...
    沈念sama閱讀 216,591評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件玻褪,死亡現(xiàn)場離奇詭異,居然都是意外死亡公荧,警方通過查閱死者的電腦和手機(jī)带射,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,448評論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來循狰,“玉大人窟社,你說我怎么就攤上這事券勺。” “怎么了灿里?”我有些...
    開封第一講書人閱讀 162,823評論 0 353
  • 文/不壞的土叔 我叫張陵关炼,是天一觀的道長。 經(jīng)常有香客問我匣吊,道長儒拂,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,204評論 1 292
  • 正文 為了忘掉前任色鸳,我火速辦了婚禮社痛,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘缕碎。我一直安慰自己褥影,他們只是感情好池户,可當(dāng)我...
    茶點故事閱讀 67,228評論 6 388
  • 文/花漫 我一把揭開白布咏雌。 她就那樣靜靜地躺著,像睡著了一般校焦。 火紅的嫁衣襯著肌膚如雪赊抖。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,190評論 1 299
  • 那天寨典,我揣著相機(jī)與錄音氛雪,去河邊找鬼。 笑死耸成,一個胖子當(dāng)著我的面吹牛报亩,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播井氢,決...
    沈念sama閱讀 40,078評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼弦追,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了花竞?” 一聲冷哼從身側(cè)響起劲件,我...
    開封第一講書人閱讀 38,923評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎约急,沒想到半個月后零远,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,334評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡厌蔽,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,550評論 2 333
  • 正文 我和宋清朗相戀三年牵辣,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片奴饮。...
    茶點故事閱讀 39,727評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡服猪,死狀恐怖供填,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情罢猪,我是刑警寧澤近她,帶...
    沈念sama閱讀 35,428評論 5 343
  • 正文 年R本政府宣布,位于F島的核電站膳帕,受9級特大地震影響粘捎,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜危彩,卻給世界環(huán)境...
    茶點故事閱讀 41,022評論 3 326
  • 文/蒙蒙 一攒磨、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧汤徽,春花似錦娩缰、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,672評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至完疫,卻和暖如春泰鸡,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背壳鹤。 一陣腳步聲響...
    開封第一講書人閱讀 32,826評論 1 269
  • 我被黑心中介騙來泰國打工盛龄, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人芳誓。 一個月前我還...
    沈念sama閱讀 47,734評論 2 368
  • 正文 我出身青樓余舶,卻偏偏與公主長得像,于是被迫代替她去往敵國和親锹淌。 傳聞我的和親對象是個殘疾皇子匿值,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,619評論 2 354

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