Releases: mahozad/androidx-release-notes
2024-02-29
Orchestrator 1.5.0: orchestrator 1.5.0-alpha03
February 29, 2024
androidx.test:orchestrator:1.5.0-alpha03 is released.
New Features
- Introduce Instrumentation Params Proxying which allows the user to proxy instrumentation arguments to the APK under test (eg: --no-hidden-api-checks).
2024-02-23
Annotation: v1.8.0-alpha01
February 21, 2024
androidx.annotation:annotation-*:1.8.0-alpha01 is released. Version 1.8.0-alpha01 contains these commits.
API Changes
- Added
@ReplaceWithannotation to express replacements for deprecated APIs. (I38db3, b/322373864)
External Contributions
- Thanks Ivan Matkov for moving the
@MainThreadannotation to the common source set. (6f228c)
Benchmark: v1.3.0-alpha01
February 21, 2024
androidx.benchmark:benchmark-*:1.3.0-alpha01 is released. Version 1.3.0-alpha01 contains these commits.
API Changes
- Renamed
MicrobenchmarkConfigboolean parameters to avoid unnecessary word 'should' (Ia8f00, b/303387299) - Added
BenchmarkRule.measureRepeatedOnMainThreadso main thread benchmarks (e.g. ones touching Views or Compose UIs) can avoid triggering ANRs, especially during large suites in CI. (I5c86d) - Added
FrameTimingGfxInfoMetric, an experimental alternate implementation ofFrameTimingMetricwith measurements coming directly from the platform, rather than extracted from the Perfetto trace. (I457cb, b/322232828) - Add the ability to dump an ART profile during individual
warmUpiterations. (I17923) - Several changes to
TraceSectionMetricAPI:- Add
Mode.Min,Mode.Max - Add label argument to override section name as metric label
- Added mode name to output to clarify metric meaning
- Changed default to sum, as most usage of this metric is for repeated events Be aware of this changes in CI usage, as it may create discontinuities or break parsing. (Ic1e82, b/301892382, b/301955938)
- Add
Bug Fixes
- Improved error message in baseline profile gradle plugin when specified managed device does not exist (Idea2b, b/313803289)
- Fix for including library baseline profiles in AAR prior to AGP 8.3.0-alpha15 (I1d2af, b/313992099)
- Fixed baseline and startup profile output url at the end of generation task (I802e5, b/313976958)
- Adjusted data source timeouts to attempt to fix
java.lang.IllegalStateException: Failed to stop [ProcessPid(processName=perfetto, pid=...)](I8dc7d, b/323601788) - Add two instrumentation arguments for overriding shader dropping behavior to workaround crashes when benchmarking apps without
ProfileInstaller1.3:androidx.benchmark.dropShaders.enable=true/false: can be used to skip all shader dropping (including that done inStartupMode.Coldlaunches), esp when benchmarking apps that don't yet use profileinstaller 1.3androidx.benchmark.dropShaders.throwOnFailure=true/false: can be used to tolerate failures when trying to drop shaders, for example when benchmarking apps without profileinstaller 1.3 (I4f573)
- Skip method tracing on UI thread when expected to take longer than a few seconds, and cleanup method traces when throwing. (I6e768)
- Throw when filenames are longer than 200 chars to avoid unclear crashes when writing or post-processing files. (I4a5ab)
- Fixes issue where unterminated frames at the beginning and end of the trace could be paired together, which would incorrectly report as a single extremely long frame. (I39353, b/322232828)
- Use
--skip verificationon API 30+ when reinstalling a package on API 30-33 to clear ART profiles on user builds. This helps bypass Play Protect warnings that cause failures on some class of devices. (Ic9e36) - Use
am force-stopto kill apps when not a system app like System UI or Launcher. (I5e028) - Macrobenchmark now waits for
1 secondfor the target application to flush an ART profile (previously it waited for500 ms). (I85a50, b/316082056) - Improve
FrameTimingMetricerror when frames aren't produced, and always output link to trace when failing metric parsing to assist in diagnosing problem. (I956b9) - Fixed crash in
FrameTimingMetricfailing to parse frame id, especially on certain OEM devices. (Ia24bc, b/303823815, b/306235276) - Relaxed strictness of checks in
FrameMetrics, and added more detail to error messages. (Iadede)
Browser: v1.8.0-rc01
February 21, 2024
androidx.browser:browser:1.8.0-rc01 is released with no changes since 1.8.0-beta02. Version 1.8.0-rc01 contains these commits.
Compose Animation: v1.6.2
February 21, 2024
androidx.compose.animation:animation-*:1.6.2 is released. Version 1.6.2 contains these commits.
Compose Animation: v1.7.0-alpha03
February 21, 2024
androidx.compose.animation:animation-*:1.7.0-alpha03 is released. Version 1.7.0-alpha03 contains these commits.
New Features
- New
Modifier.animateContentSizethat takes an additional parameter for custom content alignment. (
2024-02-21
Annotation: v1.8.0-alpha01
February 21, 2024
androidx.annotation:annotation-*:1.8.0-alpha01 is released. Version 1.8.0-alpha01 contains these commits.
API Changes
- Added
@ReplaceWithannotation to express replacements for deprecated APIs. (I38db3, b/322373864)
External Contributions
- Thanks Ivan Matkov for moving the
@MainThreadannotation to the common source set. (6f228c)
Benchmark: v1.3.0-alpha01
February 21, 2024
androidx.benchmark:benchmark-*:1.3.0-alpha01 is released. Version 1.3.0-alpha01 contains these commits.
API Changes
- Renamed
MicrobenchmarkConfigboolean parameters to avoid unnecessary word 'should' (Ia8f00, b/303387299) - Added
BenchmarkRule.measureRepeatedOnMainThreadso main thread benchmarks (e.g. ones touching Views or Compose UIs) can avoid triggering ANRs, especially during large suites in CI. (I5c86d) - Added
FrameTimingGfxInfoMetric, an experimental alternate implementation ofFrameTimingMetricwith measurements coming directly from the platform, rather than extracted from the Perfetto trace. (I457cb, b/322232828) - Add the ability to dump an ART profile during individual
warmUpiterations. (I17923) - Several changes to
TraceSectionMetricAPI:- Add
Mode.Min,Mode.Max - Add label argument to override section name as metric label
- Added mode name to output to clarify metric meaning
- Changed default to sum, as most usage of this metric is for repeated events Be aware of this changes in CI usage, as it may create discontinuities or break parsing. (Ic1e82, b/301892382, b/301955938)
- Add
Bug Fixes
- Improved error message in baseline profile gradle plugin when specified managed device does not exist (Idea2b, b/313803289)
- Fix for including library baseline profiles in AAR prior to AGP 8.3.0-alpha15 (I1d2af, b/313992099)
- Fixed baseline and startup profile output url at the end of generation task (I802e5, b/313976958)
- Adjusted data source timeouts to attempt to fix
java.lang.IllegalStateException: Failed to stop [ProcessPid(processName=perfetto, pid=...)](I8dc7d, b/323601788) - Add two instrumentation arguments for overriding shader dropping behavior to workaround crashes when benchmarking apps without
ProfileInstaller1.3:androidx.benchmark.dropShaders.enable=true/false: can be used to skip all shader dropping (including that done inStartupMode.Coldlaunches), esp when benchmarking apps that don't yet use profileinstaller 1.3androidx.benchmark.dropShaders.throwOnFailure=true/false: can be used to tolerate failures when trying to drop shaders, for example when benchmarking apps without profileinstaller 1.3 (I4f573)
- Skip method tracing on UI thread when expected to take longer than a few seconds, and cleanup method traces when throwing. (I6e768)
- Throw when filenames are longer than 200 chars to avoid unclear crashes when writing or post-processing files. (I4a5ab)
- Fixes issue where unterminated frames at the beginning and end of the trace could be paired together, which would incorrectly report as a single extremely long frame. (I39353, b/322232828)
- Use
--skip verificationon API 30+ when reinstalling a package on API 30-33 to clear ART profiles on user builds. This helps bypass Play Protect warnings that cause failures on some class of devices. (Ic9e36) - Use
am force-stopto kill apps when not a system app like System UI or Launcher. (I5e028) - Macrobenchmark now waits for
1 secondfor the target application to flush an ART profile (previously it waited for500 ms). (I85a50, b/316082056) - Improve
FrameTimingMetricerror when frames aren't produced, and always output link to trace when failing metric parsing to assist in diagnosing problem. (I956b9) - Fixed crash in
FrameTimingMetricfailing to parse frame id, especially on certain OEM devices. (Ia24bc, b/303823815, b/306235276) - Relaxed strictness of checks in
FrameMetrics, and added more detail to error messages. (Iadede)
Browser: v1.8.0-rc01
February 21, 2024
androidx.browser:browser:1.8.0-rc01 is released with no changes since 1.8.0-beta02. Version 1.8.0-rc01 contains these commits.
Compose Animation: v1.6.2
February 21, 2024
androidx.compose.animation:animation-*:1.6.2 is released. Version 1.6.2 contains these commits.
Compose Animation: v1.7.0-alpha03
February 21, 2024
androidx.compose.animation:animation-*:1.7.0-alpha03 is released. Version 1.7.0-alpha03 contains these commits.
New Features
- New
Modifier.animateContentSizethat takes an additional parameter for custom content alignment. (
2024-02-09
Media3: v1.3.0-beta01
February 7, 2024
androidx.media3:media3-*:1.3.0-beta01 is released. Version 1.3.0-beta01 contains these commits.
- Common Library:
- Populate both
artworkUriandartworkDatainMediaMetadata.Builder.populate(MediaMetadata)when at least one of them is non-null (#964).
- Populate both
- ExoPlayer:
- Prevent subclassing
CompositeSequenceableLoader. This component was previously made extensible but was never subclassed within the library. Customizations can be done by wrapping an instance using the decorator pattern and implementing a customCompositeSequenceableLoaderFactory. - Fix issue where repeating the same time causes metadata from this item to be cleared (#1007).
- Rename
experimentalSetSubtitleParserFactorymethods onBundledChunkExtractor.FactoryandDefaultHlsExtractorFactorytosetSubtitleParserFactoryand disallow passingnull. Use the newexperimentalParseSubtitlesDuringExtraction(boolean)methods to control parsing behaviour. - Add support for customising the
SubtitleParser.Factoryused during extraction. This can be achieved withMediaSource.Factory.setSubtitleParserFactory().
- Prevent subclassing
- Extractors:
- MP3: Use constant bitrate (CBR) seeking for files with an
Infoheader (the CBR equivalent of theXingheader). Previously we used the seek table from theInfoheader, but this results in less precise seeking than if we ignore it and assume the file is CBR. - MPEG2-TS: Add DTS, DTS-LBR and DTS:X Profile2 support (#275).
- Extract audio types from TS descriptors and map them to role flags, allowing users to make better-informed audio track selections (#973).
- MP3: Use constant bitrate (CBR) seeking for files with an
- Image:
- Add support for DASH thumbnails. Grid images are cropped and individual thumbnails are provided to
ImageOutputclose to their presentation times.
- Add support for DASH thumbnails. Grid images are cropped and individual thumbnails are provided to
- Session:
- Disable double-click detection for TV apps (#962).
2024-02-07
Activity: v1.9.0-alpha03
February 7, 2024
androidx.activity:activity:1.9.0-alpha03, androidx.activity:activity-compose:1.9.0-alpha03, and androidx.activity:activity-ktx:1.9.0-alpha03 are released. Version 1.9.0-alpha03 contains these commits.
Lint Warning
- The
OnBackPressedCallback,BackHandler, andPredictiveBackHandlerAPIs 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. (1e4222, 2c950d, b/287505200)
Bug Fixes
- If a back event is sent from the system started during an already running Predictive Back Gesture, the currently running Predictive Back Gesture is canceled and the new back event takes over to begin a new Predictive Back Gesture. (I3482e)
- Fixed a crash when accessing the
onBackPressedDispatcherfrom aComponentActivityfor the first time from a background thread. It is now safe to access theonBackPressedDispatcheron any thread. (I79955)
Browser: v1.8.0-beta02
February 7, 2024
androidx.browser:browser:1.8.0-beta02 is released. Version 1.8.0-beta02 contains these commits.
API Changes
- Renamed
CustomTabsIntent.Builder#setActivitySideSheetEnableMaximizationtoCustomTabsIntent Builder#setActivitySideSheetMaximizationEnabledand made it a public API. It allows developers to enable or disable the maximization button when the Custom Tab is acting as a side sheet. (Ie3564)
Compose Animation: v1.6.1
February 7, 2024
androidx.compose.animation:animation-*:1.6.1 is released. Version 1.6.1 contains these commits.
Bug Fixes
- Compatibility fix for
KeyframesSpec. (I2bdf3, b/322214617)
Compose Animation: v1.7.0-alpha02
February 7, 2024
androidx.compose.animation:animation-*:1.7.0-alpha02 is released. Version 1.7.0-alpha02 contains these commits.
Bug Fixes
- Compatibility fix for
KeyframesSpec. (I2bdf3, b/322214617) - Fixed
Modifier.animateContentSizenot resetting properly when used inLazyList. (I070512, b/322525716) - Fixed
IllegalStateExceptiononKeyframesSpecwhen using out of range timestamps. (I341b8, b/322839811)
Compose Compiler: v1.5.9
February 7, 2024
androidx.compose.compiler:compiler:1.5.9 and androidx.compose.compiler:compiler-hosted:1.5.9 are released. Version 1.5.9 contains these commits.
Bug Fixes
- Fix composable calls in anonymous object initializer. (b/320261458, 96315c)
- Count recursive local declarations as captures. (b/318745941, e7b4b0)
- Fix Intrinsic remember changes behavior related to Java method refs by forceing .changed for function types with intrinsic remember. (b/319810819, 77128e)
- Added an experimental optimization that will remove the groups around functions that are not skippable such as explicitly marked as
@NonSkippableComposableand functions that are implicitly not skippable such inline functions and functions that return a non-Unit value such asremember. - This optimization can be enabled by passing plugin option,
-P plugin:androidx.compose.compiler.plugins.kotlin:nonSkippingGroupOptimization=trueto the Kotlin compiler. (I1688f)
Compose Foundation: v1.6.1
February 7, 2024
androidx.compose.foundation:foundation-*:1.6.1 is released. Version 1.6.1 contains these commits.
Bug Fixes
- Fix staggered grid measure when scrolled over limit. (bffc39)
- Add check for layout with large dimensions. (e74af5)
- Fix placement of 0-sized items at the start of the staggered grid. (785f94)
- Call onRelease callback in the same order as onForgotten. (31ce3b)
Compose Foundation: v1.7.0-alpha02
February 7, 2024
androidx.compose.foundation:foundation-*:1.7.0-alpha02 is released. Version 1.7.0-alpha02 contains these commits.
API Changes
HorizontalPager,VerticalPagerandPagerStateare promoted to stable. (I67660, b/316966909)- Added
LocalTextLinkStylecomposition local that allows to change the style of the links in Text across the app. If you're using your own theme in the app, you should be setting this composition local according to your theming. When using Material theme the color of the link by default will be set to Material's primary color. (
2024-01-26
Annotation 1.1.0: Annotation 1.1.0-alpha03
January 26, 2024
androidx.test:annotation:1.1.0-alpha03} is released.
API Changes
- Un-hide ExperimentalTestApi
Core 1.6.0: Core Core-ktx 1.6.0-alpha05
January 26, 2024
androidx.test:core:1.6.0-alpha05 and androidx.test:core-ktx:1.6.0-alpha05 are released.
Bug Fixes
- Update Activity Scenario reference documentation to fix missing links
- Remove all support for Android SDKs < 19. Minimum is API 19 (Android Kit Kat 4.4)
- Reference doc cleanup - document previously missing parameters, fix links, etc
Espresso 3.6.0: Espresso 3.6.0-alpha03
January 26, 2024
The following artifacts were released:
androidx.test.espresso:espresso-accessibility:3.6.0-alpha03androidx.test.espresso:espresso-core:3.6.0-alpha03androidx.test.espresso:espresso-contrib:3.6.0-alpha03androidx.test.espresso:espresso-idling-resource:3.6.0-alpha03androidx.test.espresso:espresso-intents:3.6.0-alpha03androidx.test.espresso:espresso-remote:3.6.0-alpha03androidx.test.espresso:espresso-web:3.6.0-alpha03androidx.test.espresso.idling:idling-concurrent:3.6.0-alpha03androidx.test.espresso.idling:idling-net:3.6.0-alpha03
Bug Fixes
- Fix typo in AdapterDataLoaderAction error message
- Remove Kotlin collect stdlib calls in Java from espresso
- Reference doc cleanup - document previously missing parameters, fix links, etc
- Remove Kotlin StringKt calls from Java code
- Remove all support for Android SDKs < 19. Minimum is API 19 (Android Kit Kat 4.4)
- Stop posting empty tasks to background threads when running in non-remote mode
- Better handle exceptions that may occur in DefaultFailureHandler's hierarchy capture and screenshot process.
API Changes
- Mark generated IInteractionExecutionStatus class as RestrictTo LIBRARY_GROUP
- Remove ExperimentalTestApi from RuntimePermissionStubber
Test:
Test:
Test:
Monitor 1.7.0: monitor 1.7.0-alpha04
January 26, 2024
androidx.test:monitor:1.7.0-alpha04 is released.
Bug Fixes
- Fix synchronization in IntentMonitorImpl callbacks
- Remove all support for Android SDKs < 19. Minimum is API 19 (Android Kit Kat 4.4)
API Changes * Move androidx.test.platform.tracing back to an internal API
Runner 1.6.0: runner 1.6.0-alpha06
January 26, 2024
androidx.test:runner:1.6.0-alpha06 is released.
Bug Fixes
- Attempt to clarify limitations and deprecation reasons in RequiresDevice documentation
- Remove all support for Android SDKs < 19. Minimum is API 19 (Android Kit Kat 4.4)
- Fix that "-e class" and "-e notClass" on the same class/method should perform the same result (no tests run)
API Changes
- Mark androidx.test.services.** as RestrictTo LIBRARY_GROUP
- Remove ExperimentalTestApi from CustomFilter - making it public
- Remove ExperimentalTestApi from PackagePrefixClasspathSuite - make it public
- Mark PermissionRequester as RestrictTo LIBRARY_GROUP instead of ExperimentalTestApi
Rules 1.6.0: rules 1.6.0-alpha03
January 26, 2024
androidx.test:rules:1.6.0-alpha03 is released.
Bug Fixes
- Remove all support for Android SDKs < 19. Minimum is API 19 (Android Kit Kat 4.4)
API Changes
- Recommend use of UiAutomation#grantRuntimePermissions instead of GrantPermissionRule
Services 1.5.0: services 1.5.0-alpha03
January 26, 2024
androidx.test.services:test-services:1.5.0-alpha03 androidx.test.services:storage:1.5.0-alpha03 are released.
Bug Fixes
- When files are opened for writing, TestStorage now truncates the file unless it is explicitly opened for appending. This prevents bytes from a prior write to the file from remaining at the end of the file.
- Remove all support for Android SDKs < 19. Minimum is API 19 (Android Kit Kat 4.4)
2024-01-25
Activity: v1.9.0-alpha02
January 24, 2024
androidx.activity:activity:1.9.0-alpha02, androidx.activity:activity-compose:1.9.0-alpha02, and androidx.activity:activity-ktx:1.9.0-alpha02 are released. Version 1.9.0-alpha02 contains these commits.
Kotlin Conversions
ActivityResultRegistryhas been rewritten in Kotlin. This ensures that the nullability of the generics on the contract passed toregisterwill correctly be passed through to theActivityResultLauncherreturned to you. (I121f0)ActivityResulthas been rewritten in Kotlin. TheActivityResultKotlin extensions that support destructuring into theresultCodeanddatafields have been moved fromactivity-ktxtoactivity. (I0565a)- The Kotlin extensions of
by viewModels()forComponentActivityandtrackPipAnimationHintViewhave been moved fromactivity-ktxtoactivity. Theactivity-ktxartifact is now completely empty. (I0a444)
Bug Fixes
- The
enableEdgeToEdgeAPI now draws around any display cutouts. (a3644b, b/311173461) - From Activity
1.8.2: Fixed the extra passed to the Photo Picker Activity Contract'sACTION_SYSTEM_FALLBACK_PICK_IMAGESto correctly pass it theEXTRA_SYSTEM_FALLBACK_PICK_IMAGES_MAXkey, rather than using the extra with the key"com.google.android.gms.provider.extra.PICK_IMAGES_MAX". It is strongly recommended if you are an OEM who implements a system fallback Photo Picker to support both extras to ensure the widest compatibility. (I96a00)
Annotation-Experimental: v1.4.0
January 24, 2024
androidx.annotation:annotation-experimental:1.4.0 is released. Version 1.4.0 contains these commits.
Important changes since 1.3.0
- Add support for Kotlin multi-platform
- Fix compatibility with Kotlin 2.0
- Show warnings for Java usages of experimentally-annotated Kotlin properties (I8bd43)
- Fix placement of autofix annotation on Kotlin methods (Id7a41)
Benchmark: v1.2.3
January 24, 2024
androidx.benchmark:benchmark-*:1.2.3 is released. Version 1.2.3 contains these commits.
Bug Fixes
- Removed exception from Baseline Profile Gradle Plugin when AGP version is 8.3.0 or higher.
- Fix for including library baseline profiles in AAR prior to AGP 8.3.0-alpha15.
CameraX: v1.4.0-alpha04
January 24, 2024
androidx.camera:camera-*:1.4.0-alpha04 is released. Version 1.4.0-alpha04 contains these commits.
New Features
- New artifact: camera-effects: A library for applying real time effects to CameraX output, including
Preview,VideoCaptureand/orImageCapture. This artifact contains OpenGL implementations of theCameraEffectAPI that manipulates the camera output efficiently. OverlayEffect: for drawing overlays with Android’s Canvas API. This allows the app to apply a watermark or highlight detected objects on camera outputs.DynamicRangeAPIs for the Preview Use Case: The dynamic range can now be set on the Preview Use Case, independently of the Video Use Case. This allows HDR dynamic ranges such as HLG10 for Preview alone. New APIs are also available inCameraInfoto query which dynamic ranges each camera supports.
API Changes
- Renamed
ScreenFlashUiCompletertoScreenFlashListenerand movedScreenFlashUiCompleter#getExpirationTimeMillistoexpirationTimeMillisparameter ofScreenFlash#apply. (I13944) - New APIs added to allow dynamic range to be set on Preview use case, and to query dynamic ranges supported by each camera. This allows HDR dynamic ranges, such as HLG10, to be used with the Preview use case alone, no longer requiring a
VideoCaptureto be bound at the same time. (If25e3) - Renamed
getMirroring()toisMirroring()(I47063) - Added Realtime still capture latency estimate support in CameraX. Camera extensions enable applications to use an API that provides an estimate of how long a capture will take. The estimate takes into account the current environment conditions, the camera state and includes the time spent processing multi-frame capture requests along with any additional time for encoding processed buffers if necessary. (I05c3a)
- Renamed
ScreenFlashUiControltoScreenFlash,ScreenFlashUiControl#applyScreenFlashUitoScreenFlash#apply,ScreenFlashUiControl#clearScreenFlashUitoScreenFlash#clear, and addedgetScreenFlashUiApplyTimeoutSecondsmethod instead of exposingSCREEN_FLASH_UI_APPLY_TIMEOUT_SECONDSdirectly. (Iccdd0)
Bug Fixes
- Fixed a memory leakage that results in activities or fragments not being released when Extensions are enabled (I14215)
- Fixed the issue where
getZoomRatioincorrectly returned a decreased value when applying an increasing zoom ratio. (I4aa0d, b/317543616) ImageCapture#ScreenFlash#clearevent is invoked immediately whenImageCaptureis unbound or camera is closed, also fixes some bugs where it is never invoked due to captures in these scenarios not completing properly. (If99f9)- Fixed the crash that happens when lifecycle is stopped before
takePicturerequest is completed (Idf017, b/...
2024-01-24
Activity: v1.9.0-alpha02
January 24, 2024
androidx.activity:activity:1.9.0-alpha02, androidx.activity:activity-compose:1.9.0-alpha02, and androidx.activity:activity-ktx:1.9.0-alpha02 are released. Version 1.9.0-alpha02 contains these commits.
Kotlin Conversions
ActivityResultRegistryhas been rewritten in Kotlin. This ensures that the nullability of the generics on the contract passed toregisterwill correctly be passed through to theActivityResultLauncherreturned to you. (I121f0)ActivityResulthas been rewritten in Kotlin. TheActivityResultKotlin extensions that support destructuring into theresultCodeanddatafields have been moved fromactivity-ktxtoactivity. (I0565a)- The Kotlin extensions of
by viewModels()forComponentActivityandtrackPipAnimationHintViewhave been moved fromactivity-ktxtoactivity. Theactivity-ktxartifact is now completely empty. (I0a444)
Bug Fixes
- The
enableEdgeToEdgeAPI now draws around any display cutouts. (a3644b, b/311173461) - From Activity
1.8.2: Fixed the extra passed to the Photo Picker Activity Contract'sACTION_SYSTEM_FALLBACK_PICK_IMAGESto correctly pass it theEXTRA_SYSTEM_FALLBACK_PICK_IMAGES_MAXkey, rather than using the extra with the key"com.google.android.gms.provider.extra.PICK_IMAGES_MAX". It is strongly recommended if you are an OEM who implements a system fallback Photo Picker to support both extras to ensure the widest compatibility. (I96a00)
Annotation-Experimental: v1.4.0
January 24, 2024
androidx.annotation:annotation-experimental:1.4.0 is released. Version 1.4.0 contains these commits.
Important changes since 1.3.0
- Add support for Kotlin multi-platform
- Fix compatibility with Kotlin 2.0
- Show warnings for Java usages of experimentally-annotated Kotlin properties (I8bd43)
- Fix placement of autofix annotation on Kotlin methods (Id7a41)
Benchmark: v1.2.3
January 24, 2024
androidx.benchmark:benchmark-*:1.2.3 is released. Version 1.2.3 contains these commits.
Bug Fixes
- Removed exception from Baseline Profile Gradle Plugin when AGP version is 8.3.0 or higher.
- Fix for including library baseline profiles in AAR prior to AGP 8.3.0-alpha15.
CameraX: v1.4.0-alpha04
January 24, 2024
androidx.camera:camera-*:1.4.0-alpha04 is released. Version 1.4.0-alpha04 contains these commits.
New Features
- New artifact: camera-effects: A library for applying real time effects to CameraX output, including
Preview,VideoCaptureand/orImageCapture. This artifact contains OpenGL implementations of theCameraEffectAPI that manipulates the camera output efficiently. OverlayEffect: for drawing overlays with Android’s Canvas API. This allows the app to apply a watermark or highlight detected objects on camera outputs.DynamicRangeAPIs for the Preview Use Case: The dynamic range can now be set on the Preview Use Case, independently of the Video Use Case. This allows HDR dynamic ranges such as HLG10 for Preview alone. New APIs are also available inCameraInfoto query which dynamic ranges each camera supports.
API Changes
- Renamed
ScreenFlashUiCompletertoScreenFlashListenerand movedScreenFlashUiCompleter#getExpirationTimeMillistoexpirationTimeMillisparameter ofScreenFlash#apply. (I13944) - New APIs added to allow dynamic range to be set on Preview use case, and to query dynamic ranges supported by each camera. This allows HDR dynamic ranges, such as HLG10, to be used with the Preview use case alone, no longer requiring a
VideoCaptureto be bound at the same time. (If25e3) - Renamed
getMirroring()toisMirroring()(I47063) - Added Realtime still capture latency estimate support in CameraX. Camera extensions enable applications to use an API that provides an estimate of how long a capture will take. The estimate takes into account the current environment conditions, the camera state and includes the time spent processing multi-frame capture requests along with any additional time for encoding processed buffers if necessary. (I05c3a)
- Renamed
ScreenFlashUiControltoScreenFlash,ScreenFlashUiControl#applyScreenFlashUitoScreenFlash#apply,ScreenFlashUiControl#clearScreenFlashUitoScreenFlash#clear, and addedgetScreenFlashUiApplyTimeoutSecondsmethod instead of exposingSCREEN_FLASH_UI_APPLY_TIMEOUT_SECONDSdirectly. (Iccdd0)
Bug Fixes
- Fixed a memory leakage that results in activities or fragments not being released when Extensions are enabled (I14215)
- Fixed the issue where
getZoomRatioincorrectly returned a decreased value when applying an increasing zoom ratio. (I4aa0d, b/317543616) ImageCapture#ScreenFlash#clearevent is invoked immediately whenImageCaptureis unbound or camera is closed, also fixes some bugs where it is never invoked due to captures in these scenarios not completing properly. (If99f9)- Fixed the crash that happens when lifecycle is stopped before
takePicturerequest is completed (Idf017, b/...
2024-01-15
Media3: v1.3.0-alpha01
January 15, 2024
- Common Library:
- Implement support for
android.resource://package/[type/]nameraw resource URIs wherepackageis different to the package of the current application. This has always been documented to work, but wasn't correctly implemented until now. - Normalize MIME types set by app code or read from media to be fully lower-case.
- Define ads with a full
MediaIteminstead of a singleUriinAdPlaybackState. - Increase
minSdkto 19 (Android KitKat). This is aligned with all other AndroidX libraries, and is required for us to upgrade to the latest versions of our AndroidX dependencies.
- Implement support for
- ExoPlayer:
- Add
PreloadMediaSourceandPreloadMediaPeriodthat allows apps to preload a content media source at a specific start position before playback.PreloadMediaSourcetakes care of preparing the content media source to receive theTimeline, preparing and caching the period at the given start position, selecting tracks and loading media data for the period. Apps control the preload progress by implementingPreloadMediaSource.PreloadControland set the preloaded source to the player for playback. - Add
ExoPlayer.setImageOutputthat allows apps to setImageRenderer.ImageOutput. DefaultRenderersFactorynow provides anImageRendererto the player by default with nullImageOutputandImageDecoder.Factory.DEFAULT.- Emit
Player.Listener.onPositionDiscontinuityevent when silence is skipped (#765). - Add experimental support for parsing subtitles during extraction. You can enable this using
MediaSource.Factory.experimentalParseSubtitlesDuringExtraction(). - Support adaptive media sources with
PreloadMediaSource. - Implement
HttpEngineDataSource, anHttpDataSourceusing the HttpEngine API.
- Add
- Transformer:
- Add support for flattening H.265/HEVC SEF slow motion videos.
- Increase transmuxing speed, especially for 'remove video' edits.
- Add API to ensure that the output file starts on a video frame. This can make the output of trimming operations more compatible with player implementations that don't show the first video frame until its presentation timestamp (#829).
- Track Selection:
- Add
DefaultTrackSelector.selectImageTrackto enable image track selection. - Add
TrackSelectionParameters.isPrioritizeImageOverVideoEnabledto determine whether to select an image track if both an image track and a video track are available. The default value isfalsewhich means selecting a video track is prioritized.
- Add
- Extractors:
- Add additional AV1C parsing to MP4 extractor to retrieve
ColorInfo.colorSpace,ColorInfo.colorTransfer, andColorInfo.colorRangevalues (#692).
- Add additional AV1C parsing to MP4 extractor to retrieve
- Video:
- Change the
MediaCodecVideoRendererconstructor that takes aVideoFrameProcessor.Factoryargument and replace it with a constructor that takes aVideoSinkProviderargument. Apps that want to inject a customVideoFrameProcessor.Factorycan instantiate aCompositingVideoSinkProviderthat uses the customVideoFrameProcessor.Factoryand pass the video sink provider toMediaCodecVideoRenderer.
- Change the
- Text:
- Fix serialization of bitmap cues to resolve
Tried to marshall a Parcel that contained Binder objectserror when usingDefaultExtractorsFactory.setTextTrackTranscodingEnabled(#836). - CEA-708: Ignore
rowLockvalue. The CEA-708-E S-2023 spec states thatrowLockandcolumnLockshould both be assumed to be true, regardless of the values present in the stream (columnLocksupport is not implemented, so it's effectively assumed to always be false).
- Fix serialization of bitmap cues to resolve
- DRM:
- Play 'clear lead' unencrypted samples in DRM content immediately by default, even if the keys for the later encrypted samples aren't ready yet. This may lead to mid-playback stalls if the keys still aren't ready when the playback position reaches the encrypted samples (but previously playback wouldn't have started at all by this point). This behavior can be disabled with
MediaItem.DrmConfiguration.Builder.setPlayClearContentWithoutKeyorDefaultDrmSessionManager.Builder.setPlayClearSamplesWithoutKeys.
- Play 'clear lead' unencrypted samples in DRM content immediately by default, even if the keys for the later encrypted samples aren't ready yet. This may lead to mid-playback stalls if the keys still aren't ready when the playback position reaches the encrypted samples (but previously playback wouldn't have started at all by this point). This behavior can be disabled with
- IMA extension:
- Fix issue where DASH and HLS ads without the appropriate file extension can't be played.
- HLS Extension:
- Reduce
HlsMediaPeriodto package-private visibility. This type shouldn't be directly depended on from outside the HLS package.
- Reduce
- Decoder Extensions (FFmpeg, VP9, AV1, MIDI, etc.):
- MIDI decoder: Ignore SysEx event messages (#710).
- Test Utilities:
- Don't pause playback in
TestPlayerRunHelper.playUntilPosition. The test keeps the playback in a playing state, but suspends progress until the test is able to add assertions and further actions.
- Don't pause playback in
- Demo app:
- Add a shortform demo module to demo the usage of
PreloadMediaSourcewith the short-form content use case.
- Add a shortform demo module to demo the usage of