前言
__attribute__
Clang警告处理
预处理
插入编译期脚本
提高项目编译速度
LVVM优化器会进行BitCode的生成,链接期优化等等。
LLVM机器码生成器会针对不同的架构,比如arm64等生成不同的机器码。
编译信息写入辅助文件,创建编译后的文件架构(name.app)
处理文件打包信息,例如在debug环境下
执行CocoaPod编译前脚本
例如对于使用CocoaPod的工程会执行CheckPods Manifest.lock
编译各个.m文件,使用CompileC和clang命令。
链接需要的Framework,例如Foundation.framework,AFNetworking.framework,ALiPay.fframework
编译xib文件
拷贝xib,图片等资源文件到结果目录
编译ImageAssets
处理info.plist
执行CocoaPod脚本
拷贝Swift标准库
创建.app文件和对其签名
右键ipa,重命名为.zip
右键图中的WeChat,选择显示包内容,然后就能够看到实际的ipa包内容了。
__TEXT 代码段
__DATA 数据段
右键 -> 在finder中显示。
右键 -> 查看包内容。
对当前编译环境进行压栈
忽略-Wundeclared-selector(未声明的)Selector警告
编译代码
对编译环境进行出栈
Check Pods Manifest.lock,用来检查cocoapod管理的三方库是否需要更新
Embed Pods Framework,运行脚本来链接三方库的静态/动态库
Copy Pods Resources,运行脚本来拷贝三方库的资源文件
Xcode - 选中Target - 选中build phase
选择添加Run Script Phase
然后把这段脚本拷贝进去,并且勾选Run Script Only When installing,保证只有我们在安装到设备上的时候,才会执行这段脚本。重命名脚本的名字为Auto Increase build number
然后,拖动这个脚本的到Link Binary With Libraries下面
Debug开启Build Active Architecture Only
写入额外的编译信息
函数的调用过程和运行时找到函数在二进制文件中的的地址
……
网友评论