打包的到底经历了哪些过程?
1写入辅助文件。
2运行预设脚本
3编译文件
4链接文件
5拷贝资源文件
6编译故事版(StoryBoard)
7链接故事版
8编译Asset文件
9运行CocoaPods
10生成最新的.app包
11将Swift标准库拷贝到.app里
12签名
13完成打包
写入辅助文件
将项目里面的脚本、依赖库加入在这一步骤创建的一个.app文件里
运行预设脚本
在Build Phases里面能见到的三方库以及CocoaPods里所包含的库
编译文件
生成Mach-o可执行文件
链接文件
将所有Mach-o文件合并成一个文件
拷贝资源文件
将资源文件拷贝到.app里
编译故事板文件
链接故事板文件
编译Asset文件
如:asset存放的图片资源文件,除开app的icon和启动图,形成机器码
运行CocoaPods
生成包含以上资源的.app文件
拷贝Swift标准库到.app里
签名
将.app文件签名
打包完成
苹果(C/C++/OC)编译器经历的过程,有几部分组成?
编译器
将一种编程语言,即原始语言(OC)转换为另一种编程语言(机器码)的过程
编译器组成部分——前端和后端
1.前端的分析工具有GCC、Clang。主要负责词法分析、语法分析、生成中间代码
2.后端,也就是LLVM。将前端生成的中间代码作为输入,通过LLVM生成机器码
经历过程
苹果公司在2007年后,将Clang替代了GCC,效率快了3倍,目的就是为了提升编译器的编译速度
经历了那几个编译过程?
预处理
Clang会预处理你的代码,比如把宏嵌入到对应的位置、删除代码里面的注释
词法分析
语法分析
经过词法分析、语法分析后,会生成一个抽象语法树(AST)
静态分析
在这一步会生成更接近机器码的语言,即IR,它会把代码错误、警告全部识别出来
生成中间代码和优化
这一步要做两件事,第一件就是生成汇编语言;第二件就是将汇编语言转换成机器码,也就是我们通常看到的二进制文件.o文件。
链接
将前一步生成的.o文件,转换成Mach-0可执行文件文件
所以到这里你就会明白,其实当你拿到一个项目点击Run或者打包上传AppStore,Archive的时候,它经历了文章最开始讲的13个过程。而当你Build项目的时候,并未有经历签名和打包的2个步骤。