Android Tech Stack Overview
Article Summary
Wahib-Ul-Haq from Freeletics opens the vault on the complete Android tech stack powering four production fitness apps. This is the kind of transparency engineering teams rarely share publicly.
Freeletics manages four separate Android apps (Bodyweight, Running, Gym, and Nutrition) that collectively serve millions of users. The team shares their entire tech stack, from build tools to third-party libraries, including what they're actively replacing and why.
Key Takeaways
- Replacing Guava with IxJava and Arrow to reduce monolithic dependencies
- RxJava ecosystem (RxAndroid, RxBinding, RxRelay) powers reactive architecture
- Moving away from DaggerMock as newer Dagger versions solve same problems
- Always compile with latest Android SDK, Gradle, and Support Library versions
- Five criteria for evaluating third-party libraries: community size, longevity, license, maintainers, battle-testing
A production-tested Android stack spanning 40+ libraries with honest insights about what's working, what's being replaced, and the decision framework behind each choice.
About This Article
Freeletics had to maintain four separate Android apps (Bodyweight, Running, Gym, Nutrition) while keeping up with Android's constant changes and avoiding technical debt from outdated dependencies.
The team decided to keep Android SDK, Gradle, and Support Libraries current (SDK 25.0.2, Gradle 2.3.1, Support 25.1.1) and replaced heavy libraries like Guava with lighter options such as IxJava and Arrow.
They adopted Java 8 in the Bodyweight app and built a stack of 40+ libraries they knew worked well, with clear rules for adding new ones. This kept their apps fast, able to scale, and ready for new Android APIs without slowing things down for users.