zoukankan      html  css  js  c++  java
  • iOS进阶--提高XCode编译速度、Xcode卡顿解决方案

     

    提升编译链接的速度主要有以下三个方式:

    1. 提高XCode编译时使用的线程数

    defaults write com.apple.Xcode PBXNumberOfParallelBuildSubtasks 4

    XCode默认使用与CPU核数相同的线程来进行编译,但由于编译过程中的IO操作往往比CPU运算要多,因此适当的提升线程数可以在一定程度上加快编译速度。本人采用的是4核的CPU,将线程数改为8后编译速度略有提升。

    2. 将Debug Information Format改为DWARF

    在工程对应Target的Build Settings中,找到Debug Information Format这一项,将Debug时的DWARF with dSYM file改为DWARF。
    这一项设置的是是否将调试信息加入到可执行文件中,改为DWARF后,如果程序崩溃,将无法输出崩溃位置对应的函数堆栈,但由于Debug模式下可以在XCode中查看调试信息,所以改为DWARF影响并不大。这一项更改完之后,可以大幅提升编译速度。
    需要注意的是,将Debug Information Format改为DWARF之后,会导致在Debug窗口无法查看相关类类型的成员变量的值。当需要查看这些值时,可以将Debug Information Format改回DWARF with dSYM file,clean(必须)之后重新编译即可。

    3. 将Build Active Architecture Only改为Yes

    在工程对应Target的Build Settings中,找到Build Active Architecture Only这一项,将Debug时的No改为Yes。
    这一项设置的是是否仅编译当前架构的版本,如果为No,会编译所有架构的版本。需要注意的是,此选项在Release模式下必须为Yes,否则发布的ipa在部分设备上将不能运行。这一项更改完之后,可以显著提高编译速度。

    本人在设置完以上三个项之后,编译时间从1分钟左右减少到10秒左右,因此效果还是相当明显的。

    Xcode卡顿解决方案:


    1、禁用indexing

     
     

    在终端(terminal) 输入
    defaults write com.apple.dt.XCode IDEIndexDisable 1

    并重启Xcode。
    (新手勿用哈,附还原命令)
    defaults write com.apple.dt.XCode IDEIndexDisable 0

    2、减少系统记录的最近打开数目数量

    打开系统偏好设置——通用,把“最近使用的项目”由默认10,修改为5或者更少。


     
     

    此时,不一定能立即加速,需要重新启动系统。

    3、提高XCode编译时使用的线程数

    defaults write com.apple.Xcode PBXNumberOfParallelBuildSubtasks 4

     
     

    4、 将Debug Information Format改为DWARF

    在工程对应Target的Build Settings中,找到Debug Information Format这一项,将Debug时的DWARF with dSYM file改为DWARF。


     
     

    5、将Build Active Architecture Only改为Yes

    在工程对应Target的Build Settings中,找到Build Active Architecture Only这一项,将Debug时的No改为Yes。
    这一项设置的是是否仅编译当前架构的版本,如果为No,会编译所有架构的版本。需要注意的是,此选项在Release模式下必须为No,否则发布的ipa在部分设备上将不能运行。这一项更改完之后,可以显著提高编译速度。


     
     

    6、有些人习惯用Xcode提交代码,不过我一般是分开的Xcode就负责编辑代码,提交代码的工具另外。

     
     
      
  • 相关阅读:
    问题001:Java软件,属于系统软件还是应用软件呢?
    Apache.Tomcat 调用Servlet原理之Class类的反射机制,用orc类解释
    CharSquence 接口的作用,多态以增强String
    eclipse环境Dynamic web module version 3.1版本的进步,简化Dynamic web object 中Servlet类的配置,不用web.xml配置<Servlet>
    tomcat.apache startup.bat闪退两种解决方法
    c++谭浩强教材教学练习例题1.2 求两数之和 为什么sum=a+b;sum的值为65538
    JSON格式自动解析遇到的调用方法问题.fromJson() ..readValue()
    shell command to replace UltraEdit
    根据内容最后一位进行排序
    利用left join 筛选B表中不包含A表记录
  • 原文地址:https://www.cnblogs.com/LifeTechnologySupporter/p/10159969.html
Copyright © 2011-2022 走看看