Xcode的Build Settings常用字段:
一、Build Active architecture Only

Build Active architecture Only
1- 設(shè)置為YES
- 只生成XCode當前
所選設(shè)備架構(gòu)的包;
選擇模擬器:僅僅生成X86_64架構(gòu)的包;
選擇真機:
iPhone 4s:僅僅生成armv7的包;
iPhone 5s及以上:僅僅生成arm64的包;
- 如果設(shè)備選擇了
Generic iOS Device,進行Archive,無論選擇YES/NO,都會生成多種設(shè)備架構(gòu)的包;
2- 設(shè)置為NO
- 生成多種設(shè)備架構(gòu)的包;
目前為止Apple移動設(shè)備默認指令集:
armv6:iPhone2G/3G、iPod 1G/2G
armv7:iPhone 3GS/4/4s、iPod 3G/4G、iPad 1G/2G/3G、iPad mini
armv7s:iPhone5、iPhone5c、iPad4
arm64:iPhone5s及以后、iPad Air、iPad mini2
(Armv6、armv7、armv7s、arm64都是arm處理器的指令集,所有指令集原則上都是向下兼容的)
Debug設(shè)置為YES,Release設(shè)置為NO;
- 這個屬性設(shè)置為YES,是為了Debug的時候
編譯速度更快,它只編譯當前的architecture版本; - 設(shè)置為NO時,會編譯所有的版本;
ipa包支持的iOS版本:
- Xcode中Archive打的ipa包,設(shè)置最低支持iOS 11;低于iOS 11的手機不能安裝;
Archive打ipa包設(shè)置:

最低支持的版本
二、Other Linker Flags
- 用來填寫Xcode的
鏈接器參數(shù); - ios只為
已有的類生成鏈接器符號,以便于UNIX靜態(tài)庫鏈接器和objective - c的動態(tài)特性之間的關(guān)聯(lián); - 如果你在現(xiàn)有類的基礎(chǔ)上進行
多態(tài)擴展了,為了鏈接器能識別,需要添加對應的flag給擴展分類;
參數(shù)介紹:
1、-ObjC
- 作用:加入這個參數(shù),鏈接器就會把靜態(tài)庫中所有的OC的
類和分類都加載到最后的可執(zhí)行文件中; - 和OC的類別(category)有關(guān);
- Unix的標準靜態(tài)庫實現(xiàn)和OC的動態(tài)特性之間有一些沖突:OC
沒有為每個函數(shù)定義鏈接符號,它只為每個類創(chuàng)建鏈接符號。 - 當在一個靜態(tài)庫中使用
類別來擴展已有類的時候,鏈接器不知道如何把類原有的方法和類別中的方法整合起來,就會導致你調(diào)用類別中的方法時,出現(xiàn)selectornotrecognized,找不到方法定義的錯誤。為了解決這個問題,引入了-ObjC標志,作用:將靜態(tài)庫中所有的和對象相關(guān)的文件都加載進來。
2、-all_load
- 作用:讓鏈接器把
所有找到的目標文件,都加載到可執(zhí)行文件中; - 但
不要隨便使用這個參數(shù); - 如果使用多個靜態(tài)庫文件,不同庫文件中,含有
相同的目標文件;項目中設(shè)置了-all_load參數(shù),則會報錯ld:duplicatesymbol; - 建議:在遇到-ObjC失效的情況下,使用
-force_load參數(shù);
3、-force_load
- 作用:做的事情跟
-all_load差不多,區(qū)別:是加載文件是指定路徑的; - 需要
指定要進行全部加載的庫文件的路徑,完全加載一個庫文件,其余庫文件按需加載;
4、$(inherited)
- 字面意思:繼承;
- 作用:繼承自更高一級的配置,由高到低配置:Basic的Project中的配置->此處的Target的配置->具體的Debug、Release的配置;
5、-l"c++"
- libstdc++:提供了一個一致且高效的
c++標準庫,一致意味著兼容性更好,高效意味著速度快,是LLVM項目重新編寫,lc++替代了libstdc++; -
lc++作用:以libc++的標準去為添加進來的c++文件進行定性分類;
lc++
6、-fobjc-arc
- 在
ARC機制的項目下使用MRC機制的文件,需要設(shè)置對應文件的Compiler Flags:-fno-objc-arc。 - 在
MRC機制的項目下使用ARC機制的文件,需要設(shè)置對應文件的Compiler Flags:-fobjc-arc。
-fobjc-arc
三、確定是否使用ARC?
-
Objective-C Automatic Reference Counting
ARC
四、Enable Bitcode
設(shè)置為YES:
- 應用被編譯成一種
中間形式的代碼; - 包含
bitcode配置的程序,將會在Appstore上被編譯和鏈接; - Enable Bitcode:允許蘋果在后期重新優(yōu)化程序的
二進制文件,而不需要重新提交一個新的版本到Appstore上;
注意:如果引入的第三方庫不支持Bitcode,需要把項目的Bitcode的設(shè)置改為NO;

bitcode


