I started developing Android seriously last year, but it took me a while to get to know the libraries that are used to breathe in product development without anyone telling me. This article summarizes the most popular libraries for those who are just starting out with Android development.
"Commonly used" is completely subjective.
Abbreviation for Android Architecture Components, one of the components of Android Jetpack
Here are some of the most frequently used libraries included in AAC.
Data Binding Library
A library that is literally used for data binding. I often use it for MVVM development. It is very convenient because you can bind objects to XML and bidirectional data binding with LiveData, which will be described later.
Manage the life cycle of Activities and Fragments. LifecycleObserver is very convenient because you can monitor the life cycle events of Activity and Fragment in other classes.
LiveData can be linked to the life cycle to notify you of value changes. I replaced the part that used Rx Subject to notify between layers with LiveData. It is also useful for bidirectional data binding.
Room provides an interface that allows you to use SQLite smoothly. I can't say anything because I haven't used it so hard.
ViewModel can manage UI related data in relation to the life cycle of Activity and Fragment. I think the context is a little different from the so-called MVVM ViewModel, but it is very useful for application development with MVVM. I use it a lot.
You can manage the transition of Fragment with XML. By installing a plugin called
safeArgs, it is convenient because you can easily define the passing of data between Fragments.
You can easily (?) Implement the usual infinite scrolling paging.
I often see configurations like ʻokhttp + retrofit + RxJava (RxKotlin) + RxAndroid + moshi (gson) `. Recently, I often see asynchronous processing using coroutines.
It's the de facto standard. I can't live without this.
A library that handles REST nicely. Often used with okhttp.
It seems that Jackson was used a long time ago?
Made by google. I often see it. I use Deserializer for complex requirements such as when I have to write it myself.
Made of square. Recently, I use this exclusively.
It is indispensable for displaying images. I often see it.
I often see this one too. It seems that glide is used more physically.
You can write code in the paradigm of reactive programming. The learning cost is high, but it is very convenient to remember. It's easy to think of it as a library for asynchronous processing. Recently, I feel the trend of replacing it with other technologies, but it is still used in various places, and personally it is quite painful without this.
A Kotlin extension for RxJava. If you use Rx with Kotlin, let's introduce it.
It is indispensable for asynchronous communication with RxJava in Android development.
It's too popular these days and I'm scared. But it's certainly convenient.
Made by airbnb. You can easily build a complex RecyclerView. It is easy to use with Data Binding. Good compatibility with other airbnb libraries such as MvRx.
A wrapper for android.util.Log. Nobody tells me, but everyone uses it (subjective). You can switch functions depending on the build type.
Made of reliable and proven square. Detects and notifies you of memory leaks in your app. I feel that it is used as a matter of course.
If you bite into okhttp, you can see communication logs etc. in Chrome. Very convenient.
Made by Facebook. It can also be used on platforms other than Android. I've never seen anyone using it. Is it good with stetho?
You can do various things. For details, see this article.
Abbreviation for Dependency Injection. It's taken for granted these days. Reference
Made by google from square. It is used insanely. I think the learning cost is quite high.
DI library for kotlin implementation. The name recognition is rising and I feel the momentum. I like it because it's easier to understand than dagger.
A mocking framework. There is a feeling of de facto.
A mocking library for kotlin implementations. I've come to see it recently.
Assertion library made by Google. It seems that it is also adopted in the Android X test document.
A library that makes it easy to handle dates on Android. Nobody tells me, but it's very convenient and many people use it.
--I strongly feel the flow of Java-> Kotlin (such as koin) ――In recent Android development, it is necessary to learn things with high learning costs such as dagger and Rx, and I think that the threshold to start development is high. ――Please let us know if you have a library like "Everyone is using this!"