Presented at Londroid on 2025.01.16
This presentation explores strategies for managing and extracting common build logic across different project phases, from pre-compiled scripts to convention plugins and defining your very own custom DSL to hide away the complexity of third party dependencies and plugins.
Footnotes:
[^1]: This presentation will focus on Gradle as a build tool.
[^2]: https://blog.gradle.org/declarative-gradle#software-definition-vs-build-logic
[^3]: Always consider the stage of the project. Just as to any approach there are always caveats.
[^4]: https://github.com/cdsap/ProjectGenerator
[^5]: https://docs.gradle.org/current/userguide/sharing_build_logic_between_subprojects.html#sec:convention_plugins_vs_cross_configuration
[^6]: https://docs.gradle.org/current/userguide/implementing_gradle_plugins_precompiled.html
[^7]: Unless you use `--no-rebuild`
[^8]: https://docs.gradle.org/current/userguide/sharing_build_logic_between_subprojects.html#sec:using_buildsrc
[^9]: https://medium.com/proandroiddev/stop-using-gradle-buildsrc-use-composite-builds-instead-3c38ac7a2ab3
[^10]: https://developer.android.com/build/releases/past-releases/agp-8-0-0-release-notes
[^11]: https://developer.android.com/reference/tools/gradle-api/8.0/com/android/build/api/dsl/SettingsExtension
[^12]: https://github.com/anthonymonori/sample-gradle-project/pull/1/files
[^13]: https://developer.squareup.com/blog/herding-elephants/
[^14]: https://github.com/android/nowinandroid
[^15]: https://github.com/slackhq/foundry