Mohamed Gamal
Modular Secrets to Lightning-Fast Android Builds
#1about 2 minutes
The daily struggle with slow Gradle builds
Slow and failing Gradle builds are a common frustration for Android developers that can be solved with better project architecture.
#2about 3 minutes
How modularization enables incremental builds
Splitting a monolithic project into smaller, independent sub-projects allows Gradle to use incremental builds and only recompile what has changed.
#3about 3 minutes
Using `implementation` instead of `api` for dependencies
The `api` configuration leaks transitive dependencies to downstream modules, causing unnecessary recompilations, whereas `implementation` encapsulates them.
#4about 2 minutes
Breaking up generic "commons" modules
Generic "commons" modules violate the single responsibility principle and become a bottleneck for recompilation, so they should be split into smaller, feature-specific modules.
#5about 2 minutes
Splitting large feature modules for faster testing
Large, complex feature modules should be broken down into smaller submodules and paired with a dedicated sample app for faster, isolated testing.
#6about 1 minute
Using public API modules to reduce recompilation
For frequently changing domains, separate the stable public API with interfaces from the implementation to prevent cascading recompilations in dependent modules.
#7about 4 minutes
Removing dependencies with a navigation system
Eliminate direct module dependencies required only for navigation by implementing a centralized system using deep links or a custom navigator pattern.
#8about 5 minutes
Unifying build logic with Gradle convention plugins
Create custom Gradle convention plugins to centralize and reuse build configurations like Hilt, Detekt, and library settings across all modules.
#9about 2 minutes
Centralizing dependencies with version catalogs
Use a TOML-based version catalog to define all library versions and plugins in a single file, ensuring consistency and simplifying updates across the project.
#10about 2 minutes
Sharing version catalogs in a polyrepo setup
For projects spanning multiple repositories, create and publish a custom Gradle settings plugin to share a single version catalog and maintain dependency consistency.
Related jobs
Jobs that call for the skills explored in this talk.
Matching moments
03:20 MIN
Focusing on modularity over architectural labels
Monoliths: A love story
02:06 MIN
Considering the modular monolith for easier refactoring
Modularity: Let's dig deeper
04:02 MIN
Introducing the modular monolith as a practical alternative
Stairway to Heaven - Scaling Frontends the Right Way
08:13 MIN
Key strategies for improving build performance
Give your build some love, it will give it back!
06:13 MIN
Using modular design to isolate the consequences of decisions
Move fast with Software Architecture
06:35 MIN
Understanding Gradle as an extensible build automation tool
Give your build some love, it will give it back!
02:14 MIN
Key takeaways for adopting a modularity mindset
Modularity: Let's dig deeper
01:57 MIN
Conclusion: Focus on fundamentals beyond the hype
Microservices? Monoliths? An Annoying Discussion!
Featured Partners
Related Videos
Give your build some love, it will give it back!
Amanda Martin
Modularity: Let's dig deeper
Pratishtha Pandey
Build Delightful Mobile Experiences with Kotlin, Realm, and Atlas Device Sync
Timothy Marland
Optimizing Your App for Success: Tips and Techniques for managing slow devices
Milica Aleksic & Nemanja Petrovic
Scalable architecture for mobile apps
Nachiket Apte
Modulith Instead of Monolith - Pragmatically Towards Microservices
Hendrik Lösch
Challenges of building React and React Native apps
Milica Aleksic & Stefan Nikolic
Building Better Apps with React Native
Marc Rousavy
Related Articles
View all articles



From learning to earning
Jobs that call for the skills explored in this talk.




Aufmaster GmbH
Frankfurt am Main, Germany
Intermediate
Senior
GIT
Kotlin




Saby New Compy
Bielefeld, Germany
Intermediate
Java
Docker
Kotlin
Groovy
Node.js
+2
