Discovering how we are using Dependency Injection to resolve some headaches and apply separation of concerns.

Greta, our fluffy rabbit 🐰

👉 Check the related demo project of our architecture in this GitHub repository 🚀

When you try to build a modern & scalable multi-modules application on Android, navigation is a problem that we all had to confront. For example on our BackMarket app, we currently have 80 modules and it still growing. The navigation between all those modules has been a major issue we had to resolve quickly.

At first, in order to navigate through a feature module, we tried multiple approaches:

How to inspect all HTTP & HTTPS requests from any app?

Our living room, to explore HTTP requests in a cozy place.

When you’re developing an Android app, it’s sometimes necessary to exactly debugging what’s going on behind the scenes, especially for network requests (HTTP & HTTPS).

Some powerful debugging tools already exist and they do amazing work, like Stetho, Retrofit’s Interceptors, or Android Studio Network Profiler. Also, they can be added/configured to your project pretty easily 👌.

How to make material design transitions between two screens?

When you build an Android app, user experience is something that really matters. However, animations & transitions can really be a pain to implement in Android.

In this article, I will share with you my feelings about the implementation of this animation between two screens, called in Material Design a “Hierarchical transition” :

A Journey Looking For The Perfect Design

The Android landscape has so changed over the years, especially those two last years (thanks to Kotlin & Jetpack), and that’s pretty a good thing.

Today, Google seems to finally give us a pretty clear direction of how we should start to design our Android apps.

In a few words: multi-modules & MVVM.

The purpose of this article is not to present in detail each concept (MVVM, Coroutines, LiveData, etc…), but rather to share with you an overview of what could be a robust and scalable architecture in Android.

Disclaimers: This will be a long journey…✈️

Table of Contents

Paging Library, Retrofit, Coroutines, Koin & Testing.

Those last days, I really wanted to create an application around the Android Paging Library, especially with Retrofit. Pagination is a feature quite famous in our world, but not so easy to implement.

So I decided to build a showcase app that will fetch developers from Github, with pagination, depending on the user’s search. I also chose to use those libs :

You can download the final debug APK directly on Github.

1. How does this app work?

Simplicity is the soul of efficiency

Recently, I created for fun a full project (backend/frontend + android app) written only with Kotlin: NoBullshit (you can read the related article right there).

However, the first release was using Dagger2 for dependency injection on the Android app: Not a very Kotlin way for this project…

So I decided to migrate it to Koin, a pragmatic lightweight dependency injection framework written in pure Kotlin and get a feel for what Koin is all about.

Installing Koin

I started adding the Koin dependency like below :

Extract from build.gradle

That’s it. Pretty light compared to Dagger2. Because Koin doesn’t use the annotation…

How to build a full project entirely with Kotlin? (backend/frontend + app)

After a long android freelance contract, and because I had some free days, I decided to dedicate myself into a full project entirely written in Kotlin, just to know how far I could go with this excellent language.

To concretize this full project, I chose to create a platform that helps developers find out the perfect jobs, selected and approved by other expert developers.

And because I’m currently looking for a remote position, this idea seemed pretty appropriate… 😅

I called it: NoBullshit. And it’s now open source 👻

Designing the Architecture

Simplicity is the soul of efficiency — Austin Freeman

Through my side project, CookMinute.

Let me give you some context. I have this side project, CookMinute, a French app helping people to eat better, which I started just after my MSD 4 years ago.

A lot of things have changed for Android developers since this dark and painful age.

This side project is being used by more and more people (40K today) from month to month, so I decided 5 months ago to entirely refactoring it, mainly because this project had those problems :

How to create beautiful AnimatedVectorDrawable with Sketch ?

UX/UI is one of the things I really love through my work. Actually, when you think about it, your users really don’t care about your code and how you’ve designed it : they only judge what they can see.

In this post, I will show you how to create an Animated Vector Drawable with two different tools, Sketch to prepare the assets and Shape Shifter to animate them.

1. Choosing an icon

First of all, you will have to choose an icon you want to animate. For this post, I decided to download this icon from in SVG format :

Demonstration with a simple networking app

As an Android developer, this year was really exciting and full of good news if creating robust and maintainable apps matters to you. The Architecture Components was really a game changer !

In this post, I will show you how to proper Unit Testing a simple existing Android app: RetroKotlin.

🖌A Little Word About The App

RetroKotlin, obviously written in Kotlin, is really simple: when MainActivity starts, a RxJava2 stream inside a ViewModel (UserViewModel) will fetch Jake Wharton’s Github data (represented by User model) before showing it through the screen, thanks to LiveData.

Philippe BOISNEY

Android Software Engineer @backmarket 📱🏡 💚

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store