Xcode的一些配置

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

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容