Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Android Architecture for Polyamorous Developers

Avatar for Moud Moud
September 21, 2018

Android Architecture for Polyamorous Developers

Productivity can be greatly affected by the way we build our apps. And today the natural way of doing so is through the single module “app” where software components become strongly coupled overtime, making building, testing or even writing code, harder and slower.

To overcome these issues, we've looked at several solutions. And finally we’ve opted for an approach based on the plugin architecture, widely adopted in C++ ecosystem for years now. This approach also leverages the powers of multi-module builds, by creating as many small modules as possible as suggested by Gradle founder Hans Dockter.

In this talk we'll be happy to share with you our never ending journey of gradually transforming a monolithic 5 years old app into pluggable and reusable modules, while maintaining its periodic releases downloaded by millions.

Avatar for Moud

Moud

September 21, 2018
Tweet

More Decks by Moud

Other Decks in Technology

Transcript

  1. “Mother earth is pregnant for the third time, for y’all

    knocked her up” Maggot Brain Funkadelic Maggot Brain
  2. Clean Architecture Single Module with VIPER Three modules with MVP

    Hexagonal architecture Onion architecture
  3. Version name and code ApplicationId in library modules ButterKnife in

    library modules Assets in library modules Build variants
  4. Version name and code ApplicationId in library modules ButterKnife in

    library modules Assets in library modules Build variants
  5. Version name and code ApplicationId in library modules ButterKnife in

    library modules Assets in library modules Build variants
  6. Version name and code ApplicationId in library modules ButterKnife in

    library modules Assets in library modules Build variants
  7. Version name and code ApplicationId in library modules ButterKnife in

    library modules Assets in library modules Build variants
  8. Error Error:Cannot choose between the following configurations of project -

    debugApiElements - debugRuntimeElements - releaseApiElements - releaseRuntimeElements
  9. :home :search :navigation :home-presentation :home-remote :home-database :home-domain ... ... ...

    :home-ui-original :home-ui-variant-1 :home-ui :home-ui-variant-2
  10. Psst, we’re hiring l.vpgrp.io/android-jobs Gaël Jestin Android Engineer @WangLi974 Mahmoud

    Bhaya Android Engineer @bym0ud @ventepriveeTech l.vpgrp.io/playlist