Here is a question I always asked myself. What if someone was coming to me and ask me what do I recommend an Android Developer to know. I decided to write this article to answer that question.
In terms of programming language, any Android developer should know Kotlin since Google has officially adopted it. Kotlin introduces a lot of features that java doesn’t have. Like Null safety, extension functions, and more. You should check those feature comparison here. Also, here is why you should learn Kotlin.
There are many approaches to architecting your Android apps like MVP, MVVM, MVI. I use MVP.
Not more than two years ago, I was still using:
- RxJava: It is a Java VM implementation of reactive extension. A library for composing asynchronous and event-based events by using observable sequences.
- RxAndroid, which is an extension of RxJava providing schedulers to run code on Android Main thread and Android handler classes.
When I switched to Kotlin, I added RxKotlin dependency in my project. RxKotlin is an extension of RxJava written in Kotlin. It adds convenient extension functions to RxJava.
Nowadays, there is no more Rx dependency in my project, and I only use Coroutines.
When it comes to network calls, I recommend using Retrofit. Retrofit is a Type-safe HTTP client for Android and java. It is easy to use and works well with Rx and Coroutines. I combine Retrofit with Moshi to parse JSON response into Kotlin objects.
Image loading and Caching:
You see the necessity of having a dependency injection framework when you see your project take a particular volume. Before, I was using Dagger2, but now that my code is 100% Kotlin, I use Koin, which is a lightweight dependency injection framework for Kotlin developers written in pure Kotlin. Some of my coworkers use Kodein. Some developers still use Dagger2.
I recommend using TDD in our daily development. One of the significant advantages of using TDD, is that we have separation of concerns, we don’t write more than we should when implementing a functionality. TDD helps decouple your code.
It will be advantageous to know how to configure the build. So, when it comes to build your project, automate and deliver App faster, learn Gradle. Here is a useful documentation on how to configure your build in Android.
There is probably a lot more to add, but I think this is a good set.
Thanks a lot for reading.