输出gradle执行task名称、输入输出文件和耗时

使用gradle编译android,很多时候,我们不清楚里面到底执行哪些操作及各个阶段的消耗的时间,

因此有个打印gradle的各个task的耗时及输入输出的文件对了解gradle很有帮助:

class TimingsListener implements TaskExecutionListener, BuildListener {
    private Clock clock
    private timings = []

    @Override
    void beforeExecute(Task task) {
        clock = new org.gradle.util.Clock()
        if (task.outputs.files.files) {
            task.project.logger.warn "taskName:${task.name} "
            task.project.logger.warn "inputs.files.files:-----------start------- "
            task.inputs.files.files.each {
                task.project.logger.warn "${it.absolutePath} "
            }
            task.project.logger.warn "inputs.files.files: -----------end---------- "
        }
    }
    @Override
    void afterExecute(Task task, TaskState taskState) {
        def ms = clock.timeInMs
        timings.add([ms, task.path])
        task.project.logger.warn "${task.path} took ${ms}ms"
        if(task.outputs.files.files) {
            task.project.logger.warn "taskName:${task.name}"
            task.project.logger.warn "outputs.files.files: ------------start----------------- "
            task.outputs.files.files.each {
                task.project.logger.warn "${it.absolutePath} "
            }
            task.project.logger.warn "outputs.files.files: ---------------end------------------ "
        }
    }

    @Override
    void buildFinished(BuildResult result) {
        println "Task timings:"
        for (timing in timings) {
            if (timing[0] >= 50) {
                printf "%7sms  %s\n", timing
            }
        }
    }

    @Override
    void buildStarted(Gradle gradle) {}

    @Override
    void projectsEvaluated(Gradle gradle) {}

    @Override
    void projectsLoaded(Gradle gradle) {}

    @Override
    void settingsEvaluated(Settings settings) {}
}

gradle.addListener new TimingsListener()

参考:

http://jiajixin.cn/2015/08/07/gradle-android/

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值