浅析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
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • App Programming Guide for iOS翻译 https://developer.apple.c...
    鋼鉄侠阅读 4,906评论 0 1
  • 我记得,《盗梦空间》最火的时候,我不知道看了几遍开头的五分钟,依然无法继续下去。明明知道很好看,明明是我的菜,明明...
    春少邪阅读 1,828评论 7 3
  • 小C是个性格直爽的姑娘,大大咧咧毫不掩饰,算是个性情中人。平时虽很少见面,但彼此一开话匣子就停不下来。有次跟她聊天...
    白日梦小姐Missy阅读 5,468评论 0 0
  • 童年记忆大约是从幼儿园开始的,农村的幼儿园只有一年。记得自己上幼儿园已经很懂事了,现在的孩子怎么这么幼稚呢。 幼儿...
    尹焕阅读 3,304评论 2 0
  • 从来没有一条像它一样的狗——至少我是这么认为。  它最后的日子,依然很乖,爸爸像往常一样,带着它出门去接妈妈,虽...
    Grace猫小姐的世界阅读 3,725评论 1 0

友情链接更多精彩内容