Whats new in Jetpack 2021
Android Jetpack is a suite of libraries, it help the developer to reduce boilerplate code, and write code that works consistently across Android versions and devices. Today, 84% of the top 1000 apps on Google Play rely on Jetpack.
Stable Libraries
CameraX
The CameraX library provides a unified API surface for accessing camera functionality across OS versions, including device-specific compatibility fixes and workarounds.
Improvements to the library
Address common feature requests, including support for adjusting exposure compensation and access to more detailed information about camera state and features. Additionally, camera settings like FPS range can now be changed via Camera2Interop while the camera is running.
New features
- Including high-dynamic-range preview
- Zoom ratio controls, and support for Android’s Do Not Disturb mode.
- Most importantly, though, the library has continued to address performance, resulting in faster image capture and faster initialization, especially on older devices.
Hilt
- Hilt is Jetpack’s recommended dependency injection solution built on top of Dagger.
- As part of the transition to stable, Hilt’s ViewModel support has moved up into the core Hilt Android APIs and SavedStateHandle has been added as a default dependency available in the ViewModelComponent.
- Also, Hilt is now integrated with Navigation and Compose: you can obtain an annotated Hilt ViewModel that is scoped to a destination or the navigation graph itself. Developers have already started using Hilt in their apps. Read about their experience in this blog post.
Paging 3.0
The Paging library allows you to load and display small chunks of data to improve network and system resource consumption. This release features a complete rewrite in Kotlin with first-class support for coroutines and Flow, asynchronous loading with RxJava and Guava primitives, and overall improvements to the repository and presentation layers.
The 3.0 release is a substantial improvement in usability over Paging 2, and the rewrite was planned with partial and staged migrations in mind so that developers can transition on their own schedules. Check out the Paging 3.0 documentation and the Paging 3.0 codelab for details and hands-on experience.
ConstraintLayout and MotionLayout
ConstraintLayout
, Jetpack’s flexible system for designing layouts, and MotionLayout
, an API aimed at managing motion and widget animation, are now stable. MotionLayout
now includes support for foldable devices, image filters, and motion effects. To find out more about what’s new in design tools, check out this Google I/O talk.
Jetpack Compose
Jetpack Compose is Android’s modern toolkit for building native UI. It simplifies and accelerates UI development on Android
Fragment
Improvements to the library, like supporting multiple back stacks in Navigation, and it may require some work to accommodate strict enforcement of API contracts. In practice, you should pay careful attention to your tests after updating the library. Check out the Fragment release notes to see specific cases to watch out for.
Recent releases have also introduced ActivityResult
integration, making it possible to register for Activity
results from a fragment. Fragment has also added a new FragmentOnAttachListener
interface to replace the less-flexible onAttachFragment
method. Existing code that overrides this method in Fragment
or FragmentActivity
will still work, but we’ve deprecated onAttachFragment
to help prevent new code from accidentally adopting a less-flexible approach.
Room
Room is the recommended data persistence layer, providing increased usability and safety over the platform.
Room 2.4.0-alpha brings support for auto-migrations. When your database schema changes, you now declare an @AutoMigration
Room has also introduced a QueryCallback
class—which provides a callback when SQLite statements are executed, to simplify tasks like logging—as well as the new @ProvidedTypeConverter
annotation, which allows more flexibility when creating type converters.
WorkManager
The WorkManager library — Android’s recommended way to schedule deferrable, asynchronous tasks that run even if the app exits or the device restarts — has made improvements to reliability with task reconciliation, ensuring all tasks are executed, and a variety of workarounds for specific Android OS versions.
The latest versions of WorkManager feature improved support
multi-process apps, including performance benefits from unifying work request scheduling to a single process and limiting database growth when scheduling many requests.
Navigation
The Navigation library, Jetpack’s framework for moving between destinations in an app, now provides support for multiple backstacks and simplifies cases where destinations sit at the same depth, such as a bottom navigation bar.
EmojiCompat
All user-generated content in your app contains 🎉, and supporting modern emoji is a key part of making your app ✨! The EmojiCompat library, which supports modern emoji on API 19 and higher, has moved to a new artifact :emoji2:emoji2
, which replaces the previous :emoji:emoji
artifact.
Macrobenchmark
The Macrobenchmark library extends Jetpack’s benchmarking coverage to app startup and integrated behaviors like scrolling performance.
Form factors
Jetpack makes it easier to work with different form factors, including foldables, large screen devices, and Wear devices. We’ve introduced new guidelines for large screen development along with improvements to Jetpack libraries such as WindowManager
and SlidingPaneLayout
. Read all the details in this blog post.
Source: Jetpack