| def r8RootDir = System.properties['r8.root.dir'] | 
 |  | 
 | allprojects { | 
 |     buildscript { | 
 |         repositories { | 
 |             maven { url r8RootDir+ '/third_party/gradle-plugin' } | 
 |             // We don't use 'google()' in order to support projects using gradle | 
 |             // lower to 4.1 version. | 
 |             maven { url 'https://maven.google.com' } | 
 |             jcenter() | 
 |         } | 
 |         dependencies { | 
 |             classpath files(r8RootDir + '/build/libs/r8.jar') | 
 |             classpath 'com.android.tools.build:gradle:3.2.0-dev' | 
 |         } | 
 |     } | 
 |     repositories { | 
 |         maven { url r8RootDir+ '/third_party/gradle-plugin' } | 
 |         maven { url 'https://maven.google.com' } | 
 |         jcenter() | 
 |         mavenCentral() | 
 |     } | 
 | } | 
 |  | 
 | // | 
 | // Dump detailed timings per subtask | 
 | // | 
 | import java.util.concurrent.TimeUnit; | 
 | class TimingsListener implements TaskExecutionListener, BuildListener { | 
 |     private long startTimeInNs; | 
 |     private timings = [] | 
 |  | 
 |     @Override | 
 |     void beforeExecute(Task task) { | 
 |         startTimeInNs = System.nanoTime(); | 
 |     } | 
 |  | 
 |     @Override | 
 |     void afterExecute(Task task, TaskState taskState) { | 
 |         def ms = TimeUnit.MILLISECONDS.convert( | 
 |                 System.nanoTime() - startTimeInNs, TimeUnit.NANOSECONDS); | 
 |         timings.add([task.path,ms]) | 
 |     } | 
 |  | 
 |     @Override | 
 |     void buildStarted(Gradle gradle) { | 
 |     } | 
 |  | 
 |     @Override | 
 |     void buildFinished(BuildResult result) { | 
 |         def total=0 | 
 |         for (timing in timings) { | 
 |             total += timing[1] | 
 |         } | 
 |  | 
 |         for (timing in timings) { | 
 |             printf "BENCH,%s,%s\n", timing | 
 |         } | 
 |  | 
 |         printf "BENCH,totalGradleTasks,%s\n", total | 
 |  | 
 |     } | 
 |  | 
 |     @Override | 
 |     void projectsEvaluated(Gradle gradle) {} | 
 |  | 
 |     @Override | 
 |     void projectsLoaded(Gradle gradle) {} | 
 |  | 
 |     @Override | 
 |     void settingsEvaluated(Settings settings) {} | 
 | } | 
 |  | 
 | gradle.addListener new TimingsListener() |