Releases: mahozad/androidx-release-notes
2025-02-26
Activity: v1.10.1
February 26, 2025
androidx.activity:activity:1.10.1
, androidx.activity:activity-compose:1.10.1
, and androidx.activity:activity-ktx:1.10.1
are released. Version 1.10.1 contains these commits.
Bug Fixes
ViewTree
OnBackPressedDispatcherOwners
andFullyDrawnReporterOwners
can now be resolved through disjoint parents of a view, such as aViewOverlay
. See the release notes of core or the documentation inViewTree.setViewTreeDisjointParent
for more information on disjoint view parents. (Ie7750)
Camera: v1.5.0-alpha06
February 26, 2025
androidx.camera:camera-*:1.5.0-alpha06
is released. Version 1.5.0-alpha06 contains these commits.
API Changes
- Added
CameraInfo.getTorchStrengthLevel
,CameraInfo.getMaxTorchStrengthLevel
andCameraControl.setTorchStrengthLevel
to allow customizing the torch brightness (I00878) - A new API
CameraController#setTapToFocusAutoCancelDuration
has been added so that users can control the auto-cancellation behavior forPreviewView
tap-to-focus events. By default, CameraX cancels the focus events after 5 seconds (i.e. camera focus is reset) and this API allows to modify that duration or disable auto-cancellation altogether. (Icf59a) FLASH_STATE_READY
has been renamed toNOT_FIRED
and the otherFlashState
constant names are simplified for better readability. (I8771d)- Exposed Low Light Boost API. Devices running Android 15 or higher can provide support for low-light boost. This feature can automatically adjust the brightness of the preview, video or image analysis streams in low-light conditions. Applications can use the new API to: 1. Use
CameraInfo#isLowLightBoostSupported
to check the feature availability. 2. UseCameraControl#enableLowLightBoostAsync
to enable the mode when the devices can support it. 3. UseCameraInfo#getLowLightBoostState
to monitor the low-light boost state. (I937ed) - Add compat classes to allow faster non-camera2 querying in camera-feature-combination-query. (Ie97ee)
- For
CameraController
tap-to-focus events, a new APIgetTapToFocusInfoState()
now exposes the corresponding tap position too by returning aLiveData
ofTapToFocusInfo
class while the previousLiveData<Integer>
returninggetTapToFocusState()
API is deprecated in favor of the new API. (I238d2)
Bug Fixes
- Fixed the issue that preview stabilization is not applied when preview stabilization is enabled with Extensions. (I24ad7)
- Fixed
CameraController
focus state event not resetting back toTAP_TO_FOCUS_NOT_STARTED
when CameraX auto-cancels a focus event which happens after 5 seconds by default. (I31954) - Fixed preview freeze when using Zero Shutter Lag (ZSL) after multiple captures due to unreleased image resources. (Ic3c2a)
- Fixed issues that on some devices UHD videos are red tint when pipeline involves
OpenGL
. (Idcedc)
camera viewfinder: v1.4.0-alpha13
February 26, 2025
androidx.camera.viewfinder:viewfinder-compose:1.4.0-alpha13
, androidx.camera.viewfinder:viewfinder-core:1.4.0-alpha13
, and androidx.camera.viewfinder:viewfinder-view:1.4.0-alpha13
are released. Version 1.4.0-alpha13 contains these commits.
Collection: v1.5.0-rc01
February 26, 2025
androidx.collection:collection-*:1.5.0-rc01
is released. Version 1.5.0-rc01 contains these commits.
Compose Animation: v1.8.0-beta03
February 26, 2025
androidx.compose.animation:animation-*:1.8.0-beta03
is released. Version 1.8.0-beta03 contains these commits.
Compose Foundation: v1.8.0-beta03
February 26, 2025
androidx.compose.foundation:foundation-*:1.8.0-beta03
is released. Version 1.8.0-beta03 contains these commits.
Bug Fixes
- Added a new semantics property
InputText
that captures a textfield's value before output transformation is applied. (Iae46a, b/395911609, b/176949051) - Removed deprecated
AutoSize
overloads. Please use theTextAutoSize
APIs serving the same function. (I2c90f) - Fixed a caching issue with
TextAutoSize
where a second layout pass with the same constraints could result in using the second-biggest fitting font size instead of the biggest. (Id367f)
Compose Material: v1.8.0-beta03
February 26, 2025
androidx.compose.material:material-*:1.8.0-beta03
is released. Version 1.8.0-beta03 contains these commits.
Compose Material3: v1.4.0-alpha09
February 26, 2025
androidx.compose.material3:material3-*:1.4.0-alpha09
is released. Version 1.4.0-alpha09 contains these commits.
API Changes
- Rename
DragHandle
’s setting fields in the default state; separate pressed and dragged states; make the default sizes be public. (I787b9) - Updates to the
TowRowsTopAppBar
API. Removed theexpanded
lambda parameter and added separate parameters for the expanded and collapsed heights. (
2025-02-19
Media3: 1.6.0-beta01
February 26, 2025
androidx.media3:media3-*:1.6.0-beta01
is released. Version 1.6.0-beta01 contains these commits.
- Common Library:
- Upgrade Kotlin from 1.9.20 to 2.0.20 and use Compose Compiler Gradle plugin. Upgrade KotlinX Coroutines library from 1.8.1 to 1.9.0.
- ExoPlayer:
- Initial audio session ID is no longer immediately available after creating the player. You can use
AnalyticsListener.onAudioSessionIdChanged
to listen to the initial update if required.
- Initial audio session ID is no longer immediately available after creating the player. You can use
- Transformer:
- Add
MediaProjectionAssetLoader
, which provides media from aMediaProjection
for screen recording, and add support for screen recording to the Transformer demo app. - Add
#getInputFormat()
toCodec
interface. - Shift the responsibility to release the
GlObjectsProvider
onto the caller inDefaultVideoFrameProcessor
andDefaultVideoCompositor
when possible.
- Add
- Video:
- Add experimental
ExoPlayer
API to drop lateMediaCodecVideoRenderer
decoder input buffers that are not depended on. Enable it withDefaultRenderersFactory.experimentalSetLateThresholdToDropDecoderInputUs
.
- Add experimental
- Session:
- Keep foreground service state for an additional 10 minutes when playback pauses, stops or fails. This allows users to resume playback within this timeout without risking foreground service restrictions on various devices. Note that calling
player.pause()
can no longer be used to stop the foreground service beforestopSelf()
when overridingonTaskRemoved
, useMediaSessionService.pauseAllPlayersAndStopSelf()
instead. - Keep notification visible when playback enters an error or stopped state. The notification is only removed if the playlist is cleared or the player is released.
- Improve handling of Android platform MediaSession actions ACTION_PLAY and ACTION_PAUSE to only set one of them according to the available commands and also accept if only one of them is set.
- Keep foreground service state for an additional 10 minutes when playback pauses, stops or fails. This allows users to resume playback within this timeout without risking foreground service restrictions on various devices. Note that calling
- Remove deprecated symbols:
- Removed the following deprecated
DownloadHelper
methods:- Constructor
DownloadHelper(MediaItem, @Nullable MediaSource, TrackSelectionParameters, RendererCapabilities[])
, useDownloadHelper(MediaItem, @Nullable MediaSource, TrackSelectionParameters, RendererCapabilitiesList)
instead. getRendererCapabilities(RenderersFactory)
, equivalent behavior can be achieved by creating aDefaultRendererCapabilitiesList
with aRenderersFactory
, and callingDefaultRendererCapabilitiesList.getRendererCapabilities()
.
- Constructor
- Removed
PlayerNotificationManager.setMediaSessionToken(MediaSessionCompat)
method. UsePlayerNotificationManager.setMediaSessionToken(MediaSession.Token)
and pass in(MediaSession.Token) compatToken.getToken()
instead.
- Removed the following deprecated
2025-02-12
Autofill: v1.3.0-rc01
February 12, 2025
androidx.autofill:autofill:1.3.0-rc01
is released. Version 1.3.0-rc01 contains these commits.
- This release moves Autofill 1.3.0 into stabilization.
Benchmark: v1.4.0-alpha08
February 12, 2025
androidx.benchmark:benchmark-*:1.4.0-alpha08
is released. Version 1.4.0-alpha08 contains these commits.
API Changes
- Moved
TraceProcessor.runSession()
extension APIs to be experimental, as they are likely to move to be concrete constructors eventually on Android. (Ib0528, b/393640753) - Most of the implementation of Startup Insights are now public/experimental, and move to the
TraceProcessor
artifact SeeStartupInsights
. (I0aa00) - Deprecate
BenchmarkRule.runWithTimingDisabled {}
in favor ofBenchmarkRule.runWithMeasurementDisabled {}
, which more clearly describes the behavior - all metrics are paused. Additionally, expose theMicrobenchmarkScope
superclass since redeclaring therunWithMeasurementDisabled
function to open access isn't possible, since it's inline. (I9e23b, b/389149423, b/149979716) - Benchmark libraries have moved to Kotlin 2.0. (I9d1e0)
- Removed
androidx.benchmark.startupProfiles.enable
instrumentation argument. It is no longer useful, as it can be controlled byincludeInStartupProfile
arg inBaselineProfileRule.collect()
. (I39eb4)
Bug Fixes
- Reduced the amount of Microbenchmark internal functions called during profiling to make e.g. Method traces more clear (Ifaed8)
- Speculative fix for crashes: 'Failed to stop [
ProcessPid(processName=perfetto, pid=...)
]'. Now Benchmark will log a message instead of crashing when a background Perfetto process isn't able to be stopped before running the benchmark. (I37d3e, b/323601788) - Fix
IllegalStateExceptions
with 'Expectedpm dump-profiles
stdout' label that were caused by overly strict output format check. (I358dc)
Compose Animation: v1.8.0-beta02
February 12, 2025
androidx.compose.animation:animation-*:1.8.0-beta02
is released. Version 1.8.0-beta02 contains these commits.
Compose Animation: v1.7.8
February 12, 2025
androidx.compose.animation:animation-*:1.7.8
is released. Version 1.7.8 contains these commits.
Compose Foundation: v1.8.0-beta02
February 12, 2025
androidx.compose.foundation:foundation-*:1.8.0-beta02
is released. Version 1.8.0-beta02 contains these commits.
Bug Fixes
- Fixed an issue where overscroll implementations using
LayoutModifierNode
would not work correctly inside scrolling containers.
Compose Foundation: v1.7.8
February 12, 2025
androidx.compose.foundation:foundation-*:1.7.8
is released. Version 1.7.8 contains these commits.
Bug Fixes
- Fix crash in
BasicTextField
with input transformation when replacing part of the pasted text. (I73702)
Compose Material: v1.8.0-beta02
February 12, 2025
androidx.compose.material:material-*:1.8.0-beta02
is released. Version 1.8.0-beta02 contains these commits.
Compose Material: v1.7.8
February 12, 2025
androidx.compose.material:material-*:1.7.8
is released. Version 1.7.8 contains these commits.
Compose Material3: v1.4.0-alpha08
February 12, 2025
androidx.compose.material3:material3-*:1.4.0-alpha08
is released. Version 1.4.0-alpha08 contains these commits.
New Features
-
Added an
TimePickerDialog
API that can be used forTimePicker
,TimeInput
or to have a switchable version. (Id2d83) -
New search bar APIs:
- Collapsed search bars and expanded search "views" are now separate composables.
SearchBar
represents a search bar in the collapsed state.ExpandedFullScreenSearchBar
andExpandedDockedSearchBar
represent the search bar in the expanded state. These open in a new window.SearchBarState
to control the state of the search barTopSearchBar
to add insets handling and scroll behavior- New overload of
InputField
which usesSearchBarState
(Ie0723, b/261496232, b/283311462, b/350916229, b/352872248)
API Changes
- Support corner shape morphing of icon buttons on press. (I21843)
- Text field decorator/decoration box APIs are no longer experimental. (I31d95)
- Added samples and defaults for the connected variant for
ButtonGroup
. (I5c8ce) - Make state param the last one in
NavigationSuiteScaffold
andNavigationSuiteScaffoldLayout
. (I9cc7b)
Bug Fixes
- Added custom accessibility actio...
2025-02-05
Media3: v1.6.0-alpha03
February 06, 2025
androidx.media3:media3-*:1.6.0-alpha03
is released. Version 1.6.0-alpha03 contains these commits.
- ExoPlayer:
- Add option to
ClippingMediaSource
to allow clipping in unseekable media. - Fix bug where seeking with pre-warming could block following media item transition.
- Add option to
- Audio:
- Make
androidx.media3.common.audio.SonicAudioProcessor
final.
- Make
- Video:
- Change
MediaCodecVideoRenderer.shouldUsePlaceholderSurface
to protected so that applications can override to block usage of placeholder surfaces (#1905). - Add experimental
ExoPlayer
AV1 sample dependency parsing to speed up seeking. Enable it with the newDefaultRenderersFactory.experimentalSetParseAv1SampleDependencies
API.
- Change
- Muxers:
- Disable
Mp4Muxer
sample batching and copying by default.
- Disable
- Remove deprecated symbols:
- Removed
androidx.media3.exoplayer.audio.SonicAudioProcessor
.
- Removed
2025-02-03
Core 1.7.0: Core Core-ktx 1.7.0-alpha01
February 03, 2025
androidx.test:core:1.7.0-alpha01
and androidx.test:core-ktx:1.7.0-alpha01
are released.
Bug Fixes * Fix Rect
handling in ViewCapture
for SDK >= 34 for non root views. * Fix bug reporting the status code when PixelCopy fails in ViewCapture.generateBitmapFromPixelCopy. * Improving wording of a failure message.
API Changes
- Update to minSdkVersion 21
Espresso 3.7.0: Espresso 3.7.0-alpha01
February 03, 2025
The following artifacts were released:
androidx.test.espresso:espresso-accessibility:3.7.0-alpha01
androidx.test.espresso:espresso-core:3.7.0-alpha01
androidx.test.espresso:espresso-contrib:3.7.0-alpha01
androidx.test.espresso:espresso-idling-resource:3.7.0-alpha01
androidx.test.espresso:espresso-intents:3.7.0-alpha01
androidx.test.espresso:espresso-remote:3.7.0-alpha01
androidx.test.espresso:espresso-web:3.7.0-alpha01
androidx.test.espresso.idling:idling-concurrent:3.7.0-alpha01
androidx.test.espresso.idling:idling-net:3.7.0-alpha01
Bug Fixes
- Fix deadlock in espresso in Robolectric INSTRUMENTATION_TEST + paused looper.
- Refactor espresso's MessageQueue access into a TestLooperManagerCompat class, and use new TestLooperManager APIs when available.
API Changes
- Update to minSdkVersion 21
Test:
Test:
Test:
Monitor 1.8.0: monitor 1.8.0-alpha01
February 03, 2025
androidx.test:monitor:1.8.0-alpha01
is released.
API Changes
- Update to minSdkVersion 21
- Make ReflectionException a RuntimeException
Orchestrator 1.6.0: orchestrator 1.6.0-alpha02
February 03, 2025
androidx.test:orchestrator:1.6.0-alpha02
is released.
Runner 1.7.0: runner 1.7.0-alpha01
February 03, 2025
androidx.test:runner:1.7.0-alpha01
is released.
Bug Fixes
- Exceptions during
@AfterClass
were not being reported viaInstrumentationResultPrinter
. - Exceptions arising in AndroidJUnitRunner.buildRequest are now handled.
- Assumption failures during a ClassRule or BeforeClass are now reported more consistently via
InstrumentationResultPrinter
- Clarify SdkSuppress reference docs
API Changes
- Update to minSdkVersion 21
- Deprecate androidx.test.filters.Suppress in favor of org.junit.Ignore
Rules 1.7.0: rules 1.7.0-alpha01
February 03, 2025
androidx.test:rules:1.7.0-alpha01
is released.
API Changes
- Update to minSdkVersion 21
Services 1.6.0: services 1.6.0-alpha02
February 03, 2025
androidx.test.services:test-services:1.6.0-alpha02
androidx.test.services:storage:1.6.0-alpha02
are released.
Bug Fixes
- The obsolete FileObserver protocol has been removed in favor of the LocalSocket-based protocol.
2025-01-30
Media3: v1.6.0-alpha02
January 30, 2025
androidx.media3:media3-*:1.6.0-alpha02
is released. Version 1.6.0-alpha02 contains these commits.
- Common Library:
- Fix bug in
SimpleBasePlayer
where setting a newcurrentMediaItemIndex
inState
aftersetPlaylist
withnull
MediaMetadata
does not reevaluate the metadata (#1940).
- Fix bug in
- ExoPlayer:
- Add experimental 'ExoPlayer' pre-warming support for playback using
MediaCodecVideoRenderer
. You can configureDefaultRenderersFactory
throughexperimentalSetEnableMediaCodecVideoRendererPrewarming
to provide a secondaryMediaCodecVideoRenderer
toExoPlayer
. If enabled,ExoPlayer
pre-processes the video of consecutive media items during playback to reduce media item transition latency. - Fix issue where additional decode-only frames may be displayed in quick succession when transitioning to content media after a mid-roll ad.
- Make
DefaultRenderersFactory
add twoMetadataRenderer
instances to enable apps to receive two different schemes of metadata by default. - Initialize
DeviceInfo
and device volume asynchronously (if enabled usingsetDeviceVolumeControlEnabled
). These values aren't available instantly afterExoPlayer.Builder.build()
, andPlayer.Listener
notifies changes throughonDeviceInfoChanged
andonDeviceVolumeChanged
. - Reevaluate whether the ongoing load of a chunk should be cancelled when playback is paused (#1785).
- Add experimental 'ExoPlayer' pre-warming support for playback using
- Transformer:
- Enable support for Android platform diagnostics using
MediaMetricsManager
. Transformer forwards editing events and performance data to the platform, which helps to provide system performance and debugging information on the device. This data may also be collected by Google if sharing usage and diagnostics data is enabled by the user of the device. Apps can opt-out of contributing to platform diagnostics for Transformer withTransformer.Builder.setUsePlatformDiagnostics(false)
. - Split
InAppMuxer
intoInAppMp4Muxer
andInAppFragmentedMp4Muxer
. You useInAppMp4Muxer
to produce a non-fragmented MP4 file, whileInAppFragmentedMp4Muxer
is for producing a fragmented MP4 file. - Move
Muxer
interface frommedia3-muxer
tomedia3-transformer
. - Add support for transcoding and transmuxing Dolby Vision (profile 8) format.
- Enable support for Android platform diagnostics using
- Extractors:
- Fix handling of NAL units with lengths expressed in 1 or 2 bytes (rather than 4).
- Fix
ArrayIndexOutOfBoundsException
in MP4 edit lists when the edit list starts at a non-sync frame with no preceding sync frame (#2062).
- Audio:
- Don't bypass
SonicAudioProcessor
whenSpeedChangingAudioProcessor
is configured with default parameters. - Fix underflow in
Sonic#getOutputSize()
that could causeDefaultAudioSink
to stall. - Fix
MediaCodecAudioRenderer.getDurationToProgressUs()
andDecoderAudioRenderer.getDurationToProgressUs()
so that seeks correctly reset the provided durations.
- Don't bypass
- Text:
- TTML: Add support for referencing
tts:origin
andtts:extent
usingstyle
(#2953). - Restrict WebVTT and SubRip timestamps to exactly 3 decimal places. Previously we incorrectly parsed any number of decimal places but always assumed the value was in milliseconds, leading to incorrect timestamps (#1997).
- Add support for VobSub subtitles (#8260).
- Fix playback hanging when a playlist contains clipped items with CEA-608 or CEA-708 captions.
- Fix
IllegalStateException
when an SSA file contains a cue with zero duration (start and end time equal) (#2052). - Suppress (and log) subtitle parsing errors when subtitles are muxed into the same container as audio and video (#2052).
- TTML: Add support for referencing
- Muxers:
- Renamed
setSampleCopyEnabled()
method tosetSampleCopyingEnabled()
in bothMp4Muxer.Builder
andFragmentedMp4Muxer.Builder
. Mp4Muxer.addTrack()
andFragmentedMp4Muxer.addTrack()
now return anint
track ID instead of aTrackToken
.Mp4Muxer
andFragmentedMp4Muxer
no longer implementMuxer
interface.
- Renamed
- Session:
- Fix bug where calling a
Player
method on aMediaController
connected to a legacy session dropped changes from a pending update.
- Fix bug where calling a
- UI:
- Add
PresentationState
state holder class and the correspondingrememberPresentationState
Composable tomedia3-ui-compose
.
- Add
- HLS Extension:
- Parse
SUPPLEMENTAL-CODECS
tag from HLS playlist to detect Dolby Vision formats (#1785).
- Parse
- DASH Extension:
- Fix issue when calculating the update interval for ad insertion in multi-period live streams (#1698).
- Parse
scte214:supplementalCodecs
attribute from DASH manifest to detect Dolby Vision formats (#1785). - Improve handling of period transitions in live streams where the period contains media samples beyond the declared period duration (#1698).
- Demo app:
- Use
PresentationState
to control the aspect ratio ofPlayerSurface
Composable. This depends on the ContentScale type and covers it with a shutter-overlay before the first frame is rendered.
- Use
- Remove deprecated symbols:
- Removed
ExoPlayer.VideoComponent
,ExoPlayer.AudioComponent
,ExoPlayer.TextComponent
andExoPlayer.DeviceComponent
.
- Removed
2025-01-29
Benchmark: v1.4.0-alpha07
January 29, 2025
androidx.benchmark:benchmark-*:1.4.0-alpha07
is released. Version 1.4.0-alpha07 contains these commits.
New Features
BaselineProfileRule
now introduces acollectWithResults(...)
API which includes a list of paths to the computed profiles. (I056f8)- Added
androidx.benchmark.measureRepeatedOnMainThread.throwOnDeadline
instrumentation argument, which can be set to false to disable the throw on deadline behavior ofmeasureRepeatedOnMainThread
for local testing. Not otherwise recommended, as this increases the likelihood of ANRs during tests. (Idbeec, b/353226476)
API Changes
- Added
@JvmOverloads
toMicrobenchmarkConfig
constructor. (I13fd3) - Refactored
BenchmarkRule
to be built on top of coroutines, and support betteryield()
behavior. This refactor removed several experimentalBenchmarkState
APIs, but will be followed by replacements as needed. Additionally, addedrunWithMeasurementDisabled
to clarify behavior (all measurement is paused). In the future,runWithTimingDisabled
will be deprecated. (I19837, b/389149423, b/311242861) - Move
PerfettoTraceProcessor
toTraceProcessor
in a newandroidx.benchmark:benchmark-traceprocessor
artifact, and make most of its API non-experimental. Any customTraceMetric
or anything reading from traces will need to update to the newTraceProcessor
import. The newTraceProcessor
API works exactly like the old one, but is a standalone interface library (somewhat analogous to theandroidx.sqlite
layer from Room) with an Android-specific implementation built into macrobenchmark. The new artifact can be used on JVM as well, but currently you'll need to start your own copy of theTraceProcessor
binary and offer a port to connect to it on. (I3a767, I62563, b/381134564)
Bug Fixes
- Throw a clearer error message when
MacrobenchmarkScope.startActivityAndWait
fails to launch the target process (potentially due to a crash in the target process), instead of the more ambiguous 'Unable to confirm activity launch completion' message (I3539b) - Fixed several syntax errors in Kotlin samples, and syntax highlighting in several Java / build.gradle samples. (Ib3808)
- Clarified
ArtMetric
andCaptureInfo
parameter docs. (I96e60)
Browser: v1.9.0-alpha01
January 29, 2025
androidx.browser:browser:1.9.0-alpha01
is released. Version 1.9.0-alpha01 contains these commits.
API Changes
- Added browser connection/session support to Auth Tab. (I6e47b)
- Added a new API
CustomTabsSession#isEphemeralBrowsingSupported
that determines whether or not the ephemeral browsing is supported (Ie4dea, b/384548523) - Added color scheme params support to Auth Tab APIs. (I630e1)
- Added experimental ephemeral browsing option to Custom Tabs (I9549d)
- Updated experimental Auth Tab APIs (I8b674)
- Add new API to check if the Custom Tabs provider supports multi-network. (I4307a)
- Add new service intent filter category to support multi-network. (I4354a)
- Add new API to set/get the bound network when launching a URL over a custom tab. (I493e1)
- Added experimental Auth Tab APIs (I9b4d4)
- New experimental APIs for
PendingSession
(Ib40e5)
Bug Fixes
- Updated AuthTabIntent Javadocs (I2490c)
- Fixed session support in Auth Tab (I4e280)
- This library now uses JSpecify nullness annotations, which are type-use. Kotlin developers should use the following compiler arguments to enforce correct usage:
-Xjspecify-annotations=strict, -Xtype-enhancement-improvements-strict-mode
(Ic7bf5, b/326456246) - Removed manual outlining of access to new platform APIs since this happens automatically via API modeling when using R8 with AGP 7.3 or later (e.g. R8 version 3.3) and for all builds when using AGP 8.1 or later (e.g. D8 version 8.1). Clients who are not using AGP are advised to update to D8 version 8.1 or later. See this article for more details. (I9496c, b/345472586)
External Contribution
- Introduce a new IPC call
ICustomTabsService#prefetchWithMultipleUrls
to avoid multiple IPC calls for single URLs. (Ie5025) - Make
CustomTabsSession#prefetch
propagateCustomTabsSession
’s sessionid(mID)
toCustomTabsService
. (I4ec7b) - Add a new experimental API
CustomTabsSession#prefetch(List<Uri>, PrefetchOptions)
, which overloads the existing API to accept multiple URLs. (I54f35) - Add a new experimental API
CustomTabsSession#prefetch(Uri, PrefetchOptions)
, which tries to prefetch the main page (without subresources) for future navigations. (I340cf)
Collection: v1.5.0-beta03
January 29, 2025
androidx.collection:collection-*:1.5.0-beta03...
2025-01-15
Activity: v1.10.0
January 15, 2025
androidx.activity:activity:1.10.0
, androidx.activity:activity-compose:1.10.0
, and androidx.activity:activity-ktx:1.10.0
are released. Version 1.10.0 contains these commits.
Important changes since 1.9.0
PhotoPicker
now allows picking images in order and choosing which tab (either albums or images) should be initially visible.- The
PickVisualMedia
andPickMultipleVisualMedia
Activity Result contracts that trigger the Photo Picker no longer directly delegates to Google Play services if the system Photo picker is not available, but uses the publicACTION_SYSTEM_FALLBACK_PICK_IMAGES
action and related extras to provide a consistent Photo Picker experience to OEMs and system apps as a fallback. - New
LocalActivity
composition local that provides theActivity
for the current scope, removing the need for developers to get anActivity
from theLocalContext
.
AppSearch: v1.1.0-beta01
January 15, 2025
androidx.appsearch:appsearch-*:1.1.0-beta01
is released. Version 1.1.0-beta01 contains these commits.
New Features
AppSearch
module enters Beta.
API Changes
- Disable experimental
AppSearch
delete propagation API due to stability issues. (Iea386) - Create
GlobalSearchApplicationInfo
API, an experimental and optional way for producers and consumers to indicate interest in certain types. (I116fd) - Minor changes to experimental AST (query builder) APIs (Ibd852)
Bug Fixes
- This library now uses JSpecify nullness annotations, which are type-use. Kotlin developers should use the following compiler arguments to enforce correct usage:
-Xjspecify-annotations=strict
,-Xtype-enhancement-improvements-strict-mode
. (Ic2976, b/326456246) - Adds required permission to
searchPersonCorpus
(I4431d)
Camera: v1.5.0-alpha05
January 15, 2025
androidx.camera:camera-*:1.5.0-alpha05
is released. Version 1.5.0-alpha05 contains these commits.
API Changes
- Add
VideoCapture.getSelectedQuality()
to know the selected Quality based on theQualitySelector
. (I70508, b/204288986) - When an image capture is invoked with the
ImageCapture.OnImageCapturedCallback
API, the ImageInfo at the returnedImageProxy
can now be used to know whether flash was fired through the newImageInfo.getFlashState()
API. (Id2c61, b/380527406) - Added
OUTPUT_IMAGE_FORMAT_NV21
output format support forImageAnalysis
. (I484ab) - Remove the experimental annotation of the
featurecombinationquery
artifact (I4427f) - Adjust the zoom ratio range allowed for
CameraControl
by Extensions-specific characteristics when an extensions mode is enabled. (I85af1)
Bug Fixes
- Upgraded
compileSdk
as 35 for using Android 15 related API. Apps using CameraX libraries will also need to upgrade theircompileSdk
config setting. (Ic80cd) - This library now uses JSpecify nullness annotations, which are type-use. Kotlin developers should use the following compiler arguments to enforce correct usage:
-Xjspecify-annotations=strict
,-Xtype-enhancement-improvements-strict-mode
(Idc6c6, b/326456246)
camera viewfinder: v1.4.0-alpha12
January 15, 2025
androidx.camera.viewfinder:viewfinder-compose:1.4.0-alpha12
, androidx.camera.viewfinder:viewfinder-core:1.4.0-alpha12
, and androidx.camera.viewfinder:viewfinder-view:1.4.0-alpha12
are released. Version 1.4.0-alpha12 contains these commits.
New Features
- Upgraded
compileSdk
as 35 for using Android 15 related API. Apps using CameraX libraries will also need to upgrade theircompileSdk
config setting. (Ic80cd) - This library now uses JSpecify nullness annotations, which are type-use. Kotlin developers should use the following compiler arguments to enforce correct usage:
-Xjspecify-annotations=strict
,-Xtype-enhancement-improvements-strict-mode
(I7bcd7, b/326456246)
Car App: v1.7.0-rc01
January 15, 2025
androidx.car.app:app-*:1.7.0-rc01
is released with no notable changes from beta03. Version 1.7.0-rc01 is a contains these commits.
- This is the first RC that includes the fix for CVE-2024-10382 patched on beta03. If you are using a lower version than 1.7-beta03, please update to use this version.
Collection: v1.5.0-beta02
January 15, 2025
androidx.collection:collection-*:1.5.0-beta02
is released. Version 1.5.0-beta02 contains these commits.
Compose Animation: v1.8.0-alpha08
January 15, 2025
androidx.compose.animation:animation-*:1.8.0-alpha08
is released. Version 1.8.0-alpha08 contains these commits.
Bug Fixes
- Fixed incorrect placement animation from
animateBounds
inLazyGrid
due toMotionFrameOfReferencePlacement
being reset. (
2024-12-20
Media3: v1.6.0-alpha01
December 20, 2024
androidx.media3:media3-*:1.6.0-alpha01
is released. Version 1.6.0-alpha01 contains these commits.
- Common Library:
- Remove
Format.toBundle(boolean excludeMetadata)
method, useFormat.toBundle()
instead. - Add
AudioManagerCompat
andAudioFocusRequestCompat
to replace the equivalent classes inandroidx.media
.
- Remove
- ExoPlayer:
- Consider language when selecting a video track. By default, select a 'main' video track that matches the language of the selected audio track, if available. Explicit video language preferences can be expressed with
TrackSelectionParameters.Builder.setPreferredVideoLanguage(s)
. - Add
selectedAudioLanguage
parameter toDefaultTrackSelector.selectVideoTrack()
method. - Add
retryCount
parameter toMediaSourceEventListener.onLoadStarted
and correspondingMediaSourceEventListener.EventDispatcher
methods. - Fix bug where playlist items or periods in multi-period DASH streams with durations that don't match the actual content could cause frame freezes at the end of the item (#1698).
- Reduce default values for
bufferForPlaybackMs
andbufferForPlaybackAfterRebufferMs
inDefaultLoadControl
to 1000 and 2000 ms respectively. - Add
MediaExtractorCompat
, a new class that provides equivalent features to platformMediaExtractor
. - Move
BasePreloadManager.Listener
to a top-levelPreloadManagerListener
. RenderersFactory.createSecondaryRenderer
can be implemented to provide secondary renderers for pre-warming. Pre-warming enables quicker media item transitions during playback.- Enable sending
CmcdData
for manifest requests in adaptive streaming formats DASH, HLS, and SmoothStreaming (#1951). - Provide
MediaCodecInfo
of the codec that will be initialized inMediaCodecRenderer.onReadyToInitializeCodec
(#1963). - Change
AdsMediaSource
to allow theAdPlaybackStates
to grow by appending ad groups. Invalid modifications are detected and throw an exception.
- Consider language when selecting a video track. By default, select a 'main' video track that matches the language of the selected audio track, if available. Explicit video language preferences can be expressed with
- Transformer:
- Update parameters of
VideoFrameProcessor.registerInputStream
andVideoFrameProcessor.Listener.onInputStreamRegistered
to useFormat
. - Add support for transmuxing into alternative backward compatible formats.
- Generate HDR static metadata when using
DefaultEncoderFactory
.
- Update parameters of
- Extractors:
- AVI: Fix handling of files with constant bitrate compressed audio where the stream header stores the number of bytes instead of the number of chunks.
- Audio:
- Fix
onAudioPositionAdvancing
to be called when playback resumes (previously it was called when playback was paused).
- Fix
- Video:
- Fix
MediaCodecVideoRenderer
such that when without aSurface
, the renderer skips just-early frames only if theVideoFrameReleaseControl.getFrameReleaseAction
is notFRAME_RELEASE_TRY_AGAIN_LATER
.
- Fix
- Text:
- Stop eagerly loading all subtitle files configured with
MediaItem.Builder.setSubtitleConfigurations
, and instead only load one if it is selected by track selection (#1721).
- Stop eagerly loading all subtitle files configured with
- Effect:
- Moved the functionality of
OverlaySettings
intoStaticOverlaySettings
.OverlaySettings
can be subclassed to allow dynamic overlay settings.
- Moved the functionality of
- Muxers:
- Moved
MuxerException
out ofMuxer
interface to avoid a very long fully qualified name.
- Moved
- Session:
- Add 'Context' as a parameter to 'MediaButtonReceiver.shouldStartForegroundService` (#1887).
- UI:
- Add
PlayerSurface
Composable tomedia3-ui-compose
module. - Add
PlayPauseButtonState
,NextButtonState
,PreviousButtonState
,RepeatButtonState
,ShuffleButtonState
classes and the correspondingrememberPlayPauseButtonState
,rememberNextButtonState
,rememberPreviousButtonState
,rememberRepeatButtonState
,rememberShuffleButtonState
composables tomedia3-ui-compose
module.
- Add
- HLS Extension:
- Add a first version of
HlsInterstitialsAdsLoader
. The ads loader reads the HLS interstitials of an HLS media playlist and maps them to theAdPlaybackState
that is passed to theAdsMediaSource
. This initial version only supports HLS VOD streams withX-ASSET-URI
attributes. - Add
HlsInterstitialsAdsLoader.AdsMediaSourceFactory
. Apps can use it to createAdsMediaSource
instances that use anHlsInterstitialsAdsLoader
in a convenient and safe way.
- Add a first version of
- DASH Extension:
- Add AC-4 Level-4 format support for DASH (#1898).
- Decoder Extensions (FFmpeg, VP9, AV1, etc.):
- Add the MPEG-H decoder module which uses the native MPEG-H decoder module to decode MPEG-H audio (#1826).
- Demo app:
- Add
MinimalControls
(PlayPauseButton
,NextButton
,PreviousButton
) andExtraControls
(RepeatButton
,ShuffleButton
) Composable UI elements todemo-compose
utilizingPlayPauseButtonState
,NextButtonState
,PreviousButtonState
,RepeatButtonState
,ShuffleButtonState
.
- Add
- Remove deprecated symbols:
- Remove deprecated
AudioMixer.create()
method. UseDefaultAudioMixer.Factory().create()
instead. - Remove the following deprecated
Transformer.Builder
methods:setTransformationRequest()
, usesetAudioMimeType()
,setVideoMimeType()
, andsetHdrMode()
instead.setAudioProcessors()
, set the audio processor in anEditedMediaItem.Builder.setEffects()
, and pass it toTransformer.start()
instead.setVideoEffects()
, set video effect in anEditedMediaItem.Builder.setEffects()
, and pass it toTransformer.start()
instead.setRemoveAudio()
, useEditedMediaItem.Builder.setRemoveAudio()
to remove the audio from theEditedMediaItem
passed to
- Remove deprecated
2024-12-11@07PM
ARCore for Jetpack XR: v1.0.0-alpha01
December 12, 2024
androidx.xr.arcore:arcore-* 1.0.0-alpha01
is released.
Features of initial release
Inspired by the existing ARCore library, the ARCore for Jetpack XR library provides capabilities for blending digital content with the real world. This library includes motion tracking, persistent anchors, hit testing, and plane identification with semantic labeling (for example, floor, walls, and tabletops). View the developer guide to learn more about working with ARCore for Jetpack XR.
Session
: ARCore for Jetpack XR uses the Jetpack XR Runtime under-the-hood to power its functionality. You will use a Session to interact with most ARCore for Jetpack XR APIs, so please take a look at its documentation.Plane
: Use planes to understand the world around you. Each plane has aLabel
that describes it semantically. You can usesubscribe
to be notified about the latest detected planes orstate
to be notified about the changes to a specific plane.Anchor
: A link between a virtual object and a real world location. Anchors can be attached to a specific location in space (usingcreate
) or aTrackable
(usingcreateAnchor
).Anchors can be reused across sessions. You can use
persist
to store them,getPersistedAnchorUuids
to enumerate them andload
to retrieve them. Make sure that youunpersist
them once they are no longer in use.Anchors are interoperable between ARCore for Jetpack XR and Jetpack SceneCore. You can create an
AnchorEntity
using an anchor or, if you have an existing AnchorEntity, you can usegetAnchor
to retrieve its backing anchor.Offer natural user interactions using
hitTest
. A hitTest uses aRay
to determine which contents it intersects and to create anAnchor
from that location. Consider conducting a hitTest from anInputEvent
.
Known Issues
There might be a delay between calling
unpersist
and its UUID being removed from the results returned bygetPersistedAnchorUuids
.create
will not validate that the system has enough resources to return new anchors. Creating an excessive amount of anchors might lead to a crash.Persisting an Anchor that was previously persisted and unpersisted is not currently supported.
Usage in the emulator is supported, but the behavior might not be as stable as when running on an actual device. Particularly, calls to
create
might fail with a native code error and immediately terminate the activity.In certain circumstances, a
RuntimeException
might be erroneously thrown when callingpersist
with the message “Anchor was not persisted”. In those circumstances, the function would still succeed and the anchor will be persisted. We recommend wrapping the call topersist
with atry
block as a workaround.
Jetpack Compose for XR: v1.0.0-alpha01
December 12, 2024
androidx.xr.compose:compose-*1.0.0-alpha01
is released.
Features of Initial Release
Initial developer release of Jetpack Compose for XR. Use familiar Compose concepts such as rows and columns to create spatial UI layouts in XR, whether you're porting an existing 2D app to XR or creating a new XR app from scratch. This library provides subspace and spatial composables: such as spatial panels and orbiters, which let you place your existing 2D Compose or Views-based UI in a spatial layout. It introduces the Volume subspace composable, which allows you to place SceneCore entities, such as 3D models, relative to your UI. Learn more in this developer guide:
Subspace
: This composable can be placed anywhere within your app’s UI hierarchy, allowing you to maintain layouts for 2D and spatial UI without losing context between files. This makes it easier to share things like existing app architecture between XR and other form factors without needing to hoist state through your whole UI tree or re-architect your app.SpatialPanel: A spatial panel is a subspace composable that lets you display app content–for example, you could display video playback, still images, or any other content in a spatial panel.
Orbiter: An orbiter is a spatial UI component. It's designed to be attached to a corresponding spatial panel, and contains navigation and contextual action items related to that spatial panel. For example, if you've created a spatial panel to display video content, you could add video playback controls inside an orbiter.
Volume: Place SceneCore entities, such as 3D models, relative to your UI.
Spatial Layout: You can create multiple spatial panels and place them within a Spatial Layout using
SpatialRow
,SpatialColumn
,