Android Build Performance Tuning with gradle-profiler
If your project have more and more modules and source code, the build will be the nightmare, it will take more than 10 mins to build, for release build, it will take even more time, so we can use the gradle-profiler to figure out the bottleneck, and take actions to do the build performance tuning accordingly.
gradle-profiler in local environment
Install gradle-profiler
curl -s “https://get.sdkman.io” | bash sdk install gradleprofiler gradle-profiler –benchmark help
Run gradle-profiler
gradle-profiler –profile chrome-trace –jprofiler-alloc –project-dir $PWD –output-dir out/profiler/apkBuild app:assembleRelease
Loading the json to Chrome
gradle-profiler in docker environment
Start docker
docker run -it –memory=”8g” –platform linux/amd64 -v $(pwd):/Develop alvrme/alpine-android:latest-jdk11 /bin/bash cd /Develop
Install gradle-profiler
apk add zip curl -s “https://get.sdkman.io” | bash sdk install gradleprofiler gradle-profiler –benchmark help
Run gradle-profiler
gradle-profiler –profile chrome-trace –jprofiler-alloc –project-dir $PWD –output-dir out/profiler/apkBuild app:assembleRelease
Loading the json to Chrome
With scenarios for clean build
gradle-profiler –profile chrome-trace –jprofiler-alloc –project-dir $PWD –output-dir out/profiler/apkBuild –scenario-file scenarios.txt
scenarios.txt
clean_build { tasks = [“:app:assembleRelease”] cleanup-tasks = [“clean”] }
Benchmark with gradle-profiler
`gradle-profiler --benchmark --project-dir . --scenario-file clean-build-scenario.txt`
chrome://tracing Shortcut
- w/s:zoom in/out
- a/d: move left/right
- mouse: scroll up/down