美文网首页工作生活
关于AS编译时间过长的问题

关于AS编译时间过长的问题

作者: 初见soulmate | 来源:发表于2019-07-03 10:41 被阅读0次
    针对打包编译时间太长的解决方法:
    1.尽量使用implementation
    依赖配置
    2.针对测试调试可以关闭lint

    lint是个耗时大户,而这个Lint Task一般在Debug的时候是不需要的,因此可以先禁用这个Task来完成Lint的禁用.

    // 方式一  注意放置的位置[一定要写到apply plugin: 'com.android.application' 前面才生效]
    tasks.whenTaskAdded { 
        task ->    if (task.name.equals("lint")) {
            task.enabled = false
        }
    }
    // 方式二app/build.gradle [推荐]
    android{
        ...
        buildTypes{
            ...
            debug{
                ...
                project.gradle.startParameter.excludedTaskNames.add('lint')  // 屏蔽lint耗时检查
            }
        }
        ...
    }
    
    3.针对性的屏蔽掉耗时的Task

    通过profile工具,找到编译耗时的Task,我们就可以有针对性的屏蔽掉来提高编译速度.
    例如uploadReleaseSymtabFile耗时也挺多的,我在查看耗时的时候也是挺吃惊的,这个是项目中集成的bugly符号表自动上传的插件,果断在Debug阶段屏蔽掉先,记得上线时一定要放开.
    直接在AS提供的终端中运行build命令,只需追加 -profile参数即可使用该功能.

    4.开启多线程支持和增量编译

    在gradle.properties文件中增加如下所示代码: 表示开启Gradle的多线程和多核心支持.

    org.gradle.daemon=true
    org.gradle.parallel=true
    org.gradle.configureondemand=true
    

    在app/build.gradle android{}闭包中添加如下代码:表示开启Gradle的增量编译,增加编译的内存资源到4G

    dexOptions{        
          // incremental true
            javaMaxHeapSize "4g"
    }
    

    ps:最好屏蔽 incremental true,在编译的时候可能会有一个警告信息WARNING: DSL element 'DexOptions.incremental' is obsolete and will be removed at the end of 2018.因为在 AS 3.0这个已经是默认实现了.

    Lint是一个代码扫描工具,可以帮助我们发现并纠正代码结构质量的问题,而无需实际执行该应用也不必编写测试用例.该工具会报告其检测到的每个问题并提供该问题的描述信息和严重级别,以便可以快速确定需要优先进行哪些关键改进.此外可以调低问题的严重级别,忽略与项目无关的问题,也可以调高严重级别,以突出特定问题.
    Lint在AS中默认就集成好了,它会对我们的代码进行检测给出警告提示,

    AAPT全称 Android Asset Packaging Tool.该工具位于Android SDK的build-tools目录下
    这个工具主要用于Android编译 打包.它可以查看 创建 修改压缩文件(zip,jar包,apk文件),也可以将资源编译成二进制文件,AS在编译时调用该工具进行资源打包,将所有文件打包成一个apk文件.

    相关文章

      网友评论

        本文标题:关于AS编译时间过长的问题

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