| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100 |
- import java.text.SimpleDateFormat
- /**
- * 监控构建耗时
- *
- * 记录构建过程中的每个任务的耗时,并写入文件中 .build_history/buildTimeLog_yy_MM_dd_HH_mm_ss.log中
- *
- * 使用时将文件放在app目录下,然后在app/build.gradle中添加引用:
- * apply from: "./buildTrace.gradle"
- */
- class BuildTimeListener implements TaskExecutionListener, BuildListener {
- private final String BUILD_LOG_FILE_DIR = ".build_history"
- private final String BUILD_LOG_FILE_PATH = "buildTimeLog"
- private long taskStartTime;
- private long buildStartTime;
- private int taskCounts = 0;
- private StringBuilder sb = new StringBuilder()
- private SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss")
- private SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy_MM_dd_HH_mm_ss")
- BuildTimeListener() {
- buildStartTime = System.currentTimeMillis()
- //添加一些版本信息
- // sb.append("codeTag:").append(ProjectConfig.codeTag).append("\n")
- // sb.append("branch:").append(ProjectConfig.branch).append("\n")
- // sb.append("versionName:").append(ProjectConfig.versionName).append("\n")
- // sb.append("versionCode:").append(ProjectConfig.versionCode).append("\n")
- sb.append("构建时间:" + sdf.format(new Date()) + "\n")
- sb.append("开始构建----------------------\n")
- }
- @Override
- void buildStarted(Gradle gradle) {
- }
- @Override
- void settingsEvaluated(Settings settings) {
- }
- @Override
- void projectsLoaded(Gradle gradle) {
- }
- @Override
- void projectsEvaluated(Gradle gradle) {
- }
- /**
- * 构建完成回调
- * @param result The result of the build. Never null.
- */
- @Override
- void buildFinished(BuildResult result) {
- if(taskCounts<5) return
- long buildCost = System.currentTimeMillis() - buildStartTime
- sb.append("构建结束----------------------\n")
- sb.append("构建总耗时:" + buildCost + "ms")
- //输出到文件
- String text = sb.toString()
- writeToFile(BUILD_LOG_FILE_PATH, text)
- }
- /**
- * 任务执行开始
- * @param task The task about to be executed. Never null.
- */
- @Override
- void beforeExecute(Task task) {
- taskStartTime = System.currentTimeMillis();
- }
- /**
- * 任务执行结束
- * @param task The task which was executed. Never null.
- * @param state The task state. If the task failed with an exception, the exception is available in this
- */
- @Override
- void afterExecute(Task task, TaskState state) {
- long cost = System.currentTimeMillis() - taskStartTime;
- System.out.println("任务:" + task.name + "," + task.path + ",耗时:" + cost);
- sb.append("[" + task.path + "]:" + cost + "ms\n")
- taskCounts++
- }
- private void writeToFile(String fname, String text) {
- File dir = new File(BUILD_LOG_FILE_DIR)
- if (!dir.exists()) {
- dir.mkdir()
- }
- File file = new File(BUILD_LOG_FILE_DIR + File.separator + fname + "_" + sdf2.format(new Date()) + ".log")
- file.write(text, true)
- }
- }
- gradle.addListener new BuildTimeListener()
|