【资料图】
Xcode的构建过程本质上是执行一系列构建任务。如:代码检测,编译代码,链接目标文件,拷贝资源(图片, plist, nib)文件,代码签名等。大部分任务是执行命令行工具,如(clang编译、 ld链接、 codesign签名, altool上传)。这些工具使用xcode项目的配置信息,根据特定的顺序执行。bulid System的工作就是创建构建任务,并协调这些任务按照正确的顺序执行。构建任务的顺序是任务之间的依赖关系定的。如有2个类文件,A文件和B文件, B文件使用了A文件的方法,引入了A文件。那么他们的编译任务是编译A,再编译B,等都编译好,将两个.o文件进行链接。我们每次构建项目是对一个具体的 Target发起的,每个Target拥有自己的文件和编译规则,在项目里可以存在多个子项目,这导致了在编译的时候如果使用了 Cocoapods 或者拥有多个 target 的项目会先编译依赖库,然后再编辑当前项目。如果使用的workspace开发,会遍历里面管理的项目,找到Target的依赖进行编译,然后再编译当前项目。这些依赖库的Target的编译过程和我们项目的编译流程是一样的。Xcode编译流程编译准备阶段1.创建编译计划,检查依赖: 检查当前项目中使用的依赖库是否已经安装并能够被正确地引用;确定编译顺序,如工程A下有子工程B,类C中引用了类D,要根据依赖关系创建编译计划,先编译独立的类,子项目;再编译有依赖的类和主项目。2.创建构建产物过程中和结束时需要的目录编译阶段1.写辅助文件:创建app包目录,后面编译后的文件都会被放入app包目录中;将项目的文件结构写成.hmap映射文件,方便后面引用查询使用;生成.hmap文件:当编译器处理.h文件时,它会生成一个.hmap文件,包含了所有的.h文件及其对应的目标文件的信息。这些信息将被用来加速下一次编译过程。.hmap文件通常被存储在Derived Data目录下。2.运行预设脚本:Cocoapods 会预设一些脚本,当然你也可以自己预设一些脚本来运行。这些脚本都在 Build Phases 中可以看到;【"[CP] Check Pods Manifest.lock","Copy Pods Resources"】3.编译文件:针对每一个文件进行编译,先编译.Swift后编译.m文件,可以查看每个文件的编译时间以及error和warning。编译源码文件是编译阶段的重点,它会生成 Mach-O类型的.o文件。这过程涉及到了 LLVM三相设计的 的完整流程:编译前端、优化器、编译后端。4.链接文件:将项目中的多个可执行文件合并成一个文件;链接分为动态链接和静态链接,这2项也是程序员必须要面对的2个重要概念,这个原理衍生了很多重要的应用场景,如:iOS原生代码的热更新,启动性能优化,APP瘦身的符号剪裁等。5.拷贝资源文件:将项目中的资源文件拷贝到目标app包;6.编译,链接 storyboard 文件:storyboard 文件也是会被编译的;项目中的 storyboard 会被编译成一个二进制文件,包含了界面的所有信息和结构,这个文件的后缀名为 .storyboardc。.storyboardc 文件会在链接阶段被链接到最终的应用程序中,以展示应用程序的用户界面。7.编译 xib 文件:。 xib 文件会先解析成 XML 格式的文件,然后编译成二进制格式的文件,即 nib 文件。编译后的 nib 文件会被打包到应用程序的 bundle 中。8.编译 Asset 文件:我们的图片如果使用 Assets.xcassets 来管理图片,那么这些图片将会被编译成机器码,除了 icon 和 launchImage;9.运行 Cocoapods 脚本:将在编译项目之前已经编译好的依赖库和相关资源拷贝到包中。10.将 Swift 标准库拷贝到包中11.生成 .app 包12.对包进行签名13.完成打包XCode中项目的结构关系Target:表示一种产物类型,它有很多设置可以做细节修改,如:Build Settings, Build Phases, Build Rules。Configuration:构建变体,如每个Target下默认就有2个构建变体Debug, Release。 这2个构建变体的设置内容都可以进行修改,如Deubeg下不产生DSYM符号文件加速编译,Release下产生DSYM符号文件用于排查线上问题。Scheme:产物生成驱动器,定义了产物生成的组成过程,Target和Configuaration是静态的配置定义,Scheme是对这些定义的消费。Project:是直接容器,它直接管理者代码文件,资源文件,脚本文件等。它可以引入其他Project作为它的依赖。WorkSpace:它是管理Project的项目容器,在它下面管理的Project可以通过依赖而使用,如A,B是WorkSpace下的两个Project, A在它的Frameworks,Libraries..下点击“+”添加B的产物就可以使用了。如果使用cocopods时,这些会被自动做。编译性语言与解释性语言解释性语言:边解释边运行。特点是调试快,运行慢。 解释器在运行的时候把代码逐行做词法分析,语法分析,语义分析,生成可执行的中间码,然后执行中间码。编译性语言:先编译成可以在CPU上直接运行的机器码,再执行。特点是运行快,调试慢。 通过编译器(采用三相设计:编译器前端,LLVM IR中间码优化器,编译器后端),将代码字符串做词法分析,语法分析,语义分析,生成中间码IR。 然后把IR中间码交给优化器做优化。 IR优化器处理完后把结果交给编译器后端编译成不同架构(arm64, i386)的可执行文件。三相设计假如有N种语言(C、OC、C++、Swift…)的前端,同时也有M个架构(模拟器、arm64、x86…)的Target,是否就需要 N × M 个编译器?三相架构的价值就体现出来了,通过共享优化器的中转,很好的解决了这个问题。假如你需要增加一种语言,只需要增加一种前端;假如你需要增加一种处理器架构,也只需要增加一种后端,而其他的地方都不需要改动。LLVM的组成在Xcode编译iOS项目的时候,都是使用的LLVM,其实在编写代码以及调试的时候都在接触LLVM提供的功能,例如:代码的亮度(Clang)、实时代码检查(Clang)、代码提示(Clang)、debug断点调试(LLDB)。LLVM项目是模块化和可重用的编译器和工具链技术的集合。LLVM主要的子项目有一下几个:1.LLVM核心库:LLVM提供一个独立的链接代码优化器,为许多流行CPU(以及一些不太常见的CPU)的代码生成支持。这些库是围绕一个指定良好的代码表示构建的,称为LLVM中间表示(“LLVM IR”)。LLVM还可以充当JIT编译器 - 它支持x86 / x86_64和PPC / PPC64程序集生成,并具有针对编译速度的快速代码优化。2.LLVM IR 生成器Clang:Clang是LLVM的一个前端,它是LLVM的C / C ++ / Objective-C编译器,旨在提供惊人的快速编译(例如,在调试配置中编译Objective-C代码时比GCC快3倍),非常有用的错误和警告消息以及提供构建优秀源代码工具的平台。3.LLDB项目:LLDB项目以LLVM和Clang提供的库为基础,提供了一个出色的本机调试器。它使用Clang AST和表达式解析器,LLVM JIT,LLVM反汇编程序等,以便提供“正常工作”的体验。在加载符号时,它也比GDB快速且内存效率更高。4.lld项目:lld项目旨在成为clang / llvm的内置链接器。目前,clang必须调用系统链接器来生成可执行文件。参考文章:
https://blog.csdn.net/dangyalingengjia/article/details/103336421https://blog.csdn.net/Future_One/article/details/81882359http://chuquan.me/2021/02/16/understand-ios-xcode-build-process/https://xilankong.github.io/ios开发基础/2020/07/29/Xcode-build过程都做了什么.html
推荐内容
-
当前消息!Xcode编译流程
-
全球最新:鹤峰县:“景区+民宿”串珠成链游客享受惬意旅行
-
视讯!长城证券(002939.SZ)发布一季度业绩,净利润4.51亿元,扭亏为盈
-
环球热头条丨中装建设一季度营收6.81亿元,同比降17.72%
-
冰的拼音怎么写呀_冰的拼音 世界播报
-
赫章农商银行2022年度股东大会胜利召开_当前简讯
-
热线律师说丨五一假期出游遭遇酒店毁约 消费者该如何维权?-天天热门
-
世界观热点:大智慧涨停
-
多彩民族有多彩|遵义仡佬族:一路向北,仡佬秘境远比想象的精彩
-
做投资赚钱很难吗 情况是这样的
-
妈妈家长会上流泪发言,称监督孩子学习到腰都直不起来,这是“自我感动”式教育?
-
去美元化,能让企业好过一点吗? 焦点快看
-
通讯!遇见艺术vlog|浓墨重彩!“妆”点戏曲之美
-
天天快看点丨中信股份(00267):中信有限2022年度归母净利润540.15亿元,同比增长38.28%
-
全球快消息!“人畜共患病项目”揭示人类基因组独特之处
-
新资讯:含蓄是什么意思-含蓄
-
西南民族大学副校长张华志涉嫌严重违纪违法被查
-
嘉环科技:营收及归母净利润双增 政企行业智能化业务贡献业绩成长-世界消息
-
环球快看点丨《死侍2》又贱又污又毒舌,他是漫威史上最另类英雄
-
恭喜孙铭徽!恭喜胡金秋!广厦传重大利好,辽篮半决赛或被翻盘
-
天天热讯:4月28日华北苯酐市场行情走势下滑
-
板材品牌 板材品牌排行榜前十名有哪些 全球新消息
-
唐宋八大家 唐朝有哪几位_唐宋八大家是哪八位
-
【世界报资讯】中信证券:境内长途游出行旺盛 关注长假消费热点催化
-
方国瑜文集:第二辑_关于方国瑜文集:第二辑介绍 速读
-
外贸meas是什么意思 meas是什么意思 全球即时看
-
单票揽1288注奖项,上海彩友喜获2587万巨奖,一分没捐全部领走! 世界播资讯
-
环球观天下!化妆步骤初学者_怎么学习化妆
-
“反中立委”郑运鹏初选胜出,蓝营议员分析民调看出他有大危机 全球微头条
-
世界速递!昆明扫黑第一案时隔5年再开庭,此前因证据不足等被发回重审
-
才下眉头却上心头歌曲原唱 才下眉头
-
播报:两亿像素变焦手机要来了:下半年将发布
-
每日消息!易极:4-27黄金1983.00现价多上看1999,2008
-
华阳股份:一季度净利润17.27亿元 同比增长32.58%_环球快资讯
-
专家共议低碳转型如何赋能美丽中国建设?
-
郑州人才公寓退租后还没再次申请吗? 世界观热点
-
股票投资策略之长期投资与短期交易
-
隆基绿能:组件和硅片销售大增,2022年归母净利同比增长63.02%至148.12亿元,拟10派4元-简讯
-
环球快看:西门子家电全系智能新品重磅亮相AWE,引领非凡生活方式
-
工厂智能模式介绍——SaaS 全球快消息
-
聚焦:薄荷可不可以放冰箱里 薄荷可以放冰箱里保存吗
-
3月份我国宏观经济运行向好 市场需求逐步恢复 全球快讯
-
快资讯:传音控股年营收 466 亿:同比降 5.7%,净利 25 亿降 36%
-
今日快讯:今日最新快报:本村外嫁女一律不分土地法院判了 百岁老人状告6个儿女不赡养判决生效半年后离世
-
2023武汉园博园五一有哪些活动?
-
北京菜百黄金价格今天多少一克(2023年04月27日)-今日热讯
-
36h有多大(36h)
-
速读:中牟县市场监管局开展知识产权宣传周系列宣传活动
-
长沙倡议市民腾城迎宾,为外地游客让出停车位、游览空间
-
天天百事通!华星创业:4月26日融资买入3375.89万元,融资融券余额1.76亿元
-
双乐股份(301036.SZ):用于面板光刻胶的颜料产品尚在研发中
-
学会这样算八字合婚,准确率100%! 环球热讯
-
古宅弄新瓦 老树著春花-环球通讯
-
天天信息:首钢股份参设新能源材料科技公司,注册资本7.5亿
-
实施积极应对人口老龄化国家战略(评论员观察)|全球快消息
-
焦点热文:广州商学院和浙江师范大学哪个好谁更厉害附差距对比
-
丰田:智能不是堆砌功能 制造让中国人感到喜悦的汽车 最资讯
-
每日视点!中保研新一轮测评结果发布 包括14款车型
-
华塑科技:拥有应用于液冷储能系统方案的产品-今日关注
-
金属电子释放实现阿秒范围测控
-
蒙的多音字组词与拼音_蒙的多音字组词 新资讯
-
全球资讯:如何查询不动产登记信息?漳州市不动产登记中心手把手教你
-
栀子花的养殖方法用什么肥_栀子花的养殖方法
-
天天快播:上网总是提示证书错误_总是提示证书错误
-
青海玉树嘉塘草原出现大量无纺布碎片,林草局:已在清理 全球聚看点
-
全球播报:多地多项基础设施工程建设取得新进展
-
世界热点评!在线教育龙头股票有哪些_在线教育龙头股票
-
男人“出轨”后,常对老婆说的3句话,女人必须得了解
-
“翻脸”富力,平安不动产收缩地产业务-每日速递
-
观速讯丨1500年左右发生了什么重大历史事件-1500年
-
鞍山发蓝2022年净利1718.00万同比增长2.70% 研发项目中主材投入增加
-
焦点热讯:市场监管总局:加大监督处罚力度 治理电商和直播带货违法乱象
-
AI激战之下,微软、谷歌最新成绩单出炉,谁更胜一筹?_环球聚看点
-
“五一”假期全国将迎来道路出行高峰 公安部发出安全预警
-
4年级上册数学角的度量试卷 四年级数学上册角的度量练习题
-
比亚迪海鸥 VS 五菱缤果:十万元以下的微小型电动车,你选谁? 今日讯
-
全球资讯:【保密宣传】2023年保密公益宣传片
-
被控受贿347万余元,甘肃省电力投资集团公司原副总经理刘晓黎受审
-
焦点速看:民族品牌指数收跌0.25% 亿纬锂能涨逾10%
-
框架合同范本采购(共4篇)-环球微资讯
-
短讯!江苏大学聚力培养复合型农业人才助力乡村振兴
-
韩后化妆品是哪个国家的品牌_韩后化妆品怎么样
-
多部华语新片入围第76届戛纳国际电影节
-
人保百万医疗险保障范围是什么?一年要交多少钱?
-
头条:央行开展950亿元7天期逆回购操作 公开市场实现净投放630亿元
-
百济神州:公司将内部研究开发项目的支出,区分为研究阶段支出和开发阶段支出
-
【环球速看料】安徽出台中国(蚌埠)跨境电商综合试验区建设实施方案
-
从宝马MINI冰淇淋事件谈互联网时代舆情应对-世界视讯
-
今日聚焦!体育总局公布体育领域国家级“专精特新”企业及制造业单项冠军企业名单
-
中国国家版权局与世界知识产权组织合作迈上新台阶 天天热闻
-
世界热资讯!华为应用锁怎么设置人脸解锁(华为如何设置人脸识别解锁应用程序)
-
“15分钟就业服务圈”启航,普陀这里打造“家门口”的就业公共服务阵地
-
天天资讯:截图!长按保存分享!Cocos Creator
-
未来产业塑造竞争新优势
-
国安将和鲁能进行淘汰赛第一轮首回合的较量-时快讯
-
如何使用 Hershey Kisses 和椒盐卷饼制作驯鹿鼻子
-
环球聚焦:全国建设监理工程师信息查询,建设工程监理工程师教育网
-
天天新资讯:山高新能源(01250.HK):4月25日南向资金增持48万股
-
阿龙纳斯×尼摩船长CP图__的阿龙纳斯 当前聚焦
-
peg4000和6000的区别(peg4000) 今日精选
-
穿心莲内酯滴丸说明书及不良反应_穿心莲内酯滴丸说明书 环球速看
-
河南省第九届民族运动会在周口闭幕 下一届相约洛阳_环球关注
-
相思成灾原唱下载(相思成灾mp3微盘下载)|世界看热讯
-
固态硬盘一般的读取速度和写入速度是多少?_环球观焦点
-
全球观速讯丨拜登宣布将竞选连任总统
-
青岛海牛总经理:身价倒数第三目标保级 盈利是方向但实现太难-世界热议
-
中国五矿与中国地质调查局签署战略合作协议
-
哈维尔:有庞大阵容是我们的优势,顶替蒋光太的球员会发挥高水平
-
天天微速讯:买明基SW系列显示器,享免租校色仪
-
焦点短讯!自粘墙纸怎么贴_墙纸怎么贴
-
西城试点线上“养老顾问”,最新养老政策一键可查_全球新资讯
-
中国十九冶科学城9号地块项目荣获成都市结构优质工程奖
-
长实北京“誉天下”收官之作 全新现房样板间将开放_世界速递
-
喝盐水能补充电解质吗(喝盐水)_当前聚焦
-
2023山东淄博高青县县属国有企业招聘笔试最低合格分数线和面试公告
-
巴萨:诺坎普翻修已达成协议 融资14.5亿欧元|焦点讯息
-
搭载13代i9和RTX 4060,ThinkBook 16p 2023起售价8499元
-
东京股市小幅反弹
-
天天滚动:被实名举报的他,真的是“劣迹艺人”?
-
【播资讯】英国、荷兰共建1.8GW LionLink跨境输电项目
-
天天观天下!康希诺2022亏损9.09亿元,mRNA新冠疫 苗还能否让他逆境翻盘?
-
宝明科技(002992.SZ):获董事长李军增持9.51万股、增持额为500.44万元
-
天天热消息:元宇宙阅读打开贵州新华书店服务新模式
-
车流量高位运行、商圈景点迎大客流,五一上海哪里最易堵?
-
泰拉瑞亚ip地址怎么看 steam泰拉瑞亚ip地址怎么看
-
全球快资讯:今日时讯:巴特勒56分热火力克雄鹿3-1领先 巴特勒谈MVP呼声我不在乎什么MVP恩比德才是MVP
-
力戒“三秀” 世界资讯
-
全球滚动:2023年3月四六级成绩查询入口
-
恒立液压:携手供应商 构建绿色供应链 世界视讯
-
花小猪开放平台:中小商家订单量涨幅超1倍 成交率提升超6个点|今日要闻
-
杭州三批供地:8宗地报价均触顶 下午摇号决定花落谁家 当前速读
-
职业教育招生人数增加 科德教育2022年度扭亏为盈-全球新动态
-
母亲回应三年级女儿帮爸爸做翻译:自己教的,共同学习
-
【环球快播报】新疆伊犁:民警帮助牧民驱赶羊群转场 全程护送20余公里
-
《西行纪 燃魂》西行八卦周刊:八戒篇
-
A股开盘速递 | 沪指高开0.03%石油有色股涨幅居前 中金:市场风格逐步均衡-世界视讯
-
2024年2月6日出生的宝宝命好吗
-
OPPO Reno10 Pro+ 和 iQOO Neo8 手机入网,均配备 100W+ 快充
-
电动汽车定价疲软或蔓延至新车市场 全球速看料
-
孙中山和他的时代
-
吉林省举办中国航天日科普宣传活动 每日动态
-
和双子复合_复音双子的介绍
-
金山云美股跌7.19% 环球观焦点
-
石乳村
-
人民币汇率近期波幅受限 市场预期在当前区间实现均衡 世界热推荐
-
山水起舞 盛景满目——张家界增色湖南“奇秀山水名片”
-
15年宝马750仅售18.5万,6.6T V12,劳斯莱斯同款发动机
-
时讯:全国儿童预防接种日:这份疫苗接种攻略 请家长收藏
-
市场销售明显回升,服务性消费稳步改善——消费呈现恢复向好态势
-
大动作?淘宝中国1亿元成立淘天公司 涉区块链业务|视点
-
天天短讯!一个枇杷6元,这枚枇杷界的“白富美”你吃过吗?
-
姥佬的饺子馆(姥姥的饺子)_全球微动态
-
相约安徽·向春而行丨跨越千年的爱情故事,在宿州灵璧虞姬文化园重现|环球快讯
-
肠道细菌或与太空骨流失存在关联
-
华润电力蒲圻三期2×1000MW工程主体建筑A/C标段中标公示|速看料
-
当前通讯!现在玩cs一般哪个平台_cs平台哪个好
-
小孩尿频是怎么回事?_小孩尿频是怎么回事-世界速递
-
美股收盘:科技股巨头财报来袭前夕 三大指数弱势盘整
-
全球快消息!宁大新华学院举办毕业生双选洽谈会
-
社区有何权力让住户清理家中藏书?
-
石化油服(600871):4月24日北向资金减持374.1万股
-
金达威(002626):4月24日北向资金增持78.99万股
-
适合全体员工玩的游戏_适合公司员工玩的游戏
-
天天动态:大肠杆菌形态特征图_大肠杆菌形态特征是什么
-
【世界快播报】世事无常或有因缘问心无愧顺其自然是什么意思(世事无常因果不昧什么意思)
-
钙钛矿大会观察:GW级产线开工、技术路线呈现多样性、玩家持续扩容
-
【世界播资讯】珈伟新能(300317.SZ)大股东上海储阳拟减持不超3%股份
-
ST华英:公司不存在触及其他风险警示的任何情形_世界热文
-
接入医药系统 京东快递推出“广安门模式” 世界头条
-
北京房山区居民在家门口“畅享”阅读
-
书本中的爱心传递
-
【环球热闻】中老年及体弱人群更适合吃醪糟?教你花样烹饪方法
-
图解泰尔股份年报:第四季度单季净利润同比减10826.40%|全球快资讯
-
药明康德:一季度净利润同比增长31.97%_环球新要闻
-
环球关注:飞鹿股份: 监事会决议公告
-
全球观热点:岚县气象局发布霜冻蓝色预警【Ⅳ级/一般】【2023-04-24】
-
焦点快播:“青年大学习”网上主题团课2023年第9期上线
-
当前视点!信邦智能:公司的高精度视觉检测技术目前应用于航空航天检测装备等领域
-
惊人数据,瑞士信贷一季度流失680亿美元……
-
宝鸡渭滨区“城中村”改造项目今日开工_实时
-
水遁水龙弹之术表情 水遁水龙弹之术
-
2023年4月24日国内各大市场锌升贴水汇总 每日快看
-
世界消息!五一前,抖音美团鏖战“新二线”
-
微动态丨数据分析揭示美国枪支暴力地区性差异原因
-
河南加大住房公积金贷款支持力度:最高可贷150万元
-
(聚焦消博会)泰国“尖货”消博会吸睛 冀共享中国消费市场|全球球精选
-
天天即时看!电机的种类跟原理,看完秒懂!
-
俄媒:一架装有美国发动机的无人机在莫斯科州坠落,机上无弹药-焦点信息
-
工地干活误伤赔偿标准
-
济川药业的营销体系之惑 天天微速讯
-
国家知识产权局:2022年查办侵权盗版教材教辅和儿童图书案件601件
-
天天日报丨中国医学发展大会上,多位院士专家倡议——构建良好创新生态,推动医学科技高质量发展
-
帝国时代2怎么玩(单机游戏帝国时代2怎么玩)
-
海通期货:供需支撑价格 有色震荡为主丨商品市场
-
头条:天津下发《通知》 解决“应保未保”“政策保”等问题
-
今日要闻!鸿铭股份(301105)4月24日主力资金净卖出59.44万元
-
胃肠感冒的症状及治疗病例_胃肠感冒的症状及治疗
-
共享雨伞行业前景如何 共享雨伞行业投融资现状
-
python-Django-文件上传(一)_天天讯息
-
天天信息:超讯通信(603322):该股换手率大于8%(04-24)