您的位置:首页 > 其它

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

2016-03-30 17:19 302 查看
使用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/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: