淺析XCode編譯過程

作為iOS開發,XCode一天編譯幾十上百遍是常事。cmd+B,兩指一按,嘩啦啦的就開始build了。但是,我們是否曾想過,這背后究竟做了哪些工作呢?工具會用是最基本的,但也要適當了解其原理。

build一瞥

模擬器build過程如圖。


process@2x.png

大致的過程是:

  • compile各個.m文件
  • copy靜態資源,包括img,string,font。
  • compile xib
  • compile storyboard
  • compile asset catalogs
  • process info.plist
  • link storyboards
  • run custom script
  • touch app
  • sign app
  • validate app(真機build有)

另外,如果工程有第三方依賴庫,首先會build依賴庫target,然后build主target。

QQ20170106-5@2x.png

build過程

clang compile
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -x objective-c -arch x86_64 -W -c path/main.m -o path/main.o
  • -x 表示編譯語言
  • -arch 表示編譯的架構
  • -W 各種編譯警告
  • -c 表示進行預處理,編譯,匯編過程
  • -o 輸出結果
copy靜態資源

copy圖片到app

/Applications/Xcode.app/Contents/Developer/usr/bin/copypng 
-compress -strip-PNG-text path/MaskView/MaskView/en.lproj/icons.png path/MaskView.app/en.lproj/icons.png

copy strings

builtin-copyStrings
compile xib

編譯xib,生成nib文件

/Applications/Xcode.app/Contents/Developer/usr/bin/ibtool
compile storyboard

編譯storyboard,生成.storyboardc文件,打開包內容,是nib+plist。

/Applications/Xcode.app/Contents/Developer/usr/bin/ibtool
compile asset catalogs

生成Asset.car文件。

/Applications/Xcode.app/Contents/Developer/usr/bin/actool
process info.plist

處理info.plist

builtin-infoPlistUtility
link storyboards

鏈接storyboard

/Applications/Xcode.app/Contents/Developer/usr/bin/ibtool
run custom script

執行腳本

/bin/sh
touch app
/usr/bin/touch
sign app

對app進行簽名

/usr/bin/codesign
validate app

校驗app

builtin-validationUtility
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • App Programming Guide for iOS翻譯 https://developer.apple.c...
    鋼鉄俠閱讀 1,123評論 0 1
  • 我記得,《盜夢空間》最火的時候,我不知道看了幾遍開頭的五分鐘,依然無法繼續下去。明明知道很好看,明明是我的菜,明明...
    春少邪閱讀 254評論 7 3
  • 小C是個性格直爽的姑娘,大大咧咧毫不掩飾,算是個性情中人。平時雖很少見面,但彼此一開話匣子就停不下來。有次跟她聊天...
    白日夢小姐Missy閱讀 1,524評論 0 0
  • 童年記憶大約是從幼兒園開始的,農村的幼兒園只有一年。記得自己上幼兒園已經很懂事了,現在的孩子怎么這么幼稚呢。 幼兒...
    尹煥閱讀 422評論 2 0
  • 從來沒有一條像它一樣的狗——至少我是這么認為。 ? 它最后的日子,依然很乖,爸爸像往常一樣,帶著它出門去接媽媽,雖...
    Grace貓小姐的世界閱讀 570評論 1 0