summer的ios小记iOS Developer

浅析XCode编译过程

2017-01-09  本文已影响2659人  微微笑的蜗牛

作为iOS开发,XCode一天编译几十上百遍是常事。cmd+B,两指一按,哗啦啦的就开始build了。但是,我们是否曾想过,这背后究竟做了哪些工作呢?工具会用是最基本的,但也要适当了解其原理。

build一瞥

模拟器build过程如图。


process@2x.png

大致的过程是:

另外,如果工程有第三方依赖库,首先会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
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
上一篇 下一篇

猜你喜欢

热点阅读