作家
登录

如何将iOS项目的编译速度提高5倍

作者: 来源: 2017-10-20 11:05:25 阅读 我要评论

测试效不雅

Carthage

  1. cache directory /Users/mac/.ccache  
  2. primary config /Users/mac/.ccache/ccache.conf  
  3. secondary config (readonly) /usr/local/Cellar/ccache/3.3.4_1/etc/ccache.conf  
  4. cache hit (direct) 14378  
  5. cache hit (preprocessed) 1029  
  6. cache miss 7875  
  7. cache hit rate 66.18 %  
  8. called for link 61  
  9. called for preprocessing 48  
  10. compile failed 2  
  11. preprocessor error 4  
  12. can’t use precompiled header 70  
  13. unsupported compiler option 2332  
  14. no input file 11  
  15. cleanups performed 0  
  16. files in cache 35495  
  17. cache size 1.3 GB  
  18. max cache size 5.0 GB 

如不雅成功接入,就能看见 cache miss 不为0。因为第一次编译没有缓存,肯定是全 miss 的。接着编译第二遍,如不雅能看见 cache hit 的数字开端飙升,恭喜你,接入成功了。

CocoaPods 的处理

如不雅你的项目不消 CocoaPods 来做担保理,那你已经完全接入成功了,不消履行下面的操作。

因为 CocoaPods 会零丁把第三方库打包成一个 Static Library(或者是Dynamic Framework,如不雅用了 use_frameworks!选项),所以 CocoaPods 生成的 Static Library 也须要把 Enable Modules 选项给关掉落。然则因为 CocoaPods 每次履行 pod update 的时刻都邑把 Pods 项目从新生成一遍,如不雅直接在 Xcode 琅绫擎修改 Pods 项目琅绫擎的 Enable Modules 选项,下次履行pod update的时刻又会被改回来。我们须要在 Podfile 琅绫擎参加下面的代码,让生成的项目封闭 Enable Modules 选项,同时参加 CC 参数,不然 pod 在编译的时刻就无法应用 CCache 加快:

  1. post_install do |installer_representation| 
  2. installer_representation.pods_project.targets.each do |target| 
  3. target.build_configurations.each do |config| 
  4. #封闭 Enable Modules 
  5. config.build_settings['CLANG_ENABLE_MODULES'] = 'NO' 
  6. # 在生成的 Pods 项目文件中参加 CC 参数,路径的值根据你本身的项目来修改 
  7. config.build_settings['CC'] = '$(PODS_ROOT)/../ccache-clang' 
  8. end 
  9. end 
  10. end 

集盘考题排查

重点存眷日记文件的输出和ccache -s 敕令的统计,如不雅在日记中看到了 unsupported compiler option -fmodules 如许的字眼,就是你的 Enable Modules 没有关掉落了,根据前面的步调细心检查。其他问题,参考官方文档的 Troubleshooting。

进一步的优化

移除 Precompiled Header File

它能增快构建速度的重要原因是缓存了编译结不雅,经由过程持续监督项目目次的文件变更,每次编译时只编译有修改的文件。别的一个让我很受启发的功能是 HTTP Cache Server,经由过程一台缓存文件办事器来保存大年夜家的编译结不雅,如许只要团队里个一一人编译过的文件,其他人就不消再编译了,直接下载久煨。


  推荐阅读

  化敌为友,Docker 宣布拥抱 Kubernetes

沙龙晃荡 | 去哪儿、陌陌、ThoughtWorks在主动化运维中的实践!10.28不见不散! 在当前企业改变传统的单体应用,拥抱更灵活的、应用容器的云原生 DevOps 模型的大年夜潮之下,Docker 具有先>>>详细阅读


本文标题:如何将iOS项目的编译速度提高5倍

地址:http://www.17bianji.com/lsqh/38068.html

关键词: 探索发现

乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

网友点评
自媒体专栏

评论

热度

精彩导读
栏目ID=71的表不存在(操作类型=0)