增量构建技巧
摘要:介绍在增量构建中的一些技巧,减少增量构建的时间
1.使用@class 声明,减少.d中的依赖,详情见(一);
2.避免脚本重复执行
run script 默认选择 Based on dependency analysis;
以下情况会导致script在每次build之后执行
- 没有声明input文件
- input文件changed
- 缺失output文件
所以补足input及output,可避免script的每次build之后执行。
xcode 12 新构建系统报错,有的同学会删除
[CP] Copy Pods Resources脚本中所有的output file,这样会导致每次build之后,执行[CP] Copy Pods Resources脚本(还会导致asset重新编译),耗时巨长,建议只删除报错的文件,例如Assets.car,保留output file
3.修改code sign编译参数 (debug环境下)
- 更改代码签名的hash算法,用较简单的算法代替默认算法
--digest-algorithm=sha1
- 修改资源文件规则,不对资源文件code sign (Apple API只关心二进制文件是否code sign) 新建plist文件,里面内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>rules</key>
<dict>
<key>.*</key>
<false/>
</dict>
</dict>
</plist>
配置:
优化后,工程的code sing时间从3秒下降到0.6秒
- 避免
ValidateEmbeddedBinary阶段耗时 (debug环境,没有widget需求下) 总耗时13.7秒,但是widgt校验是并发的,实际对编译时间的影响应该在2秒左右,可考虑优化掉
build Phases -> Embed App Extensions 中移除widget。
- debug环境下不需要dsym
优化前增量构建时间:
优化后增量构建时间:
总结: 对于build with timeing summary中的各个阶段,考虑其中可优化的地方
参考: