Here you will find 42 guidelines that are used for creating good android applications. These guidelines cover: SOLID principles, design patterns, dependency injection tools like Dagger, and many more. These guidelines are formed in this article. In this article a mixed-method research is applied that combines: (i) semi-structured interviews with Android practitioners in the field, and (ii) a systematic analysis of both the grey (e.g., websites, on-line blogs, etc.) and white literature (i.e., academic studies) on the architecture of Android apps. Finally, a set of 42 guidelines for architecting Android apps is systematically synthesized from the obtained practices. The emerging guidelines are organized around 4 themes including the most adopted architectural patterns and principles when developing Android apps.[1] These themes include: MVVM, MVP, Clean, Generic.

Clean code

Clean code is when your code is understandable, has no code duplication, is testable and each class should have a certain responsibility. In a Clean architecture, the application is separated in layers. Where the inner layers do not know anything about the outer layers.


The MVVM pattern allows easy design changes and classes become more testable using this architecture. Where Model represents the datasource. This layer is accessed to update/store and retrieve the data. The View-Model exposes methods and variables for the view to use. The View uses the variables and methods from the View-Model to interact with the user.

Generic Practices

Using these guidelines, will not only improve user experience, but will also make your life easier as a programmer. Examples are: Dagger (dependency injection tool), using cache to improve user experience, and what to think about starting a new project. Click this button to read these guidelines.


The MVP pattern allows to separate the business logic from User Interface. Where model stands for the data-management. The presenter decides what is shown in the view. The view is where the framework is used to interact with the user.


  1. Verdecchia, R., Malavolta, I., & Lago, P. (2019). Guidelines for Architecting Android Apps: A Mixed-Method Empirical Study. In 2019 IEEE International Conference on Software Architecture (ICSA) (pp. 141–150). https://doi.org/10.1109/ICSA.2019.00023