美文网首页
iOS 编译过程的原理和应用

iOS 编译过程的原理和应用

作者: 阿灿V587 | 来源:发表于2018-12-20 09:15 被阅读64次

前言

__attribute__

Clang警告处理

预处理

插入编译期脚本

提高项目编译速度

iOS编译

编译器前端

编译器后端

LVVM优化器会进行BitCode的生成,链接期优化等等。

LLVM机器码生成器会针对不同的架构,比如arm64等生成不同的机器码。

执行一次XCode build的流程

编译信息写入辅助文件,创建编译后的文件架构(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包的内容

右键ipa,重命名为.zip

右键图中的WeChat,选择显示包内容,然后就能够看到实际的ipa包内容了。

二进制文件的内容

Object files

Sections

__TEXT 代码段

__DATA 数据段 

Symbols

dSYM 文件

右键 -> 在finder中显示。

右键 -> 查看包内容。

iOS 如何调试第三方统计到的崩溃报告

那些你想到和想不到的应用场景

__attribute__

Clang警告处理

对当前编译环境进行压栈

忽略-Wundeclared-selector(未声明的)Selector警告

编译代码

对编译环境进行出栈

iOS 合理利用Clang警告来提高代码质量

预处理

插入脚本

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下面

脚本编译打包

提高项目编译速度

查看编译时间

forward declaration

对常用的工具类进行打包(Framework/.a)

常用头文件放到预编译文件里

Debug模式下,不生成dsym文件

Debug开启Build Active Architecture Only

Debug模式下,关闭编译器优化

后续

写入额外的编译信息

函数的调用过程和运行时找到函数在二进制文件中的的地址

……

附录

相关文章

  • 深入浅出iOS编译

    前言 两年前曾经写过一篇关于编译的文章《iOS编译过程的原理和应用》,这篇文章介绍了iOS编译相关基础知识和简单应...

  • iOS编译过程的原理和应用

    1. iOS编译过程的原理和应用2. iOS 合理利用Clang警告来提高代码质量3.iOS 如何调试第三方统计到...

  • iOS编译过程的原理和应用

    1.OC:Clang编译器编译OC代码一般用这个命令-rewrite-objc来看底层源码的逻辑 深入剖析 iOS...

  • iOS 编译过程的原理和应用

    来源:黄文臣 前言 一般可以将编程语言分为两种,编译语言和直译式语言。像C++,Objective C都是编译语言...

  • iOS编译过程的原理和应用

    前言 一般可以将编程语言分为两种,编译语言和直译式语言。像C++,Objective C都是编译语言。编译语言在执...

  • iOS编译过程的原理和应用

    前言 一般可以将编程语言分为两种,编译语言和直译式语言。 像C++,Objective C都是编译语言。编译语言在...

  • iOS 编译过程的原理和应用

    前言 __attribute__ Clang警告处理 预处理 插入编译期脚本 提高项目编译速度 iOS编译 编译器...

  • iOS的编译原理和应用

    iOS的编译原理和应用 什么是编译和编译器 在一般的编程过程中,都要先编译再执行。所谓编译就是把C语言等编程语言编...

  • iOS App 编译过程

    这篇文章是对于自己学习 App编译过程的一个总结 学习的相关文章 iOS App的编译过程iOS 编译过程的原理和...

  • 2018-03-29

    CocoaPods 研究 iOS编译过程的原理和应用 前言 一般可以将编程语言分为两种,编译语言和直译式语言。 C...

网友评论

      本文标题:iOS 编译过程的原理和应用

      本文链接:https://www.haomeiwen.com/subject/bspekqtx.html