Perspectives from a
Solutions Engineer
Nelson Osacky
Slide 2
Slide 2 text
Toro y Moi - Freelance
Slide 3
Slide 3 text
Perspectives from a Solutions
Engineer
•Why is productivity important?
•What does Nelson do as a Solutions Engineer?
•How can I make my build faster?
•What is coming up in Gradle?
Slide 4
Slide 4 text
Me
• Previously Android Engineer
• Large projects
• SoundCloud
• Square
• Small startups
• Solutions Engineer at Gradle
Slide 5
Slide 5 text
Me
• Gradle Plugin Maintainer
• Fladle - Easily Scale Instrumentation Tests on Firebase
https://github.com/runningcode/fladle
• Delect - Replace Dagger with Dagger Reflect
https://github.com/soundcloud/delect/
• Gradle Doctor - Actionable Insights for your build
https://github.com/runningcode/gradle-doctor
Android Development
Feature Development Tech Debt
(There are other things too)
Slide 13
Slide 13 text
Tech Debt
Refactoring Build Speed
Slide 14
Slide 14 text
Build Speed is Tech Debt
And it always pays off
Slide 15
Slide 15 text
Cost of Builds
60s waste * 50 builds / day * 50 devs
= 42 hours lost / day
Slide 16
Slide 16 text
Cost of Builds
60s waste * 50 builds / day * 50 devs
= 42 hours lost / day
not including lost focus
https://gradle.com/roi-calculator
Slide 17
Slide 17 text
Fast Builds Matter
Slide 18
Slide 18 text
Cost of Builds
60s waste * 50 builds / day * 50 devs
= 42 hours lost / day
hire 5 new people without paying
them! no recruiting
https://gradle.com/roi-calculator
Slide 19
Slide 19 text
Build Speed is Tech Debt
And it always pays off
And is easy to justify working on it
Jetifier performance
improvements
Released in AGP 4.1.0
Slide 73
Slide 73 text
Jetifier - please kill it
Slide 74
Slide 74 text
No content
Slide 75
Slide 75 text
Stuck on the Jetifier?
Slide 76
Slide 76 text
plugins {
id "com.github.plnice.canidropjetifier" version "0.5"
}
Can I drop Jetifier?
./gradlew -Pandroid.enableJetifier=false canIDropJetifier
Slide 77
Slide 77 text
Jetify At Home
./jetifier-standalone -i -o
https://developer.android.com/studio/command-line/jetifier
Slide 78
Slide 78 text
Jetify At Home
Upload to nexus
Slide 79
Slide 79 text
Update Dependencies
Slide 80
Slide 80 text
No content
Slide 81
Slide 81 text
Update All The Things
⬢ Gradle 6.7
⬢ Android Gradle Plugin 4.1.1
⬢ Gradle Enterprise Plugin 3.5
⬢ Kotlin 1.4.10
⬢ Third party plugins
⬢ Third party libraries
Stable File Watching
Caching Improvements
Task Configuration Avoidance
Compressed scan upload
Incremental Annotation Processors
Fixes for caching bugs
Slide 82
Slide 82 text
Update All The Things
plugins {
id "com.github.ben-manes.versions" version "0.33.0"
}
./gradlew dependencyUpdates -Drevision=release
https://github.com/ben-manes/gradle-versions-plugin
Idiomatic Gradle
./gradlew :my-other-project:sub:foo
Executing Tasks From Included
Builds
https:///docs.gradle.org/6.7/release-notes.html#other-new-features-and-usability-improvements
Slide 119
Slide 119 text
More Resources
Slide 120
Slide 120 text
Gradle Training
https://gradle.com/training/
https://gradle.com/training/introduction-to-gradle
https://gradle.com/training/build-cache-deep-dive
Slide 121
Slide 121 text
Gradle Community Slack
https://gradle.com/slack-invite
Slide 122
Slide 122 text
Benchmarking Builds with the Gradle
Profiler
Tony Robalik
https://dev.to/autonomousapps/benchmarking-builds-with-gradle-
profiler-oa8
Slide 123
Slide 123 text
Understanding, Profiling, and
Optimizing Gradle in Android Builds
Nate Ebel
https://goobar.io/understanding-profiling-and-optimizing-gradle-in-
android-builds/
Scaling Android Builds in Pandemic
Times
Inaki Villar
3:00pm PST - Nov 17th
https://www.online.droidcon.com/americas-speaker/inaki-villar
Slide 130
Slide 130 text
Android Builds At Scale
Zac Sweers, Chiu-Ki Chan, Israel
Ferrero Camacho, John Rodriguez, Ivan
Gavrilogic
1:10pm PST - Nov 17th
https://www.online.droidcon.com/americas-panels-workshops