Recommended libraries on Android
Whether you are just starting out or already have a career in the world of development in android, maybe some of the libraries that I am going to be mentioning below will help you.
Keep in mind that it is a personal opinion and some developers may even put another library / tool not mentioned in this article above the ones I offer as the most useful.
Each one has its pros and cons. The use will depend more than anything on the type of application in which you want to use it. It is not the same to put a performance monitoring library for http calls in an application that does not even connect against a rest api, than one in which it is very important to keep performance controlled in order to find possible errors in your backend if there are every kind of calls at all times around the flow in your application.
Kotlin (https://kotlinlang.org/)
To begin with, it is not a library but it is a tool. Use Kotlin whenever you can!
Today it is the official programming language for Android and it has several advantages over its "predecessor", Java (it would be rather an improvement on how it works since they are based on the same JVM ).
The biggest advantage is that it is a language designed to be able to do things in a simple way, reducing the code that is needed to have something working. In this way, it is not only easy for a programmer to make a feature but also because it is less code and above all clearer, a reviewer will be able to concentrate more on functionality at a glance.
Retrofit 2 (https://github.com/square/retrofit)
Super recommended library for handling http calls against APIs. It is super simple to implement and allows us access to calls through an interface that you can create yourself super easy. It has some annotations to define types of calls (GET, POST), parameters that are sent either in the body, headers, query params.
Let you select the preferred serialization tool (Gson, Jackson, etc) or even create some custom converters if necessary.
And above all, it has a very active community behind it that provides constant support to the library. Something super important when selecting a third-party library to put an application into production.
Firebase performance plugin (https://firebase.google.com/docs/perf-mon/get-started-android)
A very useful plugin within Firebase libraries that allows you to control the times used to connect to different external resources.
Super important if you want to keep the integration with servers under control to find performance problems and take action on the matter effectively.
Firebase crashlytics (https://firebase.google.com/docs/crashlytics)
A library that today should be something that has to be incorporated into 90% of mobile applications (or at least 100% applications on Google Play store or even any available store). It is a monitoring tool for crashes and ANR (Android not responding) issues.
When leaving your application in production, you are always vulnerable to not having any kind of indicator or feedback on what may be happening in our clients' applications.
That changed a couple of years ago anyway when Google/Firebase joined/bought Fabric to get the best of both worlds between the two tools.
It also has a feature that is generally unknown or little used by many developers that allows sending "warnings" or non fatal errors to crashlytics in order to identify rare or dangerous situations that, although they do not lead the application to a crash, are situations that should not never or hardly ever happen.
Room (https://developer.android.com/topic/libraries/architecture/room)
Library dedicated to abstracting the SQLite implementation on Android to avoid a lot of boilerplate and headaches.
It is already a standard, let's say for a few years, and used together with the MVVM pattern for persistence (if needed) makes it super practical for data management in relational databases.
Glide (https://github.com/bumptech/glide)
The best library for managing images (whether local or remote) that I had the pleasure of coming across. At the time (a couple of years ago) I tried several of the main ones available and this was the simplest and the one that added the least kilobytes to our application. The latter may have changed over time, but what I can say is that it still works perfect for image loading, caching and even has some features to round out images and cropping.
Proguard (https://developer.android.com/studio/build/shrink-code)
Although it is a tool included in the android package, it is generally little used by developers. Even less used in large applications (because developers does not usually spend enough time analyzing the conflicts that it is throwing during the build process)
What is it? Well, basically it is a tool to be able to compress code (or obfuscate) to help the application have less weight in kb and it even gives us a hand to try to keep some stuff hidden and maybe make life harder to people try to steal our code (at least if it is not open source code)