[AUDIO LOGO]
[MUSIC PLAYING]
SPEAKER: Welcome to Now in Android,
your ongoing guide to what's new at notable in the world
of Android development.
In this episode, we're covering the new developer-powered CTS,
Compose library versioning, stability,
and animated content, coroutine test migration, intent filters,
and a bunch of stuff from Google Play and Android X.
The Compatibility Test Suite, or CTS,
is being enhanced with CTS-D, a new test
suite that is built and run by developers
in the community like you.
You can build and contribute test cases
to CTS-D to help catch pain points
that you are seeing in the field,
places where a device behavior doesn't match the Android
public APIs and the Android Compatibility Definition
document.
Anyone can run the CTS-D Suite to verify compatibility,
since it's open source and available on AOSP.
If you're interested in learning more,
we have tutorials on contributing to and utilizing
CTS-D.
We announced that the various Jetpack Compose
libraries would move to independent versioning schemes.
And this all will start with the Compose Compiler,
because it is tightly coupled with the Kotlin version.
The Compose Compiler 1.2 brings support for Kotlin 1.7,
while being both backwards and forwards compatible
with the Compose UI libraries and the Compose Runtime
library.
You can upgrade your Compose Compiler to 1.2 stable
and use Kotlin 1.7 while leaving your other Compose libraries
at their current version.
And this is just the first step in decoupling
versioning for the different Compose library groups.
In the latest edition of Notes from Google Play,
we touched on the Play Integrity API, the Data Safety section,
the Privacy Sandbox in Android, and the newly launched Google
Play SDK Index, which provides data and insights
about over 100 of the most widely used commercial SDKs.
We covered new subscription capabilities
that allow you to create multiple base plans
and offers for each subscription,
as well as the option to lower prices starting
at the equivalent of $0.05 US to adapt to local purchasing
power.
We shared the story of OLIO, a community-driven app that
is fighting to reduce food waste;
began the Google Play Coffee Break
series with JimJum Studios, one of the finalists in last year's
Indie Games Accelerator and Indie Games Festival program;
and launched the #WeArePlay campaign that
celebrates the global community of people
behind apps and games.
We've introduced a new test in the Google Play prelaunch
report that runs accessibility checks on a device switch
to Dark theme.
Now, this can detect color contrast issues
that make it difficult to differentiate text
and icons from a background.
You can also use the screenshot generated during the test
to check that all elements in your UI
have Dark theme styling applied correctly.
The Performance Tips to Achieve App Excellence video
covered five app performance issues, along with the tools
that Android Studio and Google Play Console
provide to help you diagnose and troubleshoot them.
Now this week in Articles, Todd covered behavior changes
with intent filters in Android 13,
which now delivers intents that specify actions
and originates from external apps
to export a component if, and only if, the intent matches
its declared intent filter elements.
Rebecca covered using animated content
to transition between different composables
with a smoother and more custom transition effect.
Even the default behavior of animated content
can make a big difference to the look and feel of your app
without much effort.
Ben did a detailed exploration of how Compose determines
the stability of each parameter of your composable
to see what can be skipped during recomposition,
including using compiler reports to determine
what stability is being inferred about your classes.
For example, since collection classes like list, set, and map
are not guaranteed to be immutable,
using Kotlinx immutable classes or annotating your classes
as @Immutable or @Stable can allow
Compose to skip recompositions, and there's
lots more in the post.
kotlinx.coroutines 1.6 introduces
a set of new testing APIs, and the previous testing APIs
are now deprecated.
Marton talked about how we've migrated
some of our own samples to the new APIs,
covering a bunch of the necessary work for most Android
projects.
Now since the last episode of Now in Android,
there has been a lot of stuff that's
been released in AndroidX.
And here's what's newly stable.
Compose Compiler 1.2 now supports
Kotlin 1.7 and Independent Compose library versioning.
Lifecycle 2.5 has an awesome update
to add creation extras to the View Model Provider Factory
subclass.
And this simplifies gaining access to an application
or save state handle.
And we've also added the getStateFlow API
to save state handle and much more.
Activity 1.5 adds component dialog,
and this includes an on-back press dispatcher, as well as
modular callback interfaces and a stateless view model provider
factory and component activity.
Fragment 1.5 adds CreationExtras integration, component dialog
integration, and refactor saved instance state.
Navigation 2.5 provides a stateless view module provider
factory, requires AGP 7.0.4 for safe args,
and add support for the namespace build.gradle
attribute to be used instead of applicationID.
Camera 1.1 adds video capture use cases,
wide view to RGB conversion, rotation, multiwindow mode
support, a camera state API, JPEG output
for on-image captured callback, experimental camera filter
and exposure compensation APIs, and much more.
SavedState 1.2 has been rewritten
in Kotlin, which causes a few source incompatible changes.
But it allows early attachment of the SavedStateRegistry
via performAttach, and you can now
retrieve a previously registered savedStateProvider
from a SavedState registry by get savedStateProvider.
That's it for this time with CTS-D,
independent versioning of Compose libraries,
Compose stability, custom Compose animated content,
coroutine test migration, Android 13 intent filters,
and a bunch of stuff from Play and AndroidX.
Come back here soon for the next update from the Android
developer universe.
[AUDIO LOGO]
[MUSIC PLAYING]