前言
本节学习应用的构建过程,在工作和学习中构建过很多应用,很少去研究应用究竟是怎么从一行行代码变成安装包的。
构建步骤
App从代码到安装包.ipa经历的过程如下:
①. compile: 使用Clang编译源文件,生成目标文件。
②. link: 将编译生成的目标文件链接成一个可执行文件
③. storyboard: 编译项目中storyboard
④. plist: 生成plist文件,里面会指定应用的名字、BundleID等。
⑤. asset: 复制资源文件到APP目录下
⑥. dsym: 生成符号文件
⑦. codesign: 对APP进行签名。这个后面会单独学习签名和重签名。
⑧. package:打包,生成App文件夹放到payload文件夹下,并压缩成.ipa文件。
示例
使用Xcode创建一个项目,执行command + B命令。查看构建Log如下图:
我们接下来看看,构建过程都做了什么工作?
从上到下顺序分析,create product structure猜测是创建应用结构。点击后面的显示详情按键。
这里使用mkdir -p xxx命令,意思是在指定目录下创建xxx文件夹,这里创建xxx.app文件夹,不是文件。
接着下面可是编译ViewController.m,main.m,AppDelegate.m。这里编译的文件是Build Phases --> Compile Source中添加的文件。如果某个文件不需要编译,可以在该目录下移除。
查看编译Log详情,使用clang编译源文件。直接通过clang目录运行,也可以使用xcrun自动找到Clang的位置。-fobjc-arc参数指定有ARC编译。-fmodules参数会自动找到需要的系统库。还有很多参数,这里就不一一列举。
接下来是Link xxx将编译生成的目标文件链接成一个可执行文件。
之后编译storyboard,生成info.plist以及将asset目录复制到项目中。
生成dSYM符号文件,这个需要在release模式下。使用dsymutil命令。使用dwarfdump --uuid可以查DSYM或者可执行文件的UUID。
之后是对应应用进行签名,需要embedded.mobileprovision。entitlements.plist内容在Process product packaging详情中找到。
最后是打包操作,将生成的app文件夹放到Payload文件夹下,通过zip压缩成ipa文件。
以上就是应用的构建过程。
小结
本节整体学习应用的构建过程,还涉及到很多命令和参数,以后遇到在慢慢补充。














网友评论