Sitemap
Ramadan Sayed

Ramadan Sayed

Software engineer, 9 years in. I write about the parts of software nobody documents — and whatever else I can't stop thinking about.

Member-only story

Android Modularization Part 12: Release Engineering

14 min readOct 3, 2026

R8 full mode, consumer keep rules, and the configuration-cache failure that only appears in release.

Android Modularization & Build Engineering Series — Part 12 of 12

Everything in this series has been about the build you run a hundred times a day. This final part is about the build you run once per release — the one where the mistakes are expensive, the feedback loop is measured in days, and the failure modes are ones you’ve never seen because they only exist in the release variant.

Release builds are where modular projects break in ways debug builds never reveal. R8 runs across the whole app for the first time, and a keep rule missing from one module’s consumer-rules.pro strips a class that only that module's reflection path needs. Obfuscation tooling runs on the full merged output and can fail in ways that don't reproduce on any individual module. And the configuration cache — which has been working perfectly for months — throws a deserialization error in the release variant only, because a plugin that only applies to release builds captured something unserializable.

This article covers all of it, and then closes the series with an audit that pulls together every checkpoint from Parts 1 through 11.

Press enter or click to view image in full size

--

--

Ramadan Sayed
Ramadan Sayed

Written by Ramadan Sayed

Software engineer, 9 years in. I write about the parts of software nobody documents — and whatever else I can't stop thinking about.