|  | 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() |