Split the Rocket.Chat.Android app in discrete units of functionality with one android app module and several library modules (android libraries or java libraries), using the multi-module architecture (1).
Decoupling units of functionality will allow:
For vendor-specific developers
- Create different android app modules: Easier to build custom rocket.chat android apps, keep the Rocket.Chat library modules in sync with the Rocket.Chat repo, create custom modules, or extend existing modules.
For Rocket.Chat.Android developers
- Develop, build, test independently each module
- Typical benefits decomposition: smaller pieces of functionality, easier to understand, strong module boundaries, reduce coupling and increase cohesion, …
- Speed up build time (2) and (3)
- Speed up app’s start time with module lazy loading (4)
- Create different android app module types: Phone & Tablet Module, Wear OS Module, Android TV Module, Glass Module
1: “Developer Android Modules” https://developer.android.com/studio/projects/#ApplicationModules
2: “How modularization can speed up your Android app’s built time” https://medium.freecodecamp.org/how-modularisation-affects-build-time-of-an-android-application-43a984ce9968
3: Google “Modular Architecture for faster Build Time by Hazem Saleh” (sorry I cannot add more links to this post)
4: Google “App modularization and module lazy loading at Instagram and beyond” (sorry I cannot add more links to this post)