Skip to content

Releases: mahozad/androidx-release-notes

2026-08-12

Choose a tag to compare

@github-actions github-actions released this 18 Aug 17:25

Appcompat: v1.8.0

August 12, 2026

androidx.appcompat:appcompat:1.8.0 and androidx.appcompat:appcompat-resources:1.8.0 are released. Version 1.8.0 contains these commits.

Important changes since 1.7.0:

Benchmark: v1.5.0-rc01

August 12, 2026

androidx.benchmark:benchmark-*:1.5.0-rc01 is released. Version 1.5.0-rc01 contains these commits.

CameraX: v1.7.0-alpha03

August 12, 2026

androidx.camera:camera-*:1.7.0-alpha03 is released. Version 1.7.0-alpha03 contains these commits.

API Changes

  • Deprecated legacy Camera2Interop APIs (Camera2Interop.Extender, Camera2CameraControl, Camera2CameraInfo, and CaptureRequestOptions) in favor of Camera2Interop configurator factory methods and Kotlin extension functions. (Ib0845, b/529609261)
  • Added Kotlin DSL camera2Interop extension blocks for preview, imageAnalysis, videoCapture, imageCapture, and SessionConfig.Builder, as well as CameraControl.applyCamera2InteropAsync extension function. (I51af9, b/529609261)
  • Added new Camera2Interop configurator factory methods (forUseCase, forImageCapture, forSessionConfig, forCameraControl) and corresponding setInterop / applyInteropAsync methods on Preview.Builder, ImageCapture.Builder, ImageAnalysis.Builder, VideoCapture.Builder, SessionConfig.Builder, and CameraControl. (I0007b, b/529609261)
  • Added helper methods to Camera2Interop and equivalent Kotlin extension properties (CameraInfo.cameraId, CameraInfo.cameraCharacteristics, and String.toCameraSelector()) to retrieve Camera2 camera ID and characteristics from CameraInfo. (I11803, b/529609261)
  • Added Preview.setMirrorMode, Preview.getMirrorMode and VideoCapture.setMirrorMode to public APIs, and removed the ExperimentalMirrorMode annotation. (I4ed60, b/519794349, b/470629643)
  • Added Kotlin DSL builders preview { ... }, imageCapture { ... }, imageAnalysis { ... }, and videoCapture { ... } for creating UseCases. (I91df9, b/530013719)
  • Modified ImagePlane.buffer to be non-nullable ByteBuffer. (I98593)
  • Deprecated the property getters on SessionConfig.Builder, HighSpeedVideoSessionConfig.Builder, and ExtensionSessionConfig.Builder in Kotlin DSL to enforce write-only properties. (I2875b, b/534570559)

Bug Fixes

  • Fixed an issue where binding multiple Preview use cases with an OverlayEffect caused one Preview stream delivery failure. (I7a383, b/532577546, b/532924417)
  • Fixed an issue where Recording.pause() and Recording.resume() failed when switching cameras during a persistent video recording. (I71004, b/532327691, b/367121726)
  • Fixed HAL crashes when using Zero-Shutter Lag (ZSL) while zooming across physical camera boundaries on multi-camera devices. (I1c374, b/527782712, b/514757157)
  • Fixed an issue where HDR video recording could fail on Samsung Galaxy S25, S26, and Fold 7 devices. (Ic0827, b/529618629)

Camera Feature Combination Query: v1.7.0-alpha03

August 12, 2026

androidx.camera.featurecombinationquery:featurecombinationquery:1.7.0-alpha03 and androidx.camera.featurecombinationquery:featurecombinationquery-play-services:1.7.0-alpha03 are released. Version 1.7.0-alpha03 contains these commits.

camera viewfinder: v1.7.0-alpha03

August 12, 2026

androidx.camera.viewfinder:viewfinder-compose:1.7.0-alpha03, androidx.camera.viewfinder:viewfinder-core:1.7.0-alpha03, and androidx.camera.viewfinder:viewfinder-view:1.7.0-alpha03 are released. Version 1.7.0-alpha03 contains these commits.

Bug Fixes

  • Fixed a resource leak in Viewfinder where SurfaceControl was not properly released. (If9da7, b/532595493)

Compose Animation: v1.12.0

August 12, 2026

androidx.compose.animation:animation-*:1.12.0 is released. Version 1.12.0 contains these commits.

Important changes since 1.11.0:

Compose Animation: v1.13.0-alpha01

August 12, 2026

androidx.compose.animation:animation-*:1.13.0-alpha01 is released. Version 1.13.0-alpha01 contains

Read more

2026-08-07

Choose a tag to compare

@github-actions github-actions released this 07 Aug 13:49

Media3: v1.11.0

August 05, 2026

  • Common library:
    • Add Format.channelMask to explicitly represent the audio channel mask, and a new Util.getAudioTrackChannelConfig(Format) overload to safely resolve it.
    • Upgrade Kotlin from 2.0.20 to 2.2.0.
  • ExoPlayer:
    • Fix a timing-dependent concurrency bug that could cause an IllegalStateException or IndexOutOfBoundsException in ExoPlayer.
    • Relax ad group count checks in AdsMediaSource to allow the ad group count to decrease when an ad group is fully processed (hasUnplayedAds() is false), accommodating dynamic ad group resizing during reset workflows.
    • Add getFlags() and FLAG_STRICT_DURATION to SampleStream to allow streams to report flags, and update renderers to check these flags dynamically.
    • Fall back to the frame rate estimator in MediaCodecVideoRenderer and to the codec output format in MediaCodecAudioRenderer to calculate the codec operating rate when the stream formats do not provide a valid value, and avoid unnecessary codec resets.
    • Remove clipping of content for client-side inserted ads in the core player. Instead, AdsMediaSource takes care of the clipping logic. Custom client-side inserted ads sources need to be updated to implement the content clipping internally.
    • Mark tracks with a well-formed but unrecognized codec profile or level as supported=NO_EXCEEDS_CAPABILITIES instead of supported=YES (which is how tracks with missing or malformed profile or level info are marked). This ensures these tracks (which are unlikely to be supported by the device) are not selected when there are better-supported alternatives.
    • Add DefaultPreloadManager.SimpleRankingDataComparator, which is a RankingDataComparator that compares the ranks of the media items based on their distances to the index of the current playing media item. Apps can override its compare(Integer, Integer) method if a more fine-tuned comparison logic is needed. The custom SimpleRankingDataComparator can be injected via a new constructor of DefaultPreloadManager.Builder.
    • Reduce the OOM risk of DefaultLoadControl.prioritizeTimeOverSizeThresholds by falling back to buffer byte size limits if available heap memory seems tight.
    • Align handling of still images when MediaItem.imageDurationUs is not set: JPEG and HEIC still images now 'play' with a very short default duration (the same way PNG and other images previously behaved).
    • Add MediaSource.prepareSource(MediaSourceCaller, PlayerId, BandwidthMeter) to plumb BandwidthMeter to MediaSource. The deprecated method with custom implementation will still be called by default though, it is recommended to implement the new method and use BandwidthMeter.getTransferListener() to get parity to the old method.
    • In DefaultBandwidthMeter, add support for a custom InitialBitrateSupplier. This allows apps to provide their own logic for determining the initial bitrate estimate, which will be used on creation of DefaultBandwidthMeter and on network type changes. The supplier can be set via DefaultBandwidthMeter.Builder.setInitialBitrateSupplier().
    • Enable dynamic scheduling by default. ExoPlayer playback work loop will run dynamically as opposed to on a static interval.
    • Remove an unnecessary reset that can occur when joining tracks with pre-roll samples to active playback.
    • In DefaultBandwidthMeter, optimize getInitialBitrateCountryGroupAssignment to return the country group assignments packed into a 32-bit integer instead of an array, reducing code size and avoiding allocations.
    • Fix AudioTrack initialization failures on some devices by ensuring the retry logic always attempts a minimum of 1 second buffer size if other retries (by halving the buffer size) are unsuccessful (#3207).
    • Fix codec issue on some devices where the codec was swallowing all samples if previously flushed before receiving input buffers.
    • Add experimental ExoPlayer.Builder.enablePerStreamMediaProgression() to allow advancing media processing on a per-stream basis. This reduces startup latency between playlist items and avoids playback becoming "stuck" with very short content (#3122).
    • Fix race condition related to audio session id usage where the initial audio session id auto-generated by ExoPlayer would be used instead of the value set by setAudioSessionId (#3241).
    • Add experimental HAGC (ST 2094-50) timed metadata playback support for progressive media (e.g. MP4, Matroska). The player automatically merges HAGC metadata tracks with the associated video track and delivers the metadata out-of-band to the decoder on API 37+ devices. This behavior can be disabled via DefaultMediaSourceFactory.setExperimentalEnableHagcPlayback(false).
    • Add Format.selectionPriority representing the relative preference of the Format in track selection (#3236).
    • Fix potential scrubbing mode issue where scrubbing could stall when seeking to 'end of stream'.
  • CompositionPlayer:
    • Fix an issue where TrackSelector instances were not being released.
  • Transformer:
    • Fix an issue where ExportResult.fileSizeBytes may be over-reported.
  • Track selection:
    • Expose BaseTrackSelection.DEFAULT_FORMAT_COMPARATOR and add AdaptiveTrackSelection.Factory.setTrackFormatComparator to allow custom format ordering and ABR selection priority beyond bitrate-only ordering.
    • Fix a timing-dependent concurrency issue where rapid sequential updates to track selection parameters could result in some updates being lost or overwritten.
  • Extractors:
    • MP4, MP3, and FLAC: Add FLAG_DISABLE_ARTWORK_METADATA to allow discarding attached pictures and cover art metadata during container parsing to reduce runtime memory consumption (#2077). This can also be enabled centrally via DefaultExtractorsFactory.setDisableArtworkMetadata.
    • MP4: Add support for extracting ITU-T T.35 (it35) timed metadata tracks.
    • MP4: Add support for extracting chapter metadata (both Nero and QuickTime formats). QuickTime chapters are preferred if both are present. The extracted chapter information is exposed as Chapter entries within the track's Metadata, allowing for native chapter navigation in MP4, M4A, and M4B files (such as audiobooks and podcasts) (#2803).
    • WAV, Matroska, and MP4: Add support for 64-bit floating point PCM audio (#3090).
    • Matroska: Use codec bitstream metadata to populate accurate ColorInfo.
    • MP4: Add support for seeking in fragmented MP4 files using the mfra box when a sidx box is not present. To enable this, provide FLAG_READ_MFRA_FOR_SEEK_MAP to the FragmentedMp4Extractor, which is now done by default in DefaultExtractorsFactory (#3088).
    • Ignore av1C data with unsupported version.
    • MP4: Add support for big-endian floating point PCM in fpcm boxes.
    • Matroska: Parse chapter info to Chapter entries in a track's Metadata
Read more

2026-07-29

Choose a tag to compare

@github-actions github-actions released this 29 Jul 19:52

Appcompat: v1.8.0-rc01

July 29, 2026

androidx.appcompat:appcompat:1.8.0-rc01 and androidx.appcompat:appcompat-resources:1.8.0-rc01 are released. Version 1.8.0-rc01 contains these commits.

Benchmark: v1.5.0-beta01

July 29, 2026

androidx.benchmark:benchmark-*:1.5.0-beta01 is released. Version 1.5.0-beta01 contains these commits.

API Changes

  • PerfettoCapture and PerfettoTraceRule can now capture in-process traces and merge them for a target package. (I9a00b, b/497959820)

Compose Animation: v1.12.0-rc01

July 29, 2026

androidx.compose.animation:animation-*:1.12.0-rc01 is released. Version 1.12.0-rc01 contains these commits.

Compose Foundation: v1.12.0-rc01

July 29, 2026

androidx.compose.foundation:foundation-*:1.12.0-rc01 is released. Version 1.12.0-rc01 contains these commits.

Compose Material: v1.12.0-rc01

July 29, 2026

androidx.compose.material:material-*:1.12.0-rc01 is released. Version 1.12.0-rc01 contains these commits.

Compose Material3: v1.5.0-alpha25

July 29, 2026

androidx.compose.material3:material3-*:1.5.0-alpha25 is released. Version 1.5.0-alpha25 contains these commits.

API Changes

  • Renamed trailingIcon parameter to trailingContent in the shape, checked, and selected DropdownMenuItem overloads while maintaining binary compatibility. (I2ecbd)
  • Added new selection and container color properties to MenuItemColors, and renamed trailingIcon to trailingContent in the new colors constructor while maintaining binary compatibility. (I20b92)
  • Improved ScrollField accessibility and keyboard navigation support. (If7477)
  • Remove ComponentOverride APIs (I3784b)
  • Deprecated 2-parameter SliderState.Saver and RangeSliderState.Saver in favor of new overloads taking steps. SliderState no longer publicly implements DraggableState. (I7c91b)
  • Graduate BasicAlertDialog API from Experimental (If157c)
  • Changed ButtonGroupScope in ButtonGroup to a sealed interface. Split Modifier.animateWidth into two overloads to allow omitting compressionLimit and dynamically resolving the layout direction, and changed the compressionLimit parameter type from PaddingValues to Dp. (I8ef39)
  • Renamed TonalToggleButton to FilledTonalToggleButton. Added smooth border stroke animations to OutlinedToggleButton. Deprecated ToggleButtonDefaults.shapes in favor of shapesFor. (Icb433)
  • Promote LinearTrackStopIndicatorSize, LinearIndicatorTrackGapSize, and CircularIndicatorTrackGapSize to stable. (I794d0)
  • Deprecated SplitButtonLayout Api to use SplitButton instead (Ic9840)

Bug Fixes

  • Update focus switching in case of error for TimePickerTextField input in TimePicker.kt. (Ieceec)
  • Fixed shape of segmented list item when the list only has a single item. (I2ea1c, b/479721696)
  • Update KDocs for TimePickerDialog.kt. (Ia5fb8)

remote compose: v1.0.0-alpha16

July 29, 2026

androidx.compose.remote:remote-*:1.0.0-alpha16 is released. Version 1.0.0-alpha16 contains these commits.

API Changes

  • Exposed companion object and invoke factories for RemoteImageBitmap to allow instantiating remote image bitmaps from a URL or ImageBitmap in non-composable contexts. (I4dbc7)
  • Expose LineBreak strategy and hyphenation frequency in RemoteTextStyle (I7f2e6, b/510078059)
  • Promoted RemotePaint interface to public. (Ida62b, b/465743273)
  • Removed deprecated shorthand comparison operators (eq, ne, lt, le, gt, ge) across RemoteFloat, RemoteInt, and RemoteBoolean. (Ie01a9, b/532022248, b/532022248)

Bug Fixes

  • Fixes line height calculation in RemoteText and constraints scaling in widthIn/heightIn modifiers. (I89814)
  • Fixed state leak in RemoteComposePlayer
Read more

2026-07-22

Choose a tag to compare

@github-actions github-actions released this 22 Jul 14:33

Media3: 1.11.0-rc01

July 22, 2026

  • ExoPlayer:
    • Fix potential scrubbing mode issue where scrubbing could stall when seeking to 'end of stream'.
    • Revert: Add support for ads in multi-period content (e.g., DASH) by splitting and offsetting the AdPlaybackState for each period.
  • DataSource:
    • Fix KtorDataSource loading the entire HTTP response body into memory when opening a connection (#3305).
  • Session:
    • Fix crash by catching ForegroundServiceStartNotAllowedException in MediaSessionService.stopSelfSafely() (#3310).
    • Fix unexpected onMediaItemTransition() callback on MediaController when seeking inside the same media item (#3248).
  • Downloads:
    • Resolve HLS variables in media playlist when fetched for download (#3258).
  • HLS extension:
    • Fix calculation of content resume offset when resolving interstitial asset lists (#3322).
    • Fix unexpected audio track timestamp discontinuity when resuming low latency live playback after a playlist request failure (#3311).
    • Fix bug in HlsMediaPeriod.getStreamKeys() where the ID3 track in audio renditions is considered as subtitles (#3333).
  • DASH extension:
    • Fix crash (IndexOutOfBoundsException) when opening manifests with an empty <SegmentTimeline/> element (#3326).
  • Decoder extensions (FFmpeg, VP9, AV1, etc.):
    • Revert monochrome video support to bundled dav1d JNI.
  • Cast extension:
    • Fix bug where unconfigured live streams (liveConfiguration == UNSET) were queued as STREAM_TYPE_BUFFERED (#3318).

2026-07-15

Choose a tag to compare

@github-actions github-actions released this 15 Jul 19:45

Annotation: v1.11.0-alpha01

July 15, 2026

androidx.annotation:annotation-*:1.11.0-alpha01 is released. Version 1.11.0-alpha01 contains these commits.

API Changes

Bug Fixes

  • Add allowshrinking to @DoNotInline so that annotated methods can be removed if the function isn't reachable. (Id2c8c)

AndroidX releases Stay organized with collections Save and categorize content based on your preferences.:

Compose Material3: v1.5.0-alpha24

July 15, 2026

androidx.compose.material3:material3-*:1.5.0-alpha24 is released. Version 1.5.0-alpha24 contains these commits.

Features

  • Add new scroll variant for expressive TimePicker (I46f6b)
  • Added a new material3-ripple library (I1b3a3), which adds support for drawing ripples that visually display focus using inset focus rings instead of an opacity layer. This new library acts as a replacement for material-ripple, and expected usage is similar:
    • If you are using material3 itself, use the built-in material3 ripple configuration that integrates with the theme and uses material3-ripple internally as an implementation detail.
    • If you were using material-ripple directly or want to support inset focus rings without depending on material3, use the new material3-ripple library directly.

API Changes

  • Changed scrollbar ScrollIndicatorState parameter to be non-nullable. (Iab7c7, b/529445739)
  • Re-add @ExperimentalMaterial3Api annotation to AppBarWithSearch APIs. (I0b61a)
  • Promoted SearchBarState and slot-based SearchBar APIs to stable. Deprecated older SearchBar APIs using expanded/onExpandedChange. (Ia3793)

Bug Fixes

  • Fixed a rendering delay issue where the RichTooltip and PlainTooltip carets would appear late during the entrance animation. (I874b6, b/395753083)
  • Update margin values for Input/Scroll variant of TimePicker. (I83f00)
  • SplitButton measure trailing button first to guarantee space. (Id3a1e)
  • Fixed an accessibility issue where Switch Access users could not activate editable text fields inside ExposedDropdownMenuBox. (I0ea17)
  • Fixed talkback announcement order in TextField and OutlinedTextField when a prefix or suffix is present. (Ie79e7)
  • Update TimePicker margins and colon placement (I6bfeb)
  • Fix focus order in Talkback for ScrollField. (I4ca9f, b/526870141)
  • Updated Compose dependencies in Material 3 to 1.12.0-beta01. (Ie9417)
  • Tooltips are now clamped to the window boundaries to prevent them from being cut off on small screens or under large font configurations. (I421ff)
  • Update ScrollField with more expressive number transitions and adjust sizing/typography (Ic1614)

remote compose: v1.0.0-alpha15

July 15, 2026

androidx.compose.remote:remote-*:1.0.0-alpha15 is released. Version 1.0.0-alpha15 contains these commits.

API Changes

  • Added rememberRemoteImageBitmap(url) and exposed rememberMutableRemoteImageBitmap publicly to support non-named remote bitmaps. (I7b960)
  • Exposed RemoteStateScope.remotePath and RemotePathScope APIs for building paths via DSL. (I9e2fe, b/513228889)

Bug Fixes

Glance Wear: v1.0.0-alpha14

July 15, 2026

androidx.glance.wear:wear:1.0.0-alpha14, androidx.glance.wear:wear-core:1.0.0-alpha14, and androidx.glance.wear:wear-tooling-preview:1.0.0-alpha14 are released. Version 1.0.0-alpha14 contains these commits.

API Changes

  • We have added RoundAllWidgetPreviewParams, RoundSmallWidgetPreviewParams, and RoundLargeWidgetPreviewParams preview parameter providers for fully rounded Glance Wear widgets. (If5336, b/512405233)

New features

  • We have set up and added Linter library for Glance Wear widgets.(If4218, b/527402079)
    • Added a lint check to ensure that subclasses of GlanceWearWidgetService explicitly declare their associated widget class using the @AssociateWithGlanceWearWidget annotation. (Idc575, b/477024153)
Read more

2026-07-13

Choose a tag to compare

@github-actions github-actions released this 13 Jul 19:58

Media3: 1.11.0-beta01

July 7, 2026

  • ExoPlayer:
    • Add Format.selectionPriority representing the relative preference of the Format in track selection (#3236).
  • Track Selection:
    • Fix a timing-dependent concurrency issue where rapid sequential updates to track selection parameters could result in some updates being lost or overwritten.
  • Extractors:
    • AVI: Fix an issue where playing files without keyframe flags on audio tracks caused audio loss and OutOfMemoryError.
    • MP3: Use gapless-aware durations from Xing/Info headers (#3183).
    • MP3: Adjust LAME/Xing encoder delay and padding metadata to match decoded PCM trimming (#3200).
  • Audio:
    • Remove fallback path of EAC3-JOC to EAC3 for playback on Google Pixel devices as their standard EAC3 decoders cannot decode EAC3-JOC streams (#3257).
  • Video:
    • Fix bug in VideoFrameReleaseHelper where display changes could trigger redundant Choreographer callbacks and excessive CPU wakeups on the main thread.
  • Session:
    • Fix double-downscaling of artwork in MediaSession when the image size is close to the platform limit, resolving blurriness in notifications (#3134).
    • Fix ForegroundServiceStartNotAllowedException crash in MediaNotificationManager when an asynchronous artwork bitmap load callback attempts to start the foreground service while the app is in the background (#3270).
    • Fix an issue where PositionInfo objects received by a MediaController were missing their original Timeline UIDs. The session now reliably translates and propagates these UIDs during state updates.
  • UI:
    • Fix shutter suppression bug in PlayerView and Compose PresentationState that caused crashes on timelines that do not support period UID lookup (#3264).
  • HLS extension:
    • Parse SCORE attribute of EXT-X-STREAM-INF and EXT-X-I-FRAME-STREAM-INF, and populate it to Format.selectionPriority (#3236).
    • Fix bug where scheduled HLS playlist refreshes continue even if the playlist is no longer primary or active (#3254).
  • DASH extension:
    • Add support for parsing multiple Location elements from the manifest (MPD) and performing location fallback in DashMediaSource when manifest loads fail.
  • Decoder extensions (FFmpeg, VP9, AV1, etc.):
    • Add monochrome video support to bundled dav1d JNI.
  • Cast extension:
    • Add MediaRouteButtonState and rememberMediaRouteButtonState to support observing the visibility state of the media route picker, and add state parameter to MediaRouteButton (3172).
    • Fix bug where RemoteCastPlayer could get permanently stuck in a track-masking state after a track selection, causing it to ignore subsequent track updates from the Cast receiver (#3237).
    • Fix bug where DefaultMediaItemConverter throws a NullPointerException when trying to join a cast session started from a non-Media3 sender.
    • Prevent CastPlayer from transferring MediaItems that are not playable when changing the active player (#3199).
  • Test Utilities:
    • Add setPlaybackLooper to TestExoPlayerBuilder.
  • Remove deprecated symbols:
    • Remove androidx.media3.common.C.generateAudioSessionIdV21. Use androidx.media3.common.util.Util.generateAudioSessionId instead.

2026-07-07

Choose a tag to compare

@github-actions github-actions released this 08 Jul 16:56

Media3: 1.11.0-beta01

July 7, 2026

  • ExoPlayer:
    • Add Format.selectionPriority representing the relative preference of the Format in track selection (#3236).
  • Track Selection:
    • Fix a timing-dependent concurrency issue where rapid sequential updates to track selection parameters could result in some updates being lost or overwritten.
  • Extractors:
    • AVI: Fix an issue where playing files without keyframe flags on audio tracks caused audio loss and OutOfMemoryError.
    • MP3: Use gapless-aware durations from Xing/Info headers (#3183).
    • MP3: Adjust LAME/Xing encoder delay and padding metadata to match decoded PCM trimming (#3200).
  • Audio:
    • Remove fallback path of EAC3-JOC to EAC3 for playback on Google Pixel devices as their standard EAC3 decoders cannot decode EAC3-JOC streams (#3257).
  • Video:
    • Fix bug in VideoFrameReleaseHelper where display changes could trigger redundant Choreographer callbacks and excessive CPU wakeups on the main thread.
  • Session:
    • Fix double-downscaling of artwork in MediaSession when the image size is close to the platform limit, resolving blurriness in notifications (#3134).
    • Fix ForegroundServiceStartNotAllowedException crash in MediaNotificationManager when an asynchronous artwork bitmap load callback attempts to start the foreground service while the app is in the background (#3270).
    • Fix an issue where PositionInfo objects received by a MediaController were missing their original Timeline UIDs. The session now reliably translates and propagates these UIDs during state updates.
  • UI:
    • Fix shutter suppression bug in PlayerView and Compose PresentationState that caused crashes on timelines that do not support period UID lookup (#3264).
  • HLS extension:
    • Parse SCORE attribute of EXT-X-STREAM-INF and EXT-X-I-FRAME-STREAM-INF, and populate it to Format.selectionPriority (#3236).
    • Fix bug where scheduled HLS playlist refreshes continue even if the playlist is no longer primary or active (#3254).
  • DASH extension:
    • Add support for parsing multiple Location elements from the manifest (MPD) and performing location fallback in DashMediaSource when manifest loads fail.
  • Decoder extensions (FFmpeg, VP9, AV1, etc.):
    • Add monochrome video support to bundled dav1d JNI.
  • Cast extension:
    • Add MediaRouteButtonState and rememberMediaRouteButtonState to support observing the visibility state of the media route picker, and add state parameter to MediaRouteButton (3172).
    • Fix bug where RemoteCastPlayer could get permanently stuck in a track-masking state after a track selection, causing it to ignore subsequent track updates from the Cast receiver (#3237).
    • Fix bug where DefaultMediaItemConverter throws a NullPointerException when trying to join a cast session started from a non-Media3 sender.
    • Prevent CastPlayer from transferring MediaItems that are not playable when changing the active player (#3199).
  • Test Utilities:
    • Add setPlaybackLooper to TestExoPlayerBuilder.
  • Remove deprecated symbols:
    • Remove androidx.media3.common.C.generateAudioSessionIdV21. Use androidx.media3.common.util.Util.generateAudioSessionId instead.

2026-07-01

Choose a tag to compare

@github-actions github-actions released this 01 Jul 22:47

appfunctions: v1.0.0-alpha10

July 01, 2026

androidx.appfunctions:appfunctions:1.0.0-alpha10, androidx.appfunctions:appfunctions-compiler:1.0.0-alpha10, and androidx.appfunctions:appfunctions-testing:1.0.0-alpha10 are released. Version 1.0.0-alpha10 contains these commits.

API Changes

  • Added AppFunctionServiceEntryPoint. All AppFunction annotation must be declared within the AppFunctionService that is annotated with AppFunctionServiceEntryPoint (Idc5d5, b/463909015)
  • Moved AppFunction and AppFunctionConfiguration APIs . AppFunctionConfiguration will be removed in future release as it will be replaced by AppFunctionServiceEntryPoint (Iaff23, I4cf3e, b/517876475)
  • Updated AppFunctionService API to support callback (I6e0d7, b/519880977)
  • Add searchAppFunctions API (I8c0f9, I1fa27, b/494239238)
  • Added functionNames to AppFunctionSearchSpec (I95f53, b/494239238)
  • Added AppFunctionInstruction annotation (I21120, b/488994214)
  • Added AppFunctionSignature annotation and accompanying constants to declare runtime registered app function signatures. (I82a05, Ie2361, Ib6bb2)

Bug Fixes

  • Omit enabledByDefault from generated XML for AppFunctionSignatures (Ie2996, b/501032667)

Benchmark: v1.5.0-alpha07

July 01, 2026

androidx.benchmark:benchmark-*:1.5.0-alpha07 is released. Version 1.5.0-alpha07 contains these commits.

API Changes

  • Simplified Perfetto trace capture on device. (I48810)
  • Move the experimental TraceProcessor.runServer extension APIs from androidx.benchmark:benchmark-macro to androidx.benchmark:benchmark-common, and to the androidx.benchmark package. This will enable their use in microbenchmarks in the future. (Ie25bb, b/393640753)

Bug Fixes

  • Update traceprocessor implementation (as well as unbundled Perfetto Trace capture) to use Perfetto v56.0 (I8fb9d)
  • Set androidx.benchmark.requireAot and androidx.benchmark.requireAot to true by default. These safer defaults ensure that compilation is performed ahead of running microbenchmarks (on by default with the benchmark gradle plugin when using AGP 8.4+), and that measureRepeated is not used on the main thread, where it can cause ANRs. (I1bc3c, b/379115078)
  • Increased perfetto kill timeout from 5 to 30 seconds (for benchmark captured Perfetto sessions only). Added clearer error logging when the issue occurs. (If188f, b/435589290)

CameraX: v1.7.0-alpha02

July 01, 2026

androidx.camera:camera-*:1.7.0-alpha02 is released. Version 1.7.0-alpha02 contains these commits.

API Changes

  • CameraXViewfinder now supports built-in gestures for pinch-to-zoom and tap-to-focus, and adds support for screen flash and stream state. FocusState is now public in viewfinder-core to allow monitoring tap-to-focus results. (I66a17, b/522549890)
  • Added isAutoRotationEnabled to SessionConfig.Builder , HighSpeedVideoSessionConfig.Builder, ExtensionSessionConfig.Builder and introduced a Kotlin DSL factory functions for them. This allows setting the appropriate rotation automatically based on device sensors. (I5b4a3, b/510752515)
  • Added TransformationMode property to TransformationInfo to support apps to use OpenGL pipeline in EMBEDDED mode. (Id1de1, b/487826941)
  • Added isNightModeIndicatorSupported() and getNightModeIndicator() to CameraInfo to determine when the environment conditions meet the criteria for Night Mode. (Iae47b, b/499389465)
  • Exposed ImageAnalysis.OUTPUT_IMAGE_FORMAT_PRIVATE and ImageProxy.getHardwareBuffer() as public API to support GPU based ImageAnalysis. (I41cb3, b/496022391, b/492934501)
  • ExtensionsManager#getExtensionEnabledCameraSelector is now deprecated. Please use the new ExtensionSessionConfig API for enabling extension modes. (I2b336, b/473715607)
  • Added support for visual styling of camera frames during concurrent camera composition. You can now customize:
  • Rounded Corners: Use setRoundedCornerRatio(float) to apply normalized rounding (0.0 to 1.0) to frame edges.
  • Borders: Use setBorderWidthRatio(float) and setBorderColor(int) to add a decorative frame with consistent thickness (I18a07
Read more

2026-06-24

Choose a tag to compare

@github-actions github-actions released this 24 Jun 15:18

Media3: 1.11.0-alpha01

  • Common library:
    • Add Format.channelMask to explicitly represent the audio channel mask, and a new Util.getAudioTrackChannelConfig(Format) overload to safely resolve it.
    • Upgrade Kotlin from 2.0.20 to 2.2.0.
  • ExoPlayer:
    • Fix a timing-dependent concurrency bug that could cause an IllegalStateException or IndexOutOfBoundsException in ExoPlayer.
    • Relax ad group count checks in AdsMediaSource to allow the ad group count to decrease when an ad group is fully processed (hasUnplayedAds() is false), accommodating dynamic ad group resizing during reset workflows.
    • Add support for ads in multi-period content (e.g., DASH) by splitting and offsetting the AdPlaybackState for each period.
    • Add getFlags() and FLAG_STRICT_DURATION to SampleStream to allow streams to report flags, and update renderers to check these flags dynamically.
    • Fall back to the frame rate estimator in MediaCodecVideoRenderer and to the codec output format in MediaCodecAudioRenderer to calculate the codec operating rate when the stream formats do not provide a valid value, and avoid unnecessary codec resets.
    • Remove clipping of content for client-side inserted ads in the core player. Instead, AdsMediaSource takes care of the clipping logic. Custom client-side inserted ads sources need to be updated to implement the content clipping internally.
    • Mark tracks with a well-formed but unrecognized codec profile or level as supported=NO_EXCEEDS_CAPABILITIES instead of supported=YES (which is how tracks with missing or malformed profile or level info are marked). This ensures these tracks (which are unlikely to be supported by the device) are not selected when there are better-supported alternatives.
    • Add DefaultPreloadManager.SimpleRankingDataComparator, which is a RankingDataComparator that compares the ranks of the media items based on their distances to the index of the current playing media item. Apps can override its compare(Integer, Integer) method if a more fine-tuned comparison logic is needed. The custom SimpleRankingDataComparator can be injected via a new constructor of DefaultPreloadManager.Builder.
    • Reduce the OOM risk of DefaultLoadControl.prioritizeTimeOverSizeThresholds by falling back to buffer byte size limits if available heap memory seems tight.
    • Align handling of still images when MediaItem.imageDurationUs is not set: JPEG and HEIC still images now 'play' with a very short default duration (the same way PNG and other images previously behaved).
    • Add MediaSource.prepareSource(MediaSourceCaller, PlayerId, BandwidthMeter) to plumb BandwidthMeter to MediaSource. The deprecated method with custom implementation will still be called by default though, it is recommended to implement the new method and use BandwidthMeter.getTransferListener() to get parity to the old method.
    • In DefaultBandwidthMeter, add support for a custom InitialBitrateSupplier. This allows apps to provide their own logic for determining the initial bitrate estimate, which will be used on creation of DefaultBandwidthMeter and on network type changes. The supplier can be set via DefaultBandwidthMeter.Builder.setInitialBitrateSupplier().
    • Enable dynamic scheduling by default. ExoPlayer playback work loop will run dynamically as opposed to on a static interval.
    • Remove an unnecessary reset that can occur when joining tracks with pre-roll samples to active playback.
    • In DefaultBandwidthMeter, optimize getInitialBitrateCountryGroupAssignment to return the country group assignments packed into a 32-bit integer instead of an array, reducing code size and avoiding allocations.
    • Fix AudioTrack initialization failures on some devices by ensuring the retry logic always attempts a minimum of 1 second buffer size if other retries (by halving the buffer size) are unsuccessful (#3207).
    • Fix codec issue on some devices where the codec was swallowing all samples if previously flushed before receiving input buffers.
    • Add experimental ExoPlayer.Builder.enablePerStreamMediaProgression() to allow advancing media processing on a per-stream basis. This reduces startup latency between playlist items and avoids playback becoming "stuck" with very short content (#3122).
    • Fix race condition related to audio session id usage where the initial audio session id auto-generated by ExoPlayer would be used instead of the value set by setAudioSessionId (#3241).
    • Add experimental HAGC (ST 2094-50) timed metadata playback support for progressive media (e.g. MP4, Matroska). The player automatically merges HAGC metadata tracks with the associated video track and delivers the metadata out-of-band to the decoder on API 37+ devices. This behavior can be disabled via DefaultMediaSourceFactory.setExperimentalEnableHagcPlayback(false).
  • CompositionPlayer:
    • Fix an issue where TrackSelector instances were not being released.
  • Transformer:
    • Fix an issue where ExportResult.fileSizeBytes may be over-reported.
  • Track selection:
    • Expose BaseTrackSelection.DEFAULT_FORMAT_COMPARATOR and add AdaptiveTrackSelection.Factory.setTrackFormatComparator to allow custom format ordering and ABR selection priority beyond bitrate-only ordering.
  • Extractors:
    • MP4, MP3, and FLAC: Add FLAG_DISABLE_ARTWORK_METADATA to allow discarding attached pictures and cover art metadata during container parsing to reduce runtime memory consumption (#2077). This can also be enabled centrally via DefaultExtractorsFactory.setDisableArtworkMetadata.
    • MP4: Add support for extracting ITU-T T.35 (it35) timed metadata tracks.
    • MP4: Add support for extracting chapter metadata (both Nero and QuickTime formats). QuickTime chapters are preferred if both are present. The extracted chapter information is exposed as Chapter entries within the track's Metadata, allowing for native chapter navigation in MP4, M4A, and M4B files (such as audiobooks and podcasts) (#2803).
    • WAV, Matroska, and MP4: Add support for 64-bit floating point PCM audio (#3090).
    • Matroska: Use codec bitstream metadata to populate accurate ColorInfo.
    • MP4: Add support for seeking in fragmented MP4 files using the mfra box when a sidx box is not present. To enable this, provide FLAG_READ_MFRA_FOR_SEEK_MAP to the FragmentedMp4Extractor, which is now done by default in DefaultExtractorsFactory (#3088).
    • Ignore av1C data with unsupported version.
    • MP4: Add support for big-endian floating point PCM in fpcm boxes.
    • Matroska: Parse chapter info to Chapter entries in a track's Metadata.
    • MPEG-TS: Improve extraction of DTS-HD and DTS Express streams by combining the Core and Extension Substream into a single sample, fixing playback issues where the two were previously output as separate samples (#3147).
    • MP4: Prevent infinite loops and out-of-bounds reads when parsing emp...
Read more

2026-06-23

Choose a tag to compare

@github-actions github-actions released this 23 Jun 22:46

Tracing: v2.0.0-alpha09

June 23, 2026

androidx.tracing:tracing-*:2.0.0-alpha09 is released. Version 2.0.0-alpha09 contains these commits.

API Changes

  • Minor API change in Tracer to diambiguate between instant(...) and writeInstant(...). (I0935a)
  • Add support for propagation tokens in instant events. (I99f81)
  • Allow full usage of Perfetto flows in the experimental manual context propagation API. (I20cb6)
  • Defer creation of the BufferedSink and ProtoWriter in TraceSink. (Ibd098)
  • Make Tracer discovery simple and pluggable for both Java and Android Libraries. (I99111)
  • Make it easy for library developers to discover an instance of TraceDriver that can be used for in-process tracing. (Ia503e)

Version 2.0.0-alpha08

May 19, 2026

androidx.tracing:tracing-*:2.0.0-alpha08 is released. Version 2.0.0-alpha08 contains these commits.

API Changes

  • Add the ability to discover and override instances of TraceDriver to be used process wide. (I3f715)
  • Rename Tracer.recordException to Tracer.recordExceptionAndThrow. (I4411f, b/503092450)

Version 2.0.0-alpha07

May 06, 2026

androidx.tracing:tracing-*:2.0.0-alpha07 is released. Version 2.0.0-alpha07 contains these commits.

API Changes

  • Add a API to obtain a stub tracer that can be used when tracing is disabled. (I84c98)
  • Make tracing lifecycle consistent with system tracing. (Ib391b)
  • Counter APIs are now entirely allocation free. (I5e73a)

Bug Fixes

  • Fixed a keep rule for the Perfetto SDK (tracing-perfetto) which ensures that the Perfetto SDK can be enabled. (I1d227)
  • Add the ability to trace flush() events. (I38014, b/495852704)

Version 2.0.0-alpha06

April 22, 2026

androidx.tracing:tracing-*:2.0.0-alpha06 is released. Version 2.0.0-alpha06 contains these commits.

API Changes

  • Unrestrict File.createPerfettoFile() so others can safely create sinks. When a block() throws an exception in trace / traceCoroutine create an instant event for the exception with the metadata representing the corresponding stack trace elements. (I682e5, b/501536851, b/437166283)
  • Add a setCounter(...) overload that takes a Java Long type. (Ic0469, b/356082604)
  • Tracing 2.0 now uses Long for platform specific Thread identifiers. (I67277)

Bug Fixes

Version 2.0.0-alpha05

April 08, 2026

androidx.tracing:tracing-*:2.0.0-alpha05 is released. Version 2.0.0-alpha05 contains these commits.

API Changes

  • TraceSink factory functions now return TraceSink and not AbstractTraceSink. Files now have a unique suffix. We make sure that we can atomically create a new file that will be used to store trace packets. (I4c4aa, b/496298726)
  • Simplify and make coroutine context propagation faster. (Ia62db)
  • Introduce the optional attributes() when constructing a TraceDriver that provides a way to add metadata pertaining to a trace. (Ia147e)

Bug Fixes

  • Process threads and counter tracks are now synchronized. This fixes exceptions of the form: java.lang.NullPointerException: Cannot invoke "androidx.tracing.ThreadTrack.flush$tracing()" because "threadTrack" is null
  • Avoid emitting sink events when tracing is disabled.

Version 2.0.0-alpha04

March 25, 2026

androidx.tracing:tracing-*:2.0.0-alpha04 is released. Version 2.0.0-alpha04 contains these commits.

API Changes

  • Make AbstractTraceDriver really abstract, and move the Perfetto implementation into the tracing-wire module. (Ie2f59)
  • Give more descriptive names to base implementations to avoid using the wrong one. For developers previously extending androidx.tracing.Trace{Sink|Driver} they will now need to switch to using AbstractTrace{Sink|Driver}. (I9b46d)

Version 2.0.0-alpha03

March 11,...

Read more