Mohamed Gamal

Modular Secrets to Lightning-Fast Android Builds

What if you could stop unnecessary recompilations? Learn the modularization patterns that unlock lightning-fast Android builds and boost developer efficiency.

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.
tree-IT GmbH

tree-IT GmbH
Bad Neustadt an der Saale, Germany

54-80K
Intermediate
Senior
Java
TypeScript
+1

Featured Partners

Related Articles

View all articles
Daniel Cranney
Dev Digest 188: CfP time, the risks of NPM and IKEA algorithms
Inside last week’s Dev Digest 188 . 🤖 GitHub Copilot CLI is now in public review 💻 Microsoft is bringing ‘vibe working’ to office apps 🎣 Attackers abuse AI tools to generate captchas in fishing attacks ⚠️ When LLMs autonomously attack 🧠 Common cause...
Dev Digest 188: CfP time, the risks of NPM and IKEA algorithms

From learning to earning

Jobs that call for the skills explored in this talk.

Android Developer

Coretek Labs
Menlo Park, United States of America

$145K
XML
GIT
Java
REST
+2
Android Developer

Coretek Labs
Palo Alto, United States of America

$145K
XML
GIT
Java
REST
+2
Android Developer

Coretek Labs
Mountain View, United States of America

$145K
XML
GIT
Java
REST
+2
Lead Android Dev

GlobalLogic
Alpharetta, United States of America

$135-140K
Senior
MVC
GIT
Java
JIRA
+8