Releases: mahozad/androidx-release-notes
2024-05-29@10PM
Core 1.6.0: Core Core-ktx 1.6.0-rc01
May 30, 2024
androidx.test:core:1.6.0-rc01
and androidx.test:core-ktx:1.6.0-rc01
are released.
Espresso 3.6.0: Espresso 3.6.0-rc01
May 30, 2024
The following artifacts were released:
androidx.test.espresso:espresso-accessibility:3.6.0-rc01
androidx.test.espresso:espresso-core:3.6.0-rc01
androidx.test.espresso:espresso-contrib:3.6.0-rc01
androidx.test.espresso:espresso-idling-resource:3.6.0-rc01
androidx.test.espresso:espresso-intents:3.6.0-rc01
androidx.test.espresso:espresso-remote:3.6.0-rc01
androidx.test.espresso:espresso-web:3.6.0-rc01
androidx.test.espresso.idling:idling-concurrent:3.6.0-rc01
androidx.test.espresso.idling:idling-net:3.6.0-rc01
Test:
Test:
Test:
Monitor 1.7.0: monitor 1.7.0-rc01
May 30, 2024
androidx.test:monitor:1.7.0-rc01
is released.
Orchestrator 1.5.0: orchestrator 1.5.0-rc01
May 30, 2024
androidx.test:orchestrator:1.5.0-rc01
is released.
Runner 1.6.0: runner 1.6.0-rc01
May 30, 2024
androidx.test:runner:1.6.0-rc01
is released.
Rules 1.6.0: rules 1.6.0-rc01
May 30, 2024
androidx.test:rules:1.6.0-rc01
is released.
Services 1.5.0: services 1.5.0-rc01
May 30, 2024
androidx.test.services:test-services:1.5.0-rc01
androidx.test.services:storage:1.5.0-rc01
are released.
2024-05-29
Appcompat: v1.7.0
May 29, 2024
androidx.appcompat:appcompat:1.7.0
and androidx.appcompat:appcompat-resources:1.7.0
are released. Version 1.7.0 contains these commits.
Important changes since 1.6.0
AppCompatDialog
now correctly sets theLifecycleOwner
,SavedStateRegistryOwner
, andOnBackPressedDispatcherOwner
on the dialog's decor view via theViewTree
APIs, fixing issues when hosting aComposeView
within anAppCompatDialog
.AppCompatActivity
now sets theViewTreeOnBackPressedDispatcherOwner
so that it is possible to retrieve the dispatcher from the view.- Significantly improved the performance of
SupportMenuInflater
. Locale.getDefault()
now returns the system locale after a cold start.LinearLayoutCompat
now preserves margin layout params.
Dependency Updates
AppCompat
now depends on Activity 1.7.0.AppCompat
now depends on Fragment version 1.5.4.
Biometric: v1.4.0-alpha01
May 29, 2024
androidx.biometric:biometric:1.4.0-alpha01
and androidx.biometric:biometric-ktx:1.4.0-alpha01
are released. This version is developed in an internal branch and targets Android 15 Beta 2.
Bug Fixes
- Update UI to be consistent with platform changes in Android 15
Car App: v1.4.0
May 29, 2024
androidx.car.app:app-*:1.4.0
is released. Version 1.4.0 is a promotion of 1.4.0-rc02.
Important changes since 1.3.0
- Instrument Cluster map rendering for Navigation apps
- New Tab Template for improved app layout / usability
- Support for Adaptive task limits
- Secondary actions on list elements
Compose Animation: v1.7.0-beta02
May 29, 2024
androidx.compose.animation:animation-*:1.7.0-beta02
is released. Version 1.7.0-beta02 contains these commits.
Compose Foundation: v1.7.0-beta02
May 29, 2024
androidx.compose.foundation:foundation-*:1.7.0-beta02
is released. Version 1.7.0-beta02 contains these commits.
API Changes
- Adds an experimental API for configuring prefetch behavior of
LazyGrids
similar to the existing experimental API forLazyLists
. This includes support for prefetching items in nestedLazyGrids
. Similiar toLazyListPrefetchStrategy
, the implementation default is to prefetch the first 2 nested items of each grid, but this can be configured by the newLazyGridPrefetchStrategy(nestedPrefetchItemCount)
andLazyListPrefetchStrategy#onNestedPrefetch
APIs. (I591c4) - Renamed
SemanticsProperties.Editable
toIsEditable
and changesSemanticsPropertyReceiver.editable
to a valisEditable
. The property is now a boolean and always specified by text fields. (I8acd8) - Moved
basicMarquee
default values intoMarqueeDefaults
object. (I12ff6) - Renamed
basicMarquee
delayMillis
parameter torepeatDelayMillis
. (I12ff6) - Update API for styling the links: moved the
TextLinkStyles
to theTextStyle
and removed theTextDefaults
from material (I5477b)
Bug Fixes
- Renamed
LayoutCoordinates.introducesFrameOfReference
toLayoutCoordinates.introducesMotionFrameOfReference
to better reflect its purpose. Renamed related function to calculate coordinates based on that flag. (I3a330) - Removed 'Default' from the
MarqueeDefaults
properties. (I1d8a0) - Removed 'Marquee' from
MarqueeDefaults
properties. (Iad4f4) - Removed
TextLinkStyles
from theTextStyle
class. Instead,TextLinkStyles
is part of theLinkAnntation
constructor and theAnnotatedString.fromHtml
method (I90b2b) - Fixed a bug where Pager would snap when flinging towards a bound while already settled at the bound. (I9f373, b/339171222)
- BTF2 now has correct mouse selection gestures. (Ibe8c6)
External Contribution
- Resubmit 'Make compose/measure time calculation content-type based in prefetch to improve accuracy' (Iea622)
- Make compose/measure time calculation content-type based in prefetch to improve accuracy (Ibccb1)
- Make
WindowInsetsPadding
modifiers available from common source set (I070b2)
Compose Material: v1.7.0-beta02
May 29, 2024
androidx.compose.material:material-*:1.7.0-beta02
is released. Version 1.7.0-beta02 contains these commits.
API Changes
- Update API for styling the links: moved the
TextLinkStyles
to theTextStyle
and removed theTextDefaults
from material (I5477b)
Compose Material3: v1.3.0-beta02
May 29, 2024
androidx.compose.material3:material3-*:1.3.0-beta02
is released. Version 1.3.0-beta02 contains these commits.
API Changes
Modifier.pullToRefreshIndicator
supports elevation, update Pull To Refresh APIs to have enabled be a boolean, instead of a lambda. Support content alignment inPullToRefreshBox
(I75679)- Making
TooltipScope
a sealed interface and creating an internal impl...
2024-05-16
Core 1.6.0: Core Core-ktx 1.6.0-beta01
May 16, 2024
androidx.test:core:1.6.0-beta01
and androidx.test:core-ktx:1.6.0-beta01
are released.
Bug Fixes
- Remove unused androidx.test.annotation dependency
- Revert back to androidx.concurrent 1.1.0
Espresso 3.6.0: Espresso 3.6.0-beta01
May 16, 2024
The following artifacts were released:
androidx.test.espresso:espresso-accessibility:3.6.0-beta01
androidx.test.espresso:espresso-core:3.6.0-beta01
androidx.test.espresso:espresso-contrib:3.6.0-beta01
androidx.test.espresso:espresso-idling-resource:3.6.0-beta01
androidx.test.espresso:espresso-intents:3.6.0-beta01
androidx.test.espresso:espresso-remote:3.6.0-beta01
androidx.test.espresso:espresso-web:3.6.0-beta01
androidx.test.espresso.idling:idling-concurrent:3.6.0-beta01
androidx.test.espresso.idling:idling-net:3.6.0-beta01
Bug Fixes
- Remove unused androidx.test.annotation dependency
Test:
Test:
Test:
Monitor 1.7.0: monitor 1.7.0-beta01
May 16, 2024
androidx.test:monitor:1.7.0-beta01
is released.
Bug Fixes
- Remove unused androidx.test.annotation dependency
Orchestrator 1.5.0: orchestrator 1.5.0-beta01
May 16, 2024
androidx.test:orchestrator:1.5.0-beta01
is released.
Runner 1.6.0: runner 1.6.0-beta01
May 16, 2024
androidx.test:runner:1.6.0-beta01
is released.
Bug Fixes
- Remove unused androidx.test.annotation dependency
Rules 1.6.0: rules 1.6.0-beta01
May 16, 2024
androidx.test:rules:1.6.0-beta01
is released.
Bug Fixes
- Remove unused androidx.test.annotation dependency
Services 1.5.0: services 1.5.0-beta01
May 16, 2024
androidx.test.services:test-services:1.5.0-beta01
androidx.test.services:storage:1.5.0-beta01
are released.
Bug Fixes
- Reduce HostedFile log spam
- Remove unused androidx.test.annotation dependency
2024-05-14
Annotation: v1.8.0
May 14, 2024
androidx.annotation:annotation-*:1.8.0
is released. Version 1.8.0 contains these commits.
Important changes since 1.7.0
- Added
@ReplaceWith
annotation to express replacements for deprecated APIs - The
@MainThread
annotation has been moved to the common source set.
Appcompat: v1.7.0-rc01
May 14, 2024
androidx.appcompat:appcompat:1.7.0-rc01
and androidx.appcompat:appcompat-resources:1.7.0-rc01
are released. Version 1.7.0-rc01 contains these commits.
Benchmark: v1.3.0-alpha05
May 14, 2024
androidx.benchmark:benchmark-*:1.3.0-alpha05
is released. Version 1.3.0-alpha05 contains these commits.
Bug Fixes
- Throw clearer exception when macrobench metric returns zero values for all iterations (Iab58f, b/314931695)
- Additional workaround rules added to microbench proguard rules, including support for listener rules and other observed warnings / errors. (I14d8f, b/329126308, b/339085669)
- Method tracing runs as a separate phase during a Macrobenchmark, and it no longer affects measurements. (If9a50, b/285912360, b/336588271)
- Added extra debugging suggestions to drop shader broadcast failure message. (I5efa6, b/325502725)
CameraX: v1.4.0-beta01
May 14, 2024
androidx.camera:camera-*:1.4.0-beta01
is released. Version 1.4.0-beta01 contains these commits.
API Changes
- Added
ZoomGestureDetector.ZoomEvent
to encapsulates the states of a zoom gesture. (I84cdf)
Bug Fixes
- Fixed a bug that still capture and tap-to-focus do not use the repeating request FPS/stabilization mode values which may recreate capture session and cause latency issues or Preview freeze in some devices. (I7dc0b)
- Fixed a bug where High Resolutions can not be selected when
CameraEffect
is enabled on some devices. (e.g. 4000x3000 on Samsung A32 5G). (Ie3ed3, b/337336152) - Fixed a crash when taking picture with Preview,
ImageCapture
andVideoCapture(UHD)
are bound on Pixel 4XL API29. (I5b288) - Support virtual devices: Context passed into
ProcessCameraProvider
will preserve the device ID to ensure the functionality in a virtual device environment. (I5ba48)
CameraX: v1.4.0-alpha06
May 14, 2024
androidx.camera:camera-viewfinder:1.4.0-alpha06
and androidx.camera:camera-viewfinder-core:1.4.0-alpha06
are released. Version 1.4.0-alpha06 contains these commits.
API Changes
- Rename
Viewfinder
'sImplementationMode
Enums to better reflect underlying implementations, and add fixed constants forTransformationInfo.sourceRotation
. (Ic6149) - Added
ZoomGestureDetector.ZoomEvent
to encapsulates the states of a zoom gesture. (I84cdf)
Camera Viewfinder Compose: v1.0.0-alpha01
May 14, 2024
androidx.camera:camera-viewfinder-compose:1.0.0-alpha01
is released. Version 1.0.0-alpha01 contains these commits.
New Features
- New library. This library introduces a Compose native Viewfinder composable, that can be used with CameraX and Camera2. The composable Viewfinder supports different aspect ratios, and handling of touch events.
Compose Animation: v1.7.0-beta01
May 14, 2024
androidx.compose.animation:animation-*:1.7.0-beta01
is released. Version 1.7.0-beta01 contains these commits.
API Changes
- New
resizeModes
(ScaleToBounds
andRemeasureToBounds
) forsharedBounds
to choose between scaling and remeasure. The previousscaleIn/OutSharedContentToBounds
APIs are now deprecated. (I0d41a)
External Contribution
- Experimental
SharedTransitionScope
is now an interface rather than a class. (Iaf856, b/338415048, b/338414702)
Compose Compiler: v1.5.14
May 14, 2024
androidx.compose.compiler:compiler:1.5.14
and androidx.compose.compiler:compiler-hosted:1.5.14
are released. Version 1.5.14 contains these commits.
This compiler release is targeting Kotlin 1.9.24.
Bug Fixes
- Ensure that inline body is realized when source information is off. (Idddb8)
Compose Foundation: v1.7.0-beta01
May 14, 2024
androidx.compose.foundation:foundation-*:1.7.0-beta01
is released. Version 1.7.0-beta01 contains these commits.
API Changes
2024-04-30
Annotation: v1.8.0-rc01
May 1, 2024
androidx.annotation:annotation-*:1.8.0-rc01
is released. Version 1.8.0-rc01 contains no changes since the prior beta release.
Appcompat: v1.7.0-beta01
May 1, 2024
androidx.appcompat:appcompat:1.7.0-beta01
and androidx.appcompat:appcompat-resources:1.7.0-beta01
are released. Version 1.7.0-beta01 contains these commits.
Benchmark: v1.3.0-alpha04
May 1, 2024
androidx.benchmark:benchmark-*:1.3.0-alpha04
is released. Version 1.3.0-alpha04 contains these commits.
API Changes
- Added experimental
MacrobenchmarkRule#measureRepeated
variant which takes a customPerfettoConfig
for fully customized Perfetto trace recording. Note that incorrectly configured configs may cause built in Metric classes to fail. (Idfd3d, b/309841164, b/304038384) - Rename
PowerMetric.deviceSupportsPowerEnergy
toPowerMetric.deviceSupportsHighPrecisionTracking
for clarity (I5b82f) - Added
PowerMetric.deviceBatteryHasMinimumCharge()
andPowerMetric.deviceSupportsPowerEnergy()
to enable changing or skipping benchmarks based on device power measurement capability. (I6a591, b/322121218)
Bug Fixes
- Added comparison with previous baseline profile (I824c8, b/269484510)
- Added DSL to disable warnings (Ic4deb, b/331237001)
- Changed exception to info log when benchmark variants are disabled (I8a517, b/332772491)
- Make it simpler to capture method traces for a Macrobenchmark is scoped to the duration of the actual
measureBlock()
. Previously, it started at target process launch and only supported cold starts (Iee85a, b/300651094) - Avoid crashing when perfetto trace processor is slow to start (I98841, b/329145808)
Compose Animation: v1.6.7
May 1, 2024
androidx.compose.animation:animation-*:1.6.7
is released. Version 1.6.7 contains these commits.
Compose Animation: v1.7.0-alpha08
May 1, 2024
androidx.compose.animation:animation-*:1.7.0-alpha08
is released. Version 1.7.0-alpha08 contains these commits.
API Changes
LookaheadScope
APIs have been made stable. (I21507)
External Contribution
- Clear start animation time after
SeekableTransitionState
animates/snaps by Steven Schoen (1ca89529)
Compose Compiler: v1.5.13
May 1, 2024
androidx.compose.compiler:compiler:1.5.13
and androidx.compose.compiler:compiler-hosted:1.5.13
are released. Version 1.5.13 contains these commits.
New features
- Strong skipping is no longer considered experimental and is safe for use in production. It will become the default behavior in an upcoming release. (I6c8c4)
Bug Fixes
- Fix binary compatibility for
@Composable
functions with value class parameters that have a default value and are wrapping a non-primitive value. (I89465 - Upstreamed fixes for JS and Native compilation from Compose multiplatform. See the commit range above for full details.
Compose Foundation: v1.6.7
May 1, 2024
androidx.compose.foundation:foundation-*:1.6.7
is released. Version 1.6.7 contains these commits.
Compose Foundation: v1.7.0-alpha08
May 1, 2024
androidx.compose.foundation:foundation-*:1.7.0-alpha08
is released. Version 1.7.0-alpha08 contains these commits.
New Features
- Added right-click context menu to
BasicTextField
andSelectionContainer
with items for cut, copy, paste, and select-all actions. (If8c93, Ia2b49, I6f268)
API Changes
LazyLayout
prefetch requests can be marked as urgent now, meaning that we expect this item to be needed in the next frame and want to ignore frame budget to make sure to do more work in advance (Id513f)- Renamed
isPositionedByParentWithDirectManipulation
tointroducesFrameOfReference
. Note that it now has the reverse effect, meaning that by default, mostLayoutCoordinates
introduce a frame of reference, and, only when placed under direct manipulation the property will be false. To query position with only those that introduce a frame of reference, usepositionInLocalFrameOfReference(...)
. OrpositionInLocalLookaheadFrameOfReference
from aLookaheadScope
. (Ifc5f7) - Renamed
onClicked
toonClick
insideLinkInteractionListener
(Iaa35c) - Change action lambda for
getScrollViewportLength
as per API council feedback. (Ibc74a) - Renamed stylus handwriting delegation APIs. (
2024-04-26
Annotation 1.1.0: Annotation 1.1.0-alpha04
April 26, 2024
androidx.test:annotation:1.1.0-alpha04}
is released.
Core 1.6.0: Core Core-ktx 1.6.0-alpha06
April 26, 2024
androidx.test:core:1.6.0-alpha06
and androidx.test:core-ktx:1.6.0-alpha06
are released.
Bug Fixes
- Make ViewCapture use ControlledLooper API instead of hardcoding is Robolectric check
- Fix using ActivityScenario#launchActivityForResult with an implicit Intent
API Changes
- Added ApplicationInfoBuilder.setFlags(int)
- Make suspend function versions of ViewCapture/WindowCapture/DeviceCapture APIs,
and rename existing methods as *Async variants that return ListenableFutures - Make Bitmap.writeToTestStorage use the registered PlatformTestStorage instead of hardcoding TestStorage
- Remove ExperimentalTestApi/RequiresOptIn restrictions from captureToBitmap and takeScreenshot APIs
Espresso 3.6.0: Espresso 3.6.0-alpha04
April 26, 2024
The following artifacts were released:
androidx.test.espresso:espresso-accessibility:3.6.0-alpha04
androidx.test.espresso:espresso-core:3.6.0-alpha04
androidx.test.espresso:espresso-contrib:3.6.0-alpha04
androidx.test.espresso:espresso-idling-resource:3.6.0-alpha04
androidx.test.espresso:espresso-intents:3.6.0-alpha04
androidx.test.espresso:espresso-remote:3.6.0-alpha04
androidx.test.espresso:espresso-web:3.6.0-alpha04
androidx.test.espresso.idling:idling-concurrent:3.6.0-alpha04
androidx.test.espresso.idling:idling-net:3.6.0-alpha04
Bug Fixes
- Fix slow inRoot operations in Robolectric
- Use PlatformTestStorageRegistry.getInstance consistently instead of passing a reference around
- Remove TODO from InteractionResponse public ref docs
New Features
- Add waitForClose to DrawerActions.
API Changes
- Adapt to ViewCapture API changes
- Delete ViewInteraction.captureToBitmap in favor of ViewActions.captureToBitmap, and promote to a stable API from ExperimentalTestApi
Test:
Test:
Test:
Monitor 1.7.0: monitor 1.7.0-alpha05
April 26, 2024
androidx.test:monitor:1.7.0-alpha05
is released.
API Changes * Make DeviceController an public API from ExperimentalTestApi * Move PlatformTestStorage to a public API * Add internal ControlledLooper#isDrawCallbacksSupported.
Orchestrator 1.5.0: orchestrator 1.5.0-alpha04
April 26, 2024
androidx.test:orchestrator:1.5.0-alpha04
is released.
Runner 1.6.0: runner 1.6.0-alpha07
April 26, 2024
androidx.test:runner:1.6.0-alpha07
is released.
Bug Fixes
- When logging test exceptions, use Log's built-in support for throwables to avoid stack truncation
- Internal changes to support GrantPermissionRule using UiAutomation#grantRuntimePermissions
Rules 1.6.0: rules 1.6.0-alpha04
April 26, 2024
androidx.test:rules:1.6.0-alpha04
is released.
Bug Fixes
- Make GrantPermissionRule use UiAutomation to grant permissions on APIs > =28 to fix issues running on automotive.
Services 1.5.0: services 1.5.0-alpha04
April 26, 2024
androidx.test.services:test-services:1.5.0-alpha04
androidx.test.services:storage:1.5.0-alpha04
are released.
Bug Fixes
- TestStorage: use local cache dir to store output files when running as non system user
API Changes
- Make TestStorage an internal API from experimental
2024-04-18
Activity: v1.9.0
April 17, 2024
androidx.activity:activity:1.9.0
, androidx.activity:activity-compose:1.9.0
, and androidx.activity:activity-ktx:1.9.0
are released. Version 1.9.0 contains these commits.
Important changes since 1.8.0
ComponentActivity
now implementsOnUserLeaveHintProvider
to allow components to callbacks foronUserLeaveHint
events.- The
OnBackPressedCallback
,BackHandler
, andPredictiveBackHandler
APIs now warn when callingonBackPressedDispatcher.onBackPressed()
when handling back as that will always break the Predictive Back Animation. See the best practices guide for more details. - The remainder of the Activity APIs have been rewritten in Kotlin and all extensions previously available in
activity-ktx
have been moved toactivity
.activity-ktx
is now completely empty.- As part of the conversion of
ActivityResultLauncher
to Kotlin, thegetContract
method is now an abstract Kotlin property. This is a binary compatible change, but source breaking if your implementation ofActivityResultLauncher
is written in Kotlin.
- As part of the conversion of
Annotation: v1.8.0-beta02
April 17, 2024
androidx.annotation:annotation-*:1.8.0-beta02
is released. Version 1.8.0-beta02 contains no changes since the prior release.
Benchmark: v1.2.4
April 17, 2024
androidx.benchmark:benchmark-*:1.2.4
is released. Version 1.2.4 contains these commits.
Bug Fixes
- Fixes baseline profile srcset not being set up in benchmark variants. Also fixes
automaticGenerationDuringBuild
in libraries causing a circular dependency. (I28ab7, b/333024280) - Use
am force-stop
to kill apps when not a system app like System UI or Launcher. This fixesStartupMode.COLD
benchmarks crashing from "Package $package must not be running prior to cold start!" due to process kill not fully succeeding. (I5e028)
Benchmark: v1.3.0-alpha03
April 17, 2024
androidx.benchmark:benchmark-*:1.3.0-alpha03
is released. Version 1.3.0-alpha03 contains these commits.
New Features
- Adds public API
PerfettoTraceProcessor.Session.queryMetrics
APIs with JSON, textproto, and proto binary (undecoded) variants. These allow you to query metrics built into TraceProcessor (I54d7f, b/304038382) - Added
profilerOutput
to JSON output for easier tooling around profiling traces (e.g. perfetto, method traces). (I05ddd, b/332604449) - Added power tag to benchmark Perfetto Config. This captures, for example, wakelock tracepoints. (Icfe44, b/286551983)
- Added inst argument
androidx.benchmark.profiling.skipWhenDurationRisksAnr
, can be set to false to avoid skipping method traces when expected duration may cause an ANR - strongly recommended to avoid in CI runs. - Added experimental inst argument
androidx.benchmark.profiling.perfCompare.enable
, set this to true to run comparison timing between measurement and profiling phases. Useful in e.g. evaluating overhead of method tracing. (I61fb4, b/329146942)
API Changes
- Changed
TraceSectionMetric.Mode
to sealed class to enable future expansion without breaking exhaustive when statements (I71f7b) - Added
TraceSectionMetric.Mode.Average
and.Count
, and reordered args so the more common argument (mode) was earlier in the arg list, reducing need for specifying parameter names. (Ibf0b0, b/315830077, b/322167531) - Renamed
Metric.getResult
togetMeasurements
to match return type (I42595)
Bug Fixes
- Fix to ensure benchmarks use generated baseline profiles when
automaticGenerationDuringBuild
is off (Ic144f, b/333024280) - Fix
BaselineProfile
gradle plugin property overrides to enable baseline profile generation and benchmarking when customizing anonMinified
or benchmark build type. (Ib8f05, b/324837887) - Fixed method traces flush in macrobenchmark, so that method traces should be fully captured and valid, even on slower devices. (I6349a, b/329904950)
- Enable blocking start on Perfetto trace record to reduce risk of missing data at beginning of trace. Only supported on API 33+. (Ie6e41, b/310760059)
- Added a warning when Android Test Orchestrator is used in benchmark modules, as this will cause per-module output JSON files to be repeatedly overwritten. (Ia1af6, b/286899049)
- Force ',' (comma) thousands separators for consistency in Studio output, ignoring device locale (I3e921, b/313496656)
TraceSectionMetric
now supports slices created usingTrace.{begin|end}AsyncSection
. (I91b32, b/300434906)- Added log.w / exception labels to all startup detection failures. This does not change current behavior (so some errors throw, and others silently fail to detect the startup), just makes it more understandable. Generally the ones that
Log.w()
and fail to report startup metrics are those where non-frame events are missing, exceptions are thrown when startup is detected except for frame timing information (from UI/RT slices). (
2024-04-17@05PM
Activity: v1.9.0
April 17, 2024
androidx.activity:activity:1.9.0
, androidx.activity:activity-compose:1.9.0
, and androidx.activity:activity-ktx:1.9.0
are released. Version 1.9.0 contains these commits.
Important changes since 1.8.0
ComponentActivity
now implementsOnUserLeaveHintProvider
to allow components to callbacks foronUserLeaveHint
events.- The
OnBackPressedCallback
,BackHandler
, andPredictiveBackHandler
APIs now warn when callingonBackPressedDispatcher.onBackPressed()
when handling back as that will always break the Predictive Back Animation. See the best practices guide for more details. - The remainder of the Activity APIs have been rewritten in Kotlin and all extensions previously available in
activity-ktx
have been moved toactivity
.activity-ktx
is now completely empty.- As part of the conversion of
ActivityResultLauncher
to Kotlin, thegetContract
method is now an abstract Kotlin property. This is a binary compatible change, but source breaking if your implementation ofActivityResultLauncher
is written in Kotlin.
- As part of the conversion of
Annotation: v1.8.0-beta02
April 17, 2024
androidx.annotation:annotation-*:1.8.0-beta02
is released. Version 1.8.0-beta02 contains no changes since the prior release.
Benchmark: v1.2.4
April 17, 2024
androidx.benchmark:benchmark-*:1.2.4
is released. Version 1.2.4 contains these commits.
Bug Fixes
- Fixes baseline profile srcset not being set up in benchmark variants. Also fixes
automaticGenerationDuringBuild
in libraries causing a circular dependency. (I28ab7, b/333024280) - Use
am force-stop
to kill apps when not a system app like System UI or Launcher. This fixesStartupMode.COLD
benchmarks crashing from "Package $package must not be running prior to cold start!" due to process kill not fully succeeding. (I5e028)
Benchmark: v1.3.0-alpha03
April 17, 2024
androidx.benchmark:benchmark-*:1.3.0-alpha03
is released. Version 1.3.0-alpha03 contains these commits.
New Features
- Adds public API
PerfettoTraceProcessor.Session.queryMetrics
APIs with JSON, textproto, and proto binary (undecoded) variants. These allow you to query metrics built into TraceProcessor (I54d7f, b/304038382) - Added
profilerOutput
to JSON output for easier tooling around profiling traces (e.g. perfetto, method traces). (I05ddd, b/332604449) - Added power tag to benchmark Perfetto Config. This captures, for example, wakelock tracepoints. (Icfe44, b/286551983)
- Added inst argument
androidx.benchmark.profiling.skipWhenDurationRisksAnr
, can be set to false to avoid skipping method traces when expected duration may cause an ANR - strongly recommended to avoid in CI runs. - Added experimental inst argument
androidx.benchmark.profiling.perfCompare.enable
, set this to true to run comparison timing between measurement and profiling phases. Useful in e.g. evaluating overhead of method tracing. (I61fb4, b/329146942)
API Changes
- Changed
TraceSectionMetric.Mode
to sealed class to enable future expansion without breaking exhaustive when statements (I71f7b) - Added
TraceSectionMetric.Mode.Average
and.Count
, and reordered args so the more common argument (mode) was earlier in the arg list, reducing need for specifying parameter names. (Ibf0b0, b/315830077, b/322167531) - Renamed
Metric.getResult
togetMeasurements
to match return type (I42595)
Bug Fixes
- Fix to ensure benchmarks use generated baseline profiles when
automaticGenerationDuringBuild
is off (Ic144f, b/333024280) - Fix
BaselineProfile
gradle plugin property overrides to enable baseline profile generation and benchmarking when customizing anonMinified
or benchmark build type. (Ib8f05, b/324837887) - Fixed method traces flush in macrobenchmark, so that method traces should be fully captured and valid, even on slower devices. (I6349a, b/329904950)
- Enable blocking start on Perfetto trace record to reduce risk of missing data at beginning of trace. Only supported on API 33+. (Ie6e41, b/310760059)
- Added a warning when Android Test Orchestrator is used in benchmark modules, as this will cause per-module output JSON files to be repeatedly overwritten. (Ia1af6, b/286899049)
- Force ',' (comma) thousands separators for consistency in Studio output, ignoring device locale (I3e921, b/313496656)
TraceSectionMetric
now supports slices created usingTrace.{begin|end}AsyncSection
. (I91b32, b/300434906)- Added log.w / exception labels to all startup detection failures. This does not change current behavior (so some errors throw, and others silently fail to detect the startup), just makes it more understandable. Generally the ones that
Log.w()
and fail to report startup metrics are those where non-frame events are missing, exceptions are thrown when startup is detected except for frame timing information (from UI/RT slices). (
2024-04-17
Media3: v1.4.0-alpha01
April 17, 2024
androidx.media3:media3-*:1.4.0-alpha01
is released. Version 1.4.0-alpha01 contains these commits.
- ExoPlayer:
- Add
BasePreloadManager
which coordinates the preloading for multiple sources based on the priorities defined by theirrankingData
. Customization is possible by extending this class. AddDefaultPreloadManager
which usesPreloadMediaSource
to preload media samples of the sources into memory, and uses an integerrankingData
that indicates the index of an item on the UI. - Add
PlayerId
to most methods ofLoadControl
to enableLoadControl
implementations to support multiple players. - Remove
Buffer.isDecodeOnly()
andC.BUFFER_FLAG_DECODE_ONLY
. There is no need to set this flag as renderers and decoders will decide to skip buffers based on timestamp. CustomRenderer
implementations should check if the buffer time is at leastBaseRenderer.getLastResetPositionUs()
to decide whether a sample should be shown. CustomSimpleDecoder
implementations can checkisAtLeastOutputStartTimeUs
if needed or mark other buffers withDecoderOutputBuffer.shouldBeSkipped
to skip them. - Allow a null value to be returned by
TargetPreloadStatusControl.getTargetPreloadStatus(T)
to indicate not to preload aMediaSource
with the givenrankingData
. - Add
remove(MediaSource)
toBasePreloadManager
.
- Add
- Transformer:
- Add
audioConversionProcess
andvideoConversionProcess
toExportResult
indicating how the respective track in the output file was made. - Relax trim optimization H.264 level checks.
- Add support for changing between SDR and HDR input media in a sequence.
- Add support for composition-level audio effects.
- Add support for transcoding Ultra HDR images into HDR videos.
- Fix issue where the
DefaultAudioMixer
does not output the correct amount of bytes after being reset and reused.
- Add
- Video:
- Fix issue where
Listener.onRenderedFirstFrame()
arrives too early when switching surfaces mid-playback.
- Fix issue where
- DataSource:
- Implement support for
android.resource://package/id
raw resource URIs wherepackage
is different to the package of the current application. This wasn't previously documented to work, but is a more efficient way of accessing resources in another package than by name. - Eagerly check
url
is non-null in theDataSpec
constructors. This parameter was already annotated to be non-null.
- Implement support for
- Effect:
- Support multiple speed changes within the same
EditedMediaItem
orComposition
inSpeedChangeEffect
. - Support for HLG and PQ output from ultra HDR bitmap input.
- Add support for EGL_GL_COLORSPACE_BT2020_HLG_EXT, which improves HLG surface output in ExoPlayer.setVideoEffect and Transformer's Debug SurfaceView.
- Update Overlay matrix implementation to make it consistent with the documentation by flipping the x and y values applied in
setOverlayFrameAnchor()
. If usingOverlaySettings.Builder.setOverlayFrameAnchor()
, flip their x and y values by multiplying them by-1
.
- Support multiple speed changes within the same
- Session:
- Change default of
CommandButton.enabled
totrue
and ensure the value can stay false for controllers even if the associated command is available. - Add icon constants for
CommandButton
that should be used instead of custom icon resources. - Add
MediaSessionService.isPlaybackOngoing()
to let apps query whether the service needs to be stopped inonTaskRemoved()
(#1219). - Add
MediaSessionService.pauseAllPlayersAndStopSelf()
that conveniently allows to pause playback of all sessions and callstopSelf
to terminate the lifecycle of theMediaSessionService
. - Override
MediaSessionService.onTaskRemoved(Intent)
to provide a safe default implementation that keeps the service running in the foreground if playback is ongoing or stops the service otherwise.
- Change default of
- Downloads:
- Ensure that
DownloadHelper
does not leak unreleasedRenderer
instances, which can eventually result in an app crashing withIllegalStateException: Too many receivers, total of 1000, registered for pid
(#1224).
- Ensure that
- Test Utilities:
- Implement
onInit()
andonRelease()
inFakeRenderer
. - Change
TestPlayerRunHelper.runUntil/playUntil
methods to fail on nonfatal errors (e.g. those reported toAnalyticsListener.onVideoCodecError
). Use the newTestPlayerRunHelper.run(player).ignoringNonFatalErrors().untilXXX()
method chain to disable this behavior.
- Implement
- Demo app:
- Use
DefaultPreloadManager
in the short form demo app.
- Use
- Remove deprecated symbols:
- Remove
CronetDataSourceFactory
. UseCronetDataSource.Factory
instead. - Remove some
DataSpec
constructors. UseDataSpec.Builder
instead.
- Remove
2024-04-09
Media3: v1.3.1
April 11, 2024
androidx.media3:media3-*:1.3.1
is released. Version 1.3.1 contains these commits.
- Common Library:
- Add
Format.labels
to allow localized or other alternative labels.
- Add
- ExoPlayer:
- Fix issue where
PreloadMediaPeriod
cannot retain the streams when it is preloaded again. - Apply the correct corresponding
TrackSelectionResult
to the playing period in track reselection. - Start early-enabled renderers only after advancing the playing period when transitioning between media items (#1017).
- Add missing return type to proguard
-keepclasseswithmembers
rule forDefaultVideoFrameProcessor.Factory.Builder.build()
(#1187).
- Fix issue where
- Transformer:
- Add workaround for exception thrown due to
MediaMuxer
not supporting negative presentation timestamps before API 30.
- Add workaround for exception thrown due to
- Track Selection:
DefaultTrackSelector
: Prefer video tracks with a 'reasonable' frame rate (>=10fps) over those with a lower or unset frame rate. This ensures the player selects the 'real' video track in MP4s extracted from motion photos that can contain two HEVC tracks where one has a higher resolution but a very small number of frames (#1051).
- Extractors:
- Fix issue where padding was not skipped when reading odd-sized chunks from WAV files (#1117).
- MP3: Populate
Format.averageBitrate
from metadata frames such asXING
andVBRI
. - MPEG-TS: Revert a change that aimed to ensure the last frame is rendered by passing the last access unit of a stream to the sample queue (#7909). This is due to the change causing new problems with I-frame only HLS streams (#1150) and H.262 HLS streams (#1126).
- Audio:
- Allow renderer recovery by disabling offload if audio track fails to initialize in offload mode.
- Video:
- Add workaround for a device issue on Galaxy Tab S7 FE, Chromecast with Google TV, and Lenovo M10 FHD Plus that causes 60fps H265 streams to be marked as unsupported
- Add workaround that ensures the first frame is always rendered while tunneling even if the device does not do this automatically as required by the API (#1169). (#966).
- Fix issue where HDR color info handling causes codec misbehavior and prevents adaptive format switches for SDR video tracks (#1158).
- Text:
- WebVTT: Prevent directly consecutive cues from creating spurious additional
CuesWithTiming
instances fromWebvttParser.parse
(#1177).
- WebVTT: Prevent directly consecutive cues from creating spurious additional
- DRM:
- Work around a
NoSuchMethodError
which can be thrown by theMediaDrm
framework instead ofResourceBusyException
orNotProvisionedException
on some Android 14 devices (#1145).
- Work around a
- Effect:
- Improved PQ to SDR tone-mapping by converting color spaces.
- Session:
- UI:
- Fallback to include audio track language name if
Locale
cannot identify a display name (#988).
- Fallback to include audio track language name if
- DASH Extension:
- Populate all
Label
elements from the manifest intoFormat.labels
(#1054).
- Populate all
- RTSP Extension:
- Skip empty session information values (i-tags) in SDP parsing (#1087).
- Decoder Extensions (FFmpeg, VP9, AV1, MIDI, etc.):
- Disable the MIDI extension as a local dependency by default because it requires an additional Maven repository to be configured. Users who need this module from a local dependency can re-enable it.