Writing your own Gradle Plugin: A Deep Dive
summary
Recommends using compileOnly imports for plugin dependencies plus a solid test suite (Dependency Analysis plugin cited), avoids hardcoded task names and cross-project task peeking, and prefers Gradle's file‑based task wiring over always using dependsOn. Explains configurations and variant attributes (use the implementation configuration carefully), notes Gradle 8.4 adds clearer APIs, and shows how artifact transforms (extracting classes.jar from AAR) let a JVM test tool like Paparazzi consume Android artifacts so Compose tests work off the JVM.
AI-written summary · about
chapters (30)
- 0:00Gradle plugin introduction
- 1:06Gradle plugin setup
- 2:08Android convention plugins
- 3:56Config in convention plugins
- 4:59Subplugins for convention
- 6:24Cross-project pitfalls
- 7:27Declarative Gradle benefits
- 8:31Task wiring in plugins
- 10:16Task dependency rules
- 12:22Anti-patterns in task deps
- 13:23Gradle configurations
- 15:54Dependency declarations
- 16:55How deps resolve
- 18:19Exposing artifacts
- 20:04Gradle variants
- 21:52Consumer configurations
- 22:34Matching variants
- 24:17Diagnosing variant errors
- 25:19Android to JVM modules
- 27:24Plugin walkthrough
- 28:47Producer/consumer tasks
- 31:56Aggregating subproject outputs
- 32:57Tasks across hierarchy
- 34:20Refactor to implementation
- 36:05Artifact views filter
- 37:50Self-dependency handling
- 38:55Extensible plugin design
- 39:18Consolidate build logic
- 39:59Plugin author best practices
- 40:40Learning resources
related talks
56mDeep Dive into the Android Gradle Plugin
33mUnderstanding Gradle and writing your own Gradle Plugin
32mGradle Convention Plugins
39mAndroid Gradle Plugin internals
26mGoodness, Gracious, Great Builds of Gradle
32m5 ways to improve your Android build productivity
36mMusical Chairs with Gradle: Surviving the Build Party
34mWhat's new with the Android Gradle plugin
