Book Image

Clean Android Architecture

By : Alexandru Dumbravan
Book Image

Clean Android Architecture

By: Alexandru Dumbravan

Overview of this book

As an application’s code base increases, it becomes harder for developers to maintain existing features and introduce new ones. In this clean architecture book, you'll learn to identify when and how this problem emerges and how to structure your code to overcome it. The book starts by explaining clean architecture principles and Android architecture components and then explores the tools, frameworks, and libraries involved. You’ll learn how to structure your application in the data and domain layers, the technologies that go in each layer, and the role that each layer plays in keeping your application clean. You’ll understand how to arrange the code into these two layers and the components involved in assembling them. Finally, you'll cover the presentation layer and the patterns that can be applied to have a decoupled and testable code base. By the end of this architecture book, you'll be able to build an application following clean architecture principles and have the knowledge you need to maintain and test the application easily.
Table of Contents (15 chapters)
Part 1 – Introduction
Part 2 – Domain and Data Layers
Part 3 – Presentation Layer


In this chapter, we analyzed the exercises we've done in previous chapters and found potential issues with the dependencies that the modules of the application have. We looked at potential solutions for these problems. Then, we looked at a practical application of clean architecture, which is the implementation of instrumented tests, and how we can change the data sources of an application to ensure testing reliability. We looked at how we can implement instrumented tests using Jetpack Compose and Hilt to provide dependency injection, and then we applied them in an exercise in which we changed the dependencies for the tests. This serves as just one example of the benefits of clean architecture. Other benefits will come in situations where multiple flavors are used to publish similar applications and want to inject different implementations or configurations for each application we want to build. Another benefit comes when dealing with multiple platforms (such as Android...