打包的到底經(jīng)歷了哪些過程?
1寫入輔助文件。
2運(yùn)行預(yù)設(shè)腳本
3編譯文件
4鏈接文件
5拷貝資源文件
6編譯故事版(StoryBoard)
7鏈接故事版
8編譯Asset文件
9運(yùn)行CocoaPods
10生成最新的.app包
11將Swift標(biāo)準(zhǔn)庫拷貝到.app里
12簽名
13完成打包
寫入輔助文件
將項(xiàng)目里面的腳本、依賴庫加入在這一步驟創(chuàng)建的一個.app文件里

運(yùn)行預(yù)設(shè)腳本
在Build Phases里面能見到的三方庫以及CocoaPods里所包含的庫
編譯文件
生成Mach-o可執(zhí)行文件
鏈接文件
將所有Mach-o文件合并成一個文件
拷貝資源文件
將資源文件拷貝到.app里
編譯故事板文件
鏈接故事板文件

編譯Asset文件
如:asset存放的圖片資源文件,除開app的icon和啟動圖,形成機(jī)器碼
運(yùn)行CocoaPods
生成包含以上資源的.app文件
拷貝Swift標(biāo)準(zhǔn)庫到.app里
簽名
將.app文件簽名
打包完成
蘋果(C/C++/OC)編譯器經(jīng)歷的過程,有幾部分組成?
編譯器
將一種編程語言,即原始語言(OC)轉(zhuǎn)換為另一種編程語言(機(jī)器碼)的過程
編譯器組成部分——前端和后端
1.前端的分析工具有GCC、Clang。主要負(fù)責(zé)詞法分析、語法分析、生成中間代碼
2.后端,也就是LLVM。將前端生成的中間代碼作為輸入,通過LLVM生成機(jī)器碼
經(jīng)歷過程

蘋果公司在2007年后,將Clang替代了GCC,效率快了3倍,目的就是為了提升編譯器的編譯速度
經(jīng)歷了那幾個編譯過程?
預(yù)處理
Clang會預(yù)處理你的代碼,比如把宏嵌入到對應(yīng)的位置、刪除代碼里面的注釋
詞法分析
語法分析
經(jīng)過詞法分析、語法分析后,會生成一個抽象語法樹(AST)
靜態(tài)分析

在這一步會生成更接近機(jī)器碼的語言,即IR,它會把代碼錯誤、警告全部識別出來
生成中間代碼和優(yōu)化
這一步要做兩件事,第一件就是生成匯編語言;第二件就是將匯編語言轉(zhuǎn)換成機(jī)器碼,也就是我們通??吹降亩M(jìn)制文件.o文件。
鏈接
將前一步生成的.o文件,轉(zhuǎn)換成Mach-0可執(zhí)行文件文件
所以到這里你就會明白,其實(shí)當(dāng)你拿到一個項(xiàng)目點(diǎn)擊Run或者打包上傳AppStore,Archive的時候,它經(jīng)歷了文章最開始講的13個過程。而當(dāng)你Build項(xiàng)目的時候,并未有經(jīng)歷簽名和打包的2個步驟。