We use Kotlin as a main programming language (~98%). Kotlin | Getting started
We use suspend
functions to write asynchronious code and *in a process of migrating
the code from using a LiveData
to using a Flow
. *
Coroutines | Getting started
Kotlin coroutines on Android
We use Dagger 2 to manage the dependency injection. Dagger | Tutorial
We use Data binding to bind models to views. In a newer code we also use the newer ViewBinding and plan to migrate to it. Data Binding
We use a bunch of Android X libraries where the most interesting of those are:
- Room database;
- WorkManager to manage background tasks;
- Play Core to provide different implmentations of the Map service for different countries;
- Lifecycle to help to manage the lifecycle of the screens +
LiveData
.
We use GSON to parse the JSON into models although we are aware that there are better solutions now (looking at Moshi & Kotlinx Serialization).
We use Joda Time to avoid using of Java 7's date time APIs.
We use retrofit to create network API interfaces. Retrofit | Getting started
We use okhttp to send network requests.
We use a bunch of Firebase libraries: remote-config, messaging, auth, crashlytics, performance, ml-vision (to parse QR codes);