The Android support libraries are used in almost all android applications to overcome the compatibility issues across different Android OS versions and devices. These libraries also facilitate users to add various kinds of updated widgets in the application. Over time, these libraries are updated according to the latest android versions. The problem starts here, the name given to these support libraries are supposed to indicate which Android version is supported by them, for example, com.android.support:support-v7 and com.android.support:support-v13. However, writing version number at the end does not fulfill its purpose because as the libraries have evolved, the minimum version of Android API level increased to 14. Developers also find these names confusing as one cannot say that which all classes are included in a particular library just by looking at its name.
After realizing these challenges faced by the developers, Google launched Android Jetpack in 2018. The existing Support libraries, android architecture components are brought together with an addition of the Android KTX library as a single modular entity and is termed as Android Jetpack. So, Jetpack is nothing but a set of software components, libraries, tools, and guidance to help in developing great Android apps.
Key Benefits of Android Jetpack
- Forms a recommended way for app architecture through its components
- Eliminate boilerplate code
- Simplify complex task
- Provide backward compatibility as libraries like support are unbundled from Android API and are re-packaged to androidx.* package
- Inbuilt productivity feature of the Kotlin Integration
Android Jetpack Components
The software components of Android Jetpack has been divided into 4 categories:
These all components consist of a wide collection of libraries that are built in a way to work together and make robust mobile applications. A brief explanation of each component is given below.
The core system components of android apps reside in the Foundation area of Jetpack. Kotlin extension for the language support and Testing libraries are also present in it. Moreover, backward compatibility is provided from the libraries present in this component. Following are the list of all foundation components:
- AppCompat: All the components of the v7 library like RecyclerView, GridLayout, CardView, etc are included in the AppCompat library. Further, it contains material design user interface implementation support which helps in degrading the older versions of android.
- Android KTX: This library includes a set of Kotlin extensions that are designed to write concise code and to make the development process smooth when developers use Kotlin language for making apps.
- Multidex: Multidexing capability of Android play a vital role once the number of methods across all classes in an application rise above the mark of 65,536. The system split the classes and make their zip file termed as .dex file. Multidex component provides support for collective dex files of an application.
- Test: This part includes the Espresso UI testing framework for the runtime UI test and AndroidJUnitRunner for the purpose of unit testing in Android.
This component of Android Jetpack consists of eight libraries and tools that are responsible for building robust and maintainable applications. This component also helps in the proper management of data used by the app as well as in designing app architecture patterns. Following are the components of this area:
- Data Binding: Provide the facility to bind the application data with the XML layout. Data Binding is very helpful in updating the data of Views dynamically.
- Lifecycles: This library manages the activity and fragment lifecycle in the application and also helps in listening to lifecycle events of other components.
- LiveData: Notify the View and automatically updates the UI when there is a change in the database.
- Navigation: Contains all required resources for in-app navigation. With the help of an in-built navigation viewer in Android Studio, developers can visually design the navigation between activities and/or fragments.
- Paging: Load data gradually in the RecyclerView of the application from the data source.
- Room: This library ease the process of accessing the SQLite database in the android application. The Room also performs a compile-time check of SQL code written to perform queries.
- ViewModel: Facilitates the management of data related to UI in a lifecycle-aware manner. Further, it also re-constructs the Activity or Fragment during any configuration change like device rotation.
- WorkManager: Solves the issue of writing different code for managing background tasks in a different version of Android.
This area of android jetpack covers those libraries that enable users to interact with the application through the UI. This component integrates the standard Android services like notification, downloading, permissions, sharing, assistant, etc. Behavior components are as follows:
- DownloadManager: Helps in downloading files in the background. It self manages and resolves the issues like connection loss, retrying, and system reboots while downloading happens.
- Media & Playback: This library includes the MediaPlayer and AudioManager classes. Moreover, it provides the backward compatible APIs for media playback.
- Permissions: Responsible for providing compatible APIs required for checking and requesting in-app permissions.
- Notifications: It provides API used in the notification and is backward-compatible in nature.
- Sharing: Facilitates sharing and receiving of information/content with other apps. It provides a suitable share action for an application’s action bar in order to share the data.
- Slices: Helps in creating UI elements that are flexible in nature and enables data sharing outside the app.
It includes widgets, animations, palettes, etc to improve the user experience. It also provides up-to-date emoji fonts to be used in the apps. Following are the libraries included in this component:
- Animation & Transition: Contains APIs to set up the transition between screens and animations while moving widgets as well as to visualize updates in layout.
- Auto: It includes components for the development of apps for Android Auto. These apps can be tested on the car screen using Desktop Head Unit(DHU).
- Emoji: All kinds of emoji fonts and characters are handled by EmojiCompat. This library keeps the apps updated with the latest emojis.
- Fragment: It is the fragment support class that includes the unit of composable UI such as ListFragment, DialogFragment, and PreferenceFragmentCompat.
- Layout: Contains information regarding the declaration of different kinds of layouts like LinearLayout, RelativeLayout, ContraintLayout.
- Palette: This library allows developers to create a palette and select different colors with the help of Palette.Builder class. Moreover, it helps in pulling the colors from themes and images to make UI compatible with the images present on the screen.
- TV: It includes components for the development of Android TV applications.
- Wear: Contains libraries and classes for the development of applications for wearable Android devices like a smartwatch.
What’s new is there in Android Jetpack
- WorkManager: A powerful new library that provides modern APIs that manage background jobs that need guaranteed execution without writing different code for a different version of Android.
- Navigation: Framework for structuring the in-app UI and to see and manage the navigation properties visually.
- Paging: Easy and effective way to load and present large data sets fast and with infinite scrolling in the RecyclerView. Developers can explicitly define how to load the contents.
- Slices: A very new feature that enables to display of the app’s UI inside the search result of Google Assistant.
- Android KTX (Kotlin Extensions): Transform multiple lines of Kotlin code to a single line which improves the productivity of developers using Kotlin language.