pachli-android/gradle/libs.versions.toml
renovate[bot] d379923882
fix(deps): update androidx.media3 to v1.4.0 (#856)
[![Mend
Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)

This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [androidx.media3:media3-ui](https://togithub.com/androidx/media) |
`1.3.1` -> `1.4.0` |
[![age](https://developer.mend.io/api/mc/badges/age/maven/androidx.media3:media3-ui/1.4.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/maven/androidx.media3:media3-ui/1.4.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/maven/androidx.media3:media3-ui/1.3.1/1.4.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/maven/androidx.media3:media3-ui/1.3.1/1.4.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
|
[androidx.media3:media3-datasource-okhttp](https://togithub.com/androidx/media)
| `1.3.1` -> `1.4.0` |
[![age](https://developer.mend.io/api/mc/badges/age/maven/androidx.media3:media3-datasource-okhttp/1.4.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/maven/androidx.media3:media3-datasource-okhttp/1.4.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/maven/androidx.media3:media3-datasource-okhttp/1.3.1/1.4.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/maven/androidx.media3:media3-datasource-okhttp/1.3.1/1.4.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
|
[androidx.media3:media3-exoplayer-rtsp](https://togithub.com/androidx/media)
| `1.3.1` -> `1.4.0` |
[![age](https://developer.mend.io/api/mc/badges/age/maven/androidx.media3:media3-exoplayer-rtsp/1.4.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/maven/androidx.media3:media3-exoplayer-rtsp/1.4.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/maven/androidx.media3:media3-exoplayer-rtsp/1.3.1/1.4.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/maven/androidx.media3:media3-exoplayer-rtsp/1.3.1/1.4.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
|
[androidx.media3:media3-exoplayer-hls](https://togithub.com/androidx/media)
| `1.3.1` -> `1.4.0` |
[![age](https://developer.mend.io/api/mc/badges/age/maven/androidx.media3:media3-exoplayer-hls/1.4.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/maven/androidx.media3:media3-exoplayer-hls/1.4.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/maven/androidx.media3:media3-exoplayer-hls/1.3.1/1.4.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/maven/androidx.media3:media3-exoplayer-hls/1.3.1/1.4.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
|
[androidx.media3:media3-exoplayer-dash](https://togithub.com/androidx/media)
| `1.3.1` -> `1.4.0` |
[![age](https://developer.mend.io/api/mc/badges/age/maven/androidx.media3:media3-exoplayer-dash/1.4.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/maven/androidx.media3:media3-exoplayer-dash/1.4.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/maven/androidx.media3:media3-exoplayer-dash/1.3.1/1.4.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/maven/androidx.media3:media3-exoplayer-dash/1.3.1/1.4.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
|
[androidx.media3:media3-exoplayer](https://togithub.com/androidx/media)
| `1.3.1` -> `1.4.0` |
[![age](https://developer.mend.io/api/mc/badges/age/maven/androidx.media3:media3-exoplayer/1.4.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/maven/androidx.media3:media3-exoplayer/1.4.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/maven/androidx.media3:media3-exoplayer/1.3.1/1.4.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/maven/androidx.media3:media3-exoplayer/1.3.1/1.4.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|

---

> [!WARNING]
> Some dependencies could not be looked up. Check the Dependency
Dashboard for more information.

---

### Release Notes

<details>
<summary>androidx/media (androidx.media3:media3-ui)</summary>

###
[`v1.4.0`](https://togithub.com/androidx/media/blob/HEAD/RELEASENOTES.md#140-2024-07-24)

[Compare
Source](https://togithub.com/androidx/media/compare/1.3.1...1.4.0)

This release includes the following changes since the
[1.3.1 release](#&#8203;131-2024-04-11):

-   Common Library:
- Forward presumed no-op seek calls to the protected
`BasePlayer.seekTo()`
and `SimpleBasePlayer.handleSeek()` methods instead of ignoring them. If
you are implementing these methods in a custom player, you may need to
handle these additional calls with `mediaItemIndex == C.INDEX_UNSET`.
    -   Remove compile dependency on enhanced Java 8 desugaring
([#&#8203;1312](https://togithub.com/androidx/media/issues/1312)).
- Ensure the duration passed to `MediaItem.Builder.setImageDurationMs()`
        is ignored for a non-image `MediaItem` (as documented).
- Add `Format.customData` to store app-provided custom information about
        `Format` instances.
-   ExoPlayer:
- Add `BasePreloadManager` which coordinates the preloading for multiple
        sources based on the priorities defined by their `rankingData`.
        Customization is possible by extending this class. Add
`DefaultPreloadManager` which uses `PreloadMediaSource` to preload media
samples of the sources into memory, and uses an integer `rankingData`
        that indicates the index of an item on the UI.
- Add `PlayerId` to most methods of `LoadControl` to enable
`LoadControl`
        implementations to support multiple players.
- Remove `Buffer.isDecodeOnly()` and `C.BUFFER_FLAG_DECODE_ONLY`. There
is
no need to set this flag as renderers and decoders will decide to skip
buffers based on timestamp. Custom `Renderer` implementations should
        check if the buffer time is at least
`BaseRenderer.getLastResetPositionUs()` to decide whether a sample
should be shown. Custom `SimpleDecoder` implementations can check
`isAtLeastOutputStartTimeUs()` if needed or mark other buffers with
        `DecoderOutputBuffer.shouldBeSkipped` to skip them.
    -   Allow a null value to be returned by
`TargetPreloadStatusControl.getTargetPreloadStatus(T)` to indicate not
        to preload a `MediaSource` with the given `rankingData`.
    -   Add `remove(MediaSource)` to `BasePreloadManager`.
- Add `reset()` to `BasePreloadManager` to release all the holding
sources
        while keep the preload manager instance.
- Add `ExoPlayer.setPriority()` (and `Builder.setPriority()`) to define
the priority value used in `PriorityTaskManager` and for MediaCodec
        importance from API 35.
    -   Fix issue with updating the last rebuffer time which resulted in
        incorrect `bs` (buffer starvation) key in CMCD
([#&#8203;1124](https://togithub.com/androidx/media/issues/1124)).
    -   Add

`PreloadMediaSource.PreloadControl.onLoadedToTheEndOfSource(PreloadMediaSource)`
to indicate that the source has loaded to the end. This allows the
        `DefaultPreloadManager` and the custom
`PreloadMediaSource.PreloadControl` implementations to preload the next
        source or take other actions.
    -   Fix bug where silence skipping at the end of items can trigger a
        playback exception.
- Add `clear` to `PreloadMediaSource` to discard the preloading period.
    -   Add new error code
`PlaybackException.ERROR_CODE_DECODING_RESOURCES_RECLAIMED` that is used
        when codec resources are reclaimed for higher priority tasks.
- Let `AdsMediaSource` load preroll ads before initial content media
        preparation completes
([#&#8203;1358](https://togithub.com/androidx/media/issues/1358)).
- Fix bug where playback moved to `STATE_ENDED` when re-preparing a
multi-period DASH live stream after the original period was already
        removed from the manifest.
    -   Rename `onTimelineRefreshed()` to `onSourcePrepared()` and
        `onPrepared()` to `onTracksSelected()` in
        `PreloadMediaSource.PreloadControl`. Also rename the IntDefs in
        `DefaultPreloadManager.Stage` accordingly.
- Add experimental support for dynamic scheduling to better align work
with CPU wake-cycles and delay waking up to when renderers can progress.
You can enable this using `experimentalSetDynamicSchedulingEnabled()`
        when setting up your ExoPlayer instance.
- Add `Renderer.getDurationToProgressUs()`. A `Renderer` can implement
this method to return to ExoPlayer the duration that playback must
        advance for the renderer to progress. If `ExoPlayer` is set with
`experimentalSetDynamicSchedulingEnabled()` then `ExoPlayer` will call
        this method when calculating the time to schedule its work task.
- Add `MediaCodecAdapter#OnBufferAvailableListener` to alert when input
and output buffers are available for use by `MediaCodecRenderer`.
`MediaCodecRenderer` will signal `ExoPlayer` when receiving these
        callbacks and if `ExoPlayer` is set with
`experimentalSetDynamicSchedulingEnabled()`, then `ExoPlayer` will
        schedule its work loop as renderers can make progress.
    -   Use data class for `LoadControl` methods instead of individual
        parameters.
- Add `ExoPlayer.isReleased()` to check whether `Exoplayer.release()`
has
        been called.
- Add `ExoPlayer.Builder.setMaxSeekToPreviousPositionMs()` to configure
the maximum position for which `seekToPrevious()` seeks to the previous
item ([#&#8203;1425](https://togithub.com/androidx/media/issues/1425)).
    -   Fix some audio focus inconsistencies, e.g. not reporting full or
        transient focus loss while the player is paused
([#&#8203;1436](https://togithub.com/androidx/media/issues/1436)).
- Fix potential `IndexOutOfBoundsException` caused by extractors
reporting
        additional tracks after the initial preparation step
([#&#8203;1476](https://togithub.com/androidx/media/issues/1476)).
- `Effects` in `ExoPlayer.setVideoEffect()` will receive the timestamps
        with the renderer offset removed
([#&#8203;1098](https://togithub.com/androidx/media/issues/1098)).
- Fix potential `IllegalArgumentException` when handling player error
that
        happened while reading ahead into another playlist item
([#&#8203;1483](https://togithub.com/androidx/media/issues/1483)).
-   Transformer:
    -   Add `audioConversionProcess` and `videoConversionProcess` to
`ExportResult` 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.
- Work around a decoder bug where the number of audio channels was
capped
        at stereo when handling PCM input.
- When selecting tracks in `ExoPlayerAssetLoader`, ignore audio channel
        count constraints as they only apply for playback.
    -   Replace `androidx.media3.transformer.Muxer` interface with
        `androidx.media3.muxer.Muxer` and remove
        `androidx.media3.transformer.Muxer`.
    -   Fix HEIC image loading from content URI schemes.
([#&#8203;1373](https://togithub.com/androidx/media/issues/1373)).
- Adjust audio track duration in `AudioGraphInput` to improve AV sync.
- Remove `ExportResult.processedInputs` field. If you use this field for
codec details, then use `DefaultDecoderFactory.listener` instead. In
case of a codec exception, codec details will be available in the
        `ExportException.codecInfo`.
-   Extractors:
- MPEG-TS: Roll forward the change ensuring the last frame is rendered
by
        passing the last access unit of a stream to the sample queue
([#&#8203;7909](https://togithub.com/google/ExoPlayer/issues/7909)).
Incorporating fixes to resolve the issues that emerged in I-frame only
HLS
streams([#&#8203;1150](https://togithub.com/androidx/media/issues/1150))
and
        H.262 HLS streams
([#&#8203;1126](https://togithub.com/androidx/media/issues/1126)).
- MP3: Prefer the data size from an `Info` frame over the size reported
by
the underlying stream (e.g. file size, or HTTP `Content-Length` header).
This helps to exclude non-playable trailer data (e.g. album artwork)
from constant bitrate seeking calculations, making seeks more accurate
([#&#8203;1376](https://togithub.com/androidx/media/issues/1376)).
- MP3: Use the frame count and other data in an `Info` frame (if
present)
to compute an average bitrate for constant bitrate seeking, rather than
extrapolating from the bitrate of the frame after the `Info` frame,
        which may be artificially small, e.g. `PCUT` frame
([#&#8203;1376](https://togithub.com/androidx/media/issues/1376)).
    -   Fix PCM audio format extraction in AVI containers.
-   Audio:
    -   Fix DTS:X Profile 2 encoding attributes for passthrough playback
        ([#&#8203;1299](https://togithub.com/androidx/media/pull/1299)).
- For offloaded playback, reset the tracking field for stream completion
in `DefaultAudioSink` prior to calling `AudioTrack.stop()` so that
        `AudioTrack.StreamEventCallback#onPresentationEnded` correctly
        identifies when all pending data has been played.
- Fix bug in `SilenceSkippingAudioProcessor` where transitions between
different audio formats (for example stereo to mono) can cause the
        processor to throw an exception
([#&#8203;1352](https://togithub.com/androidx/media/issues/1352)).
- Implement `MediaCodecAudioRenderer.getDurationToProgressUs()` so that
ExoPlayer will dynamically schedule its main work loop to when the
        MediaCodecAudioRenderer can make progress.
-   Video:
- Fix issue where `Listener.onRenderedFirstFrame()` arrives too early
when
        switching surfaces mid-playback.
- Fix decoder fallback logic for Dolby Vision to use a compatible AV1
        decoder if needed
        ([#&#8203;1389](https://togithub.com/androidx/media/pull/1389)).
- Fix codec exception that may be caused by enabling a video renderer
        mid-playback.
-   Text:
- Fix issue where subtitles starting before a seek position are skipped.
        This issue was only introduced in Media3 1.4.0-alpha01.
- Change default subtitle parsing behavior so it happens during
extraction
        instead of during rendering (see
[ExoPlayer's architecture
diagram](https://developer.android.com/media/media3/exoplayer/glossary#exoplayer)
        for the difference between extraction and rendering).
        -   This change can be overridden by calling **both**
`MediaSource.Factory.experimentalParseSubtitlesDuringExtraction(false)`
and `TextRenderer.experimentalSetLegacyDecodingEnabled(true)`. See
            the
[docs on
customization](https://developer.android.com/media/media3/exoplayer/customization)
for how to plumb these components into an `ExoPlayer` instance.
These methods (and all support for legacy subtitle decoding) will be
            removed in a future release.
- Apps with custom `SubtitleDecoder` implementations need to update
            them to implement `SubtitleParser` instead (and
`SubtitleParser.Factory` instead of `SubtitleDecoderFactory`).
- PGS: Fix run-length decoding to resolve `0` as a color index, instead
of
        a literal color value
        ([#&#8203;1367](https://togithub.com/androidx/media/pull/1367)).
- CEA-708: Ignore `rowLock` value. The CEA-708-E S-2023 spec states that
`rowLock` and `columnLock` should both be assumed to be true, regardless
        of the values present in the stream (`columnLock` support is not
        implemented, so it's effectively assumed to always be false).
- This was originally included in the `1.3.0-alpha01` release notes,
but the change was accidentally reverted before the `1.3.0-rc01`
            release. This is now fixed, so the change is present again.
- CEA-708: Avoid duplicate newlines being added by ExoPlayer's naive
        handling of the 'set pen location' command
        ([#&#8203;1315](https://togithub.com/androidx/media/pull/1315)).
- Fix an `IllegalArgumentException` from `LegacySubtitleUtil` when a
WebVTT subtitle sample contains no cues, e.g. as part of a DASH stream
([#&#8203;1516](https://togithub.com/androidx/media/issues/1516)).
-   Metadata:
    -   Fix mapping of MP4 to ID3 sort tags. Previously the 'album sort'
(`soal`), 'artist sort' (`soar`) and 'album artist sort' (`soaa`) MP4
tags were wrongly mapped to the `TSO2`, `TSOA` and `TSOP` ID3 tags
([#&#8203;1302](https://togithub.com/androidx/media/issues/1302)).
- Fix reading of MP4 (/iTunes) numeric `gnre` (genre) and `tmpo` (tempo)
        tags when the value is more than one byte long.
    -   Propagate ID3 `TCON` frame to `MediaMetadata.genre`
([#&#8203;1305](https://togithub.com/androidx/media/issues/1305)).
-   Image:
    -   Add support for non-square DASH thumbnail grids
        ([#&#8203;1300](https://togithub.com/androidx/media/pull/1300)).
    -   Add support for AVIF for API 34+.
- Allow `null` as parameter for `ExoPlayer.setImageOutput()` to clear a
        previously set `ImageOutput`.
-   DataSource:
- Implement support for `android.resource://package/id` raw resource
URIs
where `package` 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 the `DataSpec` constructors. This
        parameter was already annotated to be non-null.
- Allow `ByteArrayDataSource` to resolve a URI to a byte array during
        `open()`, instead of being hard-coded at construction
([#&#8203;1405](https://togithub.com/androidx/media/issues/1405)).
-   DRM:
    -   Allow setting a `LoadErrorHandlingPolicy` on
        `DefaultDrmSessionManagerProvider`
([#&#8203;1271](https://togithub.com/androidx/media/issues/1271)).
-   Effect:
- Support multiple speed changes within the same `EditedMediaItem` or
        `Composition` in `SpeedChangeEffect`.
    -   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 using
`OverlaySettings.Builder.setOverlayFrameAnchor()`, flip their x and y
        values by multiplying them by `-1`.
    -   Fix bug where `TimestampWrapper` crashes when used with
        `ExoPlayer#setVideoEffects`
        ([#&#8203;821](https://togithub.com/androidx/media/issues/821)).
- Change default SDR color working space from linear colors to
electrical
BT 709 SDR video. Also provide third option to retain the original
        colorspace.
    -   Allow defining indeterminate z-order of EditedMediaItemSequences
        ([#&#8203;1055](https://togithub.com/androidx/media/pull/1055)).
- Maintain a consistent luminance range across different pieces of HDR
        content (uses the HLG range).
    -   Add support for Ultra HDR (bitmap) overlays on HDR content.
    -   Allow `SeparableConvolution` effects to be used before API 26.
- Remove unused `OverlaySettings.useHdr` since dynamic range of overlay
        and frame must match.
- Add HDR support for `TextOverlay`. Luminance of the text overlay can
be
adjusted with `OverlaySettings.Builder.setHdrLuminanceMultiplier()`.
-   IMA extension:
    -   Promote API that is required for apps to play
[DAI ad
streams](https://developers.google.com/ad-manager/dynamic-ad-insertion/full-service)
        to stable.
    -   Add `replaceAdTagParameters(Map <String, String>)` to
`ImaServerSideAdInsertionMediaSource.AdLoader` that allows replacing ad
        tag parameters at runtime.
- Fix bug where `VideoAdPlayer.VideoAdPlayerCallback.onError()` was not
        called when a player error happened during ad playback
([#&#8203;1334](https://togithub.com/androidx/media/issues/1334)).
- Bump IMA SDK version to 3.33.0 to fix a `NullPointerException` when
        using `data://` ad tag URIs
        ([#&#8203;700](https://togithub.com/androidx/media/issues/700)).
-   Session:
- Change default of `CommandButton.enabled` to `true` 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 in `onTaskRemoved()`
([#&#8203;1219](https://togithub.com/androidx/media/issues/1219)).
- Add `MediaSessionService.pauseAllPlayersAndStopSelf()` that
conveniently
allows to pause playback of all sessions and call `stopSelf()` to
        terminate the lifecycle of the `MediaSessionService`.
- 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.
- Hide seekbar in the media notification for live streams by not setting
        the duration into the platform session metadata
([#&#8203;1256](https://togithub.com/androidx/media/issues/1256)).
- Align conversion of `MediaMetadata` to `MediaDescriptionCompat`, to
use
the same preferred order and logic when selecting metadata properties as
        in media1.
- Add `MediaSession.sendError()` that allows sending non-fatal errors to
        Media3 controller. When using the notification controller (see
`MediaSession.getMediaNotificationControllerInfo()`), the custom error
is used to update the `PlaybackState` of the platform session to an
        error state with the given error information
        ([#&#8203;543](https://togithub.com/androidx/media/issues/543)).
- Add `MediaSession.Callback.onPlayerInteractionFinished()` to inform
sessions when a series of player interactions from a specific controller
        finished.
- Add `SessionError` and use it in `SessionResult` and `LibraryResult`
instead of the error code to provide more information about the error
        and how to resolve the error if possible.
- Publish the code for the media3 controller test app that can be used
to
        test interactions with apps publishing a media session.
    -   Propagate extras passed to media3's
`MediaSession[Builder].setSessionExtras()` to a media1 controller's
        `PlaybackStateCompat.getExtras()`.
- Map fatal and non-fatal errors to and from the platform session. A
        `PlaybackException` is mapped to a fatal error state of the
`PlaybackStateCompat`. A `SessionError` sent to the media notification
controller with `MediaSession.sendError(ControllerInfo, SessionError)`
is mapped to a non-fatal error in `PlaybackStateCompat` which means that
error code and message are set but the state of the platform session
        remains different to `STATE_ERROR`.
- Allow the session activity to be set per controller to override the
global session activity. The session activity can be defined for a
controller at connection time by creating a `ConnectionResult` with
        `AcceptedResultBuilder.setSessionActivivty(PendingIntent)`. Once
        connected, the session activity can be updated with
`MediaSession.setSessionActivity(ControllerInfo, PendingIntent)`.
- Improve error replication of calls to `MediaLibrarySession.Callback`.
        Error replication can now be configured by using
`MediaLibrarySession.Builder.setLibraryErrorReplicationMode()` for
choosing the error type or opt-ing out of error replication which is on
        by default.
-   UI:
    -   Add image display support to `PlayerView` when connected to an
`ExoPlayer`
([#&#8203;1144](https://togithub.com/androidx/media/issues/1144)).
- Add customization of various icons in `PlayerControlView` through xml
attributes to allow different drawables per `PlayerView` instance,
        rather than global overrides
([#&#8203;1200](https://togithub.com/androidx/media/issues/1200)).
- Work around a platform bug causing stretched/cropped video when using
        `SurfaceView` inside a Compose `AndroidView` on API 34
([#&#8203;1237](https://togithub.com/androidx/media/issues/1237)).
-   Downloads:
    -   Ensure that `DownloadHelper` does not leak unreleased `Renderer`
        instances, which can eventually result in an app crashing with
`IllegalStateException: Too many receivers, total of 1000, registered
for pid`
([#&#8203;1224](https://togithub.com/androidx/media/issues/1224)).
-   Cronet Extension:
- Fix `SocketTimeoutException` in `CronetDataSource`. In some versions
of
Cronet, the request provided by the callback is not always the same.
        This leads to callback not completing and request timing out
        (https://issuetracker.google.com/328442628).
-   HLS Extension:
- Fix bug where pending EMSG samples waiting for a discontinuity were
delegated in `HlsSampleStreamWrapper` with an incorrect offset causing
        an `IndexOutOfBoundsException` or an `IllegalArgumentException`
([#&#8203;1002](https://togithub.com/androidx/media/issues/1002)).
- Fix bug where non-primary playlists keep reloading for LL-HLS streams
([#&#8203;1240](https://togithub.com/androidx/media/issues/1240)).
    -   Fix bug where enabling CMCD for HLS with initialization segments
        resulted in `Source Error` and `IllegalArgumentException`.
- Fix bug where non-primary playing playlists are not refreshed during
live playback
([#&#8203;1240](https://togithub.com/androidx/media/issues/1240)).
    -   Fix bug where enabling CMCD for HLS live streams causes
        `ArrayIndexOutOfBoundsException`
([#&#8203;1395](https://togithub.com/androidx/media/issues/1395)).
-   DASH Extension:
- Fix bug where re-preparing a multi-period live stream can throw an
        `IndexOutOfBoundsException`
([#&#8203;1329](https://togithub.com/androidx/media/issues/1329)).
    -   Add support for `dashif:Laurl` license urls
([#&#8203;1345](https://togithub.com/androidx/media/issues/1345)).
-   Cast Extension:
- Fix bug that converted the album title of the `MediaQueueItem` to the
        artist in the Media3 media item
        ([#&#8203;1255](https://togithub.com/androidx/media/pull/1255)).
-   Test Utilities:
    -   Implement `onInit()` and `onRelease()` in `FakeRenderer`.
- Change `TestPlayerRunHelper.runUntil()/playUntil()` methods to fail on
        nonfatal errors (e.g. those reported to
        `AnalyticsListener.onVideoCodecError()`). Use the new
`TestPlayerRunHelper.run(player).ignoringNonFatalErrors().untilXXX()`
        method chain to disable this behavior.
-   Demo app:
    -   Use `DefaultPreloadManager` in the short form demo app.
- Allow setting repeat mode with `Intent` arguments from command line
        ([#&#8203;1266](https://togithub.com/androidx/media/pull/1266)).
- Use `HttpEngineDataSource` as the `HttpDataSource` when supported by
the
        device.
-   Remove deprecated symbols:
    -   Remove `CronetDataSourceFactory`. Use `CronetDataSource.Factory`
        instead.
- Remove some `DataSpec` constructors. Use `DataSpec.Builder` instead.
    -   Remove `setContentTypePredicate(Predicate)` method from
`DefaultHttpDataSource`, `OkHttpDataSource` and `CronetDataSource`. Use
        the equivalent method on each `XXXDataSource.Factory` instead.
- Remove `OkHttpDataSource` constructors and `OkHttpDataSourceFactory`.
        Use `OkHttpDataSource.Factory` instead.
- Remove `PlayerMessage.setHandler(Handler)`. Use `setLooper(Looper)`
        instead.
    -   Remove `Timeline.Window.isLive` field. Use the `isLive()` method
        instead.
    -   Remove `DefaultHttpDataSource` constructors. Use
        `DefaultHttpDataSource.Factory` instead.
    -   Remove `DashMediaSource.DEFAULT_LIVE_PRESENTATION_DELAY_MS`. Use
`DashMediaSource.DEFAULT_FALLBACK_TARGET_LIVE_OFFSET_MS` instead.
- Remove `MediaCodecInfo.isSeamlessAdaptationSupported(Format, Format,
boolean)`. Use `MediaCodecInfo.canReuseCodec(Format, Format)` instead.
- Remove `DrmSessionManager.DUMMY` and `getDummyDrmSessionManager()`
        method. Use `DrmSessionManager.DRM_UNSUPPORTED` instead.
- Remove `AnalyticsListener.onAudioInputFormatChanged(EventTime,
Format)`,
`AnalyticsListener.onVideoInputFormatChanged(EventTime, Format)`,
        `AudioRendererEventListener.onAudioInputFormatChanged(Format)`,
`VideoRendererEventListener.onVideoInputFormatChanged(Format)`. Use the
        overloads that take a `DecoderReuseEvaluation` instead.
- Remove `RendererSupport.FormatSupport` IntDef and `FORMAT_HANDLED`,
        `FORMAT_EXCEEDS_CAPABILITIES`, `FORMAT_UNSUPPORTED_DRM`,
`FORMAT_UNSUPPORTED_SUBTYPE`, `FORMAT_UNSUPPORTED_TYPE` constants. Use
the equivalent IntDef and constants in `androidx.media3.common.C`
        instead (e.g. `C.FORMAT_HANDLED`).
    -   Remove `Bundleable` interface. This includes removing all
`Bundleable.Creator<Foo> CREATOR` constant fields. Callers should use
the `Bundle toBundle()` and `static Foo fromBundle(Bundle)` methods on
        each type instead.

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined),
Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about these
updates again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR was generated by [Mend
Renovate](https://www.mend.io/free-developer-tools/renovate/). View the
[repository job
log](https://developer.mend.io/github/pachli/pachli-android).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy40NDAuNyIsInVwZGF0ZWRJblZlciI6IjM4LjI2LjEiLCJ0YXJnZXRCcmFuY2giOiJtYWluIiwibGFiZWxzIjpbXX0=-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-08-21 13:11:32 +02:00

265 lines
17 KiB
TOML

[versions]
aboutlibraries = "11.2.2"
acra = "5.11.3"
agp = "8.5.2"
androidx-activity = "1.9.1"
androidx-appcompat = "1.7.0"
androidx-browser = "1.8.0"
androidx-cardview = "1.0.0"
androidx-constraintlayout = "2.1.4"
androidx-core = "1.13.1"
androidx-exifinterface = "1.3.7"
androidx-fragment = "1.8.1"
androidx-hilt = "1.2.0"
androidx-junit = "1.2.1"
androidx-lifecycle = "2.8.2"
androidx-media3 = "1.4.0"
# Deliberate downgrade until a version with the fix in
# https://android-review.googlesource.com/c/platform/frameworks/support/+/3156343
# is released.
# - https://issuetracker.google.com/issues/343124454
# - https://issuetracker.google.com/issues/349090863
androidx-paging = "3.2.1"
androidx-preference = "1.2.1"
androidx-recyclerview = "1.3.2"
androidx-sharetarget = "1.2.0"
androidx-splashscreen = "1.2.0-alpha01"
androidx-swiperefresh-layout = "1.1.0"
androidx-testing = "2.2.0"
androidx-test-core-ktx = "1.6.1"
androidx-transition = "1.5.0"
androidx-viewpager2 = "1.1.0"
androidx-webkit = "1.11.0"
androidx-work = "2.9.0"
androidx-room = "2.6.1"
app-update = "2.1.0"
apollographql = "3.8.5"
auto-service = "1.1.1"
auto-service-ksp = "1.2.0"
bouncycastle = "1.70"
conscrypt = "2.5.3"
coroutines = "1.8.1"
coroutines-play-services = "1.8.1"
desugar_jdk_libs = "2.0.4"
diffx = "1.1.1"
emoji2 = "1.3.0"
espresso = "3.6.1"
filemoji-compat = "3.2.7"
glide = "4.16.0"
# Deliberate downgrade, https://github.com/tuskyapp/Tusky/issues/3631
glide-animation-plugin = "2.23.0"
hilt = "2.52"
org-json = "20240303"
junit = "4.13.2"
kotlin = "2.0.10"
kotlin-result = "1.1.20"
ksp = "2.0.10-1.0.24"
image-cropper = "4.3.2"
leakcanary = "2.14"
lint = "31.5.2" # = agp + 23.0.0 (= 8.5.2), see https://github.com/googlesamples/android-custom-lint-rules#lint-version
material = "1.12.0"
material-drawer = "9.0.2"
material-iconics = "5.5.0-compose01"
material-typeface = "4.0.0.3-kotlin"
mlkit-language-id = "17.0.0"
mockito-inline = "5.2.0"
mockito-kotlin = "5.4.0"
moshi = "1.15.1"
moshix = "0.27.1"
networkresult-calladapter = "1.0.0"
okhttp = "4.12.0"
okio = "3.9.0"
play-services-base = "18.5.0"
quadrant = "1.9.1"
retrofit = "2.11.0"
robolectric = "4.13"
semver = "2.0.0"
sparkbutton = "4.2.0"
timber = "5.0.1"
touchimageview = "3.6"
truth = "1.4.4"
turbine = "1.1.0"
unified-push = "2.4.0"
xmlwriter = "1.0.4"
# Tool dependencies
betterparse = "0.4.4"
clikt = "4.4.0"
icu4j = "75.1"
junit-jupiter = "5.11.0"
kotlin-logging-jvm = "7.0.0"
logback = "1.5.7"
[plugins]
aboutlibraries = { id = "com.mikepenz.aboutlibraries.plugin", version.ref = "aboutlibraries" }
android-application = { id = "com.android.application", version.ref = "agp" }
android-library = { id = "com.android.library", version.ref = "agp" }
android-lint = { id = "com.android.lint", version.ref = "agp" }
google-ksp = { id = "com.google.devtools.ksp", version.ref = "ksp" }
hilt = { id = "com.google.dagger.hilt.android", version.ref = "hilt" }
kotlin-android = { id = "org.jetbrains.kotlin.android", version.ref = "kotlin" }
kotlin-jvm = { id = "org.jetbrains.kotlin.jvm", version.ref = "kotlin" }
kotlin-parcelize = { id = "org.jetbrains.kotlin.plugin.parcelize", version.ref = "kotlin" }
ktlint = "org.jlleitschuh.gradle.ktlint:12.1.1"
room = { id = "androidx.room", version.ref = "androidx-room" }
quadrant = { id = "com.gaelmarhic.quadrant", version.ref = "quadrant" }
apollographql = { id = "com.apollographql.apollo3", version.ref = "apollographql"}
# Plugins defined by this project
pachli-android-application = { id = "pachli.android.application", version = "unspecified" }
pachli-android-application-flavors = { id = "pachli.android.application.flavors", version = "unspecified" }
pachli-android-hilt = { id = "pachli.android.hilt", version = "unspecified" }
pachli-android-library = { id = "pachli.android.library", version = "unspecified" }
pachli-android-room = { id = "pachli.android.room", version = "unspecified" }
pachli-tool = { id = "pachli.tool", version = "unspecified" }
[libraries]
aboutlibraries-core = { module = "com.mikepenz:aboutlibraries-core", version.ref = "aboutlibraries" }
aboutlibraries-legacy-ui = { module = "com.mikepenz:aboutlibraries", version.ref = "aboutlibraries" }
acra-dialog = { module = "ch.acra:acra-dialog", version.ref = "acra" }
acra-mail = { module = "ch.acra:acra-mail", version.ref = "acra" }
android-material = { module = "com.google.android.material:material", version.ref = "material" }
androidx-activity = { module = "androidx.activity:activity-ktx", version.ref = "androidx-activity" }
androidx-appcompat = { module = "androidx.appcompat:appcompat", version.ref = "androidx-appcompat" }
androidx-browser = { module = "androidx.browser:browser", version.ref = "androidx-browser" }
androidx-cardview = { module = "androidx.cardview:cardview", version.ref = "androidx-cardview" }
androidx-constraintlayout = { module = "androidx.constraintlayout:constraintlayout", version.ref = "androidx-constraintlayout" }
androidx-core-ktx = { module = "androidx.core:core-ktx", version.ref = "androidx-core" }
androidx-core-splashscreen = { module = "androidx.core:core-splashscreen", version.ref = "androidx-splashscreen" }
androidx-core-testing = { module = "androidx.arch.core:core-testing", version.ref = "androidx-testing" }
androidx-emoji2-core = { module = "androidx.emoji2:emoji2", version.ref = "emoji2" }
androidx-emoji2-views-core = { module = "androidx.emoji2:emoji2-views", version.ref = "emoji2" }
androidx-emoji2-view-helper = { module = "androidx.emoji2:emoji2-views-helper", version.ref = "emoji2" }
androidx-exifinterface = { module = "androidx.exifinterface:exifinterface", version.ref = "androidx-exifinterface" }
androidx-fragment-ktx = { module = "androidx.fragment:fragment-ktx", version.ref = "androidx-fragment" }
androidx-hilt-common = { module = "androidx.hilt:hilt-common", version.ref = "androidx-hilt" }
androidx-hilt-compiler = { module = "androidx.hilt:hilt-compiler", version.ref = "androidx-hilt" }
androidx-hilt-work = { module = "androidx.hilt:hilt-work", version.ref = "androidx-hilt" }
androidx-lifecycle-common-java8 = { module = "androidx.lifecycle:lifecycle-common-java8", version.ref = "androidx-lifecycle" }
androidx-lifecycle-livedata-ktx = { module = "androidx.lifecycle:lifecycle-livedata-ktx", version.ref = "androidx-lifecycle" }
androidx-lifecycle-reactivestreams-ktx = { module = "androidx.lifecycle:lifecycle-reactivestreams-ktx", version.ref = "androidx-lifecycle" }
androidx-lifecycle-viewmodel-ktx = { module = "androidx.lifecycle:lifecycle-viewmodel-ktx", version.ref = "androidx-lifecycle" }
androidx-media3-exoplayer = { module = "androidx.media3:media3-exoplayer", version.ref = "androidx-media3" }
androidx-media3-exoplayer-dash = { module = "androidx.media3:media3-exoplayer-dash", version.ref = "androidx-media3" }
androidx-media3-exoplayer-hls = { module = "androidx.media3:media3-exoplayer-hls", version.ref = "androidx-media3" }
androidx-media3-exoplayer-rtsp = { module = "androidx.media3:media3-exoplayer-rtsp", version.ref = "androidx-media3" }
androidx-media3-datasource-okhttp = { module = "androidx.media3:media3-datasource-okhttp", version.ref = "androidx-media3" }
androidx-media3-ui = { module = "androidx.media3:media3-ui", version.ref = "androidx-media3" }
androidx-paging-runtime-ktx = { module = "androidx.paging:paging-runtime-ktx", version.ref = "androidx-paging" }
androidx-preference-ktx = { module = "androidx.preference:preference-ktx", version.ref = "androidx-preference" }
androidx-room-compiler = { module = "androidx.room:room-compiler", version.ref = "androidx-room" }
androidx-room-paging = { module = "androidx.room:room-paging", version.ref = "androidx-room" }
androidx-room-ktx = { module = "androidx.room:room-ktx", version.ref = "androidx-room" }
androidx-room-testing = { module = "androidx.room:room-testing", version.ref = "androidx-room" }
androidx-recyclerview = { module = "androidx.recyclerview:recyclerview", version.ref = "androidx-recyclerview" }
androidx-sharetarget = { module = "androidx.sharetarget:sharetarget", version.ref = "androidx-sharetarget" }
androidx-swiperefreshlayout = { module = "androidx.swiperefreshlayout:swiperefreshlayout", version.ref = "androidx-swiperefresh-layout" }
androidx-test-core-ktx = { module = "androidx.test:core-ktx", version.ref = "androidx-test-core-ktx" }
androidx-test-junit = { module = "androidx.test.ext:junit", version.ref = "androidx-junit" }
androidx-transition = { module = "androidx.transition:transition-ktx", version.ref = "androidx-transition" }
androidx-viewpager2 = { module = "androidx.viewpager2:viewpager2", version.ref = "androidx-viewpager2" }
androidx-webkit = { module = "androidx.webkit:webkit", version.ref = "androidx-webkit" }
androidx-work-runtime-ktx = { module = "androidx.work:work-runtime-ktx", version.ref = "androidx-work" }
androidx-work-testing = { module = "androidx.work:work-testing", version.ref = "androidx-work" }
app-update = { module = "com.google.android.play:app-update", version.ref = "app-update" }
app-update-ktx = { module = "com.google.android.play:app-update-ktx", version.ref = "app-update" }
apollo-runtime = { module = "com.apollographql.apollo3:apollo-runtime", version.ref = "apollographql" }
auto-service-annotations = { module = "com.google.auto.service:auto-service-annotations", version.ref = "auto-service"}
auto-service-ksp = { module = "dev.zacsweers.autoservice:auto-service-ksp", version.ref = "auto-service-ksp"}
bouncycastle = { module = "org.bouncycastle:bcprov-jdk15on", version.ref = "bouncycastle" }
conscrypt-android = { module = "org.conscrypt:conscrypt-android", version.ref = "conscrypt" }
desugar_jdk_libs = { module = "com.android.tools:desugar_jdk_libs", version.ref = "desugar_jdk_libs" }
diffx = { module = "org.pageseeder.diffx:pso-diffx", version.ref = "diffx" }
espresso-core = { module = "androidx.test.espresso:espresso-core", version.ref = "espresso" }
filemojicompat-core = { module = "de.c1710:filemojicompat", version.ref = "filemoji-compat" }
filemojicompat-defaults = { module = "de.c1710:filemojicompat-defaults", version.ref = "filemoji-compat" }
filemojicompat-ui = { module = "de.c1710:filemojicompat-ui", version.ref = "filemoji-compat" }
glide-animation-plugin = { module = "com.github.penfeizhou.android.animation:glide-plugin", version.ref = "glide-animation-plugin" }
glide-compiler = { module = "com.github.bumptech.glide:ksp", version.ref = "glide" }
glide-core = { module = "com.github.bumptech.glide:glide", version.ref = "glide" }
glide-okhttp3-integration = { module = "com.github.bumptech.glide:okhttp3-integration", version.ref = "glide" }
hilt-android = { module = "com.google.dagger:hilt-android", version.ref = "hilt" }
hilt-compiler = { module = "com.google.dagger:hilt-compiler", version.ref = "hilt" }
hilt-android-testing = { module = "com.google.dagger:hilt-android-testing", version.ref = "hilt" }
junit = { module = "junit:junit", version.ref = "junit" }
junit-jupiter = { module = "org.junit.jupiter:junit-jupiter", version.ref = "junit-jupiter" }
junit-jupiter-params = { module = "org.junit.jupiter:junit-jupiter-params", version.ref = "junit-jupiter" }
kotlin-result = { module = "com.michael-bull.kotlin-result:kotlin-result", version.ref = "kotlin-result" }
kotlin-result-coroutines = { module = "com.michael-bull.kotlin-result:kotlin-result-coroutines", version.ref = "kotlin-result" }
kotlinx-coroutines-android = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-android", version.ref = "coroutines" }
kotlinx-coroutines-play-services = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-play-services", version.ref = "coroutines-play-services" }
kotlinx-coroutines-test = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-test", version.ref = "coroutines" }
kotlin-stdlib = { module = "org.jetbrains.kotlin:kotlin-stdlib", version.ref = "kotlin" }
image-cropper = { module = "com.github.CanHub:Android-Image-Cropper", version.ref = "image-cropper" }
leakcanary = { module = "com.squareup.leakcanary:leakcanary-android", version.ref = "leakcanary" }
lint-api = { module = "com.android.tools.lint:lint-api", version.ref = "lint" }
lint-checks = { module = "com.android.tools.lint:lint-checks", version.ref = "lint" }
lint-cli = { module = "com.android.tools.lint:lint", version.ref = "lint" }
lint-tests = { module = "com.android.tools.lint:lint-tests", version.ref = "lint" }
material-drawer-core = { module = "com.mikepenz:materialdrawer", version.ref = "material-drawer" }
material-drawer-iconics = { module = "com.mikepenz:materialdrawer-iconics", version.ref = "material-drawer" }
material-iconics = { module = "com.mikepenz:iconics-core", version.ref="material-iconics" }
material-typeface = { module = "com.mikepenz:google-material-typeface", version.ref = "material-typeface" }
mlkit-language-id = { module = "com.google.android.gms:play-services-mlkit-language-id", version.ref = "mlkit-language-id" }
mockito-kotlin = { module = "org.mockito.kotlin:mockito-kotlin", version.ref = "mockito-kotlin" }
mockito-inline = { module = "org.mockito:mockito-inline", version.ref = "mockito-inline" }
mockwebserver = { module = "com.squareup.okhttp3:mockwebserver", version.ref = "okhttp" }
moshi = { module = "com.squareup.moshi:moshi", version.ref = "moshi" }
moshi-adapters = { module = "com.squareup.moshi:moshi-adapters", version.ref = "moshi" }
moshi-codegen = { module = "com.squareup.moshi:moshi-kotlin-codegen", version.ref = "moshi" }
moshix-sealed-runtime = { module = "dev.zacsweers.moshix:moshi-sealed-runtime", version.ref = "moshix" }
moshix-sealed-codegen = { module = "dev.zacsweers.moshix:moshi-sealed-codegen", version.ref = "moshix" }
networkresult-calladapter = { module = "at.connyduck:networkresult-calladapter", version.ref = "networkresult-calladapter" }
okhttp-core = { module = "com.squareup.okhttp3:okhttp", version.ref = "okhttp" }
okhttp-logging-interceptor = { module = "com.squareup.okhttp3:logging-interceptor", version.ref = "okhttp" }
okhttp-tls = { module = "com.squareup.okhttp3:okhttp-tls", version.ref = "okhttp" }
okio = { module = "com.squareup.okio:okio", version.ref = "okio" }
org-json = { module = "org.json:json", version.ref = "org-json"}
play-services-base = { module = "com.google.android.gms:play-services-base", version.ref = "play-services-base" }
retrofit-converter-moshi = { module = "com.squareup.retrofit2:converter-moshi", version.ref = "retrofit" }
retrofit-core = { module = "com.squareup.retrofit2:retrofit", version.ref = "retrofit" }
robolectric = { module = "org.robolectric:robolectric", version.ref = "robolectric" }
semver = { module = "io.github.z4kn4fein:semver", version.ref = "semver" }
sparkbutton = { module = "at.connyduck.sparkbutton:sparkbutton", version.ref = "sparkbutton" }
timber = { module = "com.jakewharton.timber:timber", version.ref = "timber" }
touchimageview = { module = "com.github.MikeOrtiz:TouchImageView", version.ref = "touchimageview" }
truth = { module = "com.google.truth:truth", version.ref = "truth" }
turbine = { module = "app.cash.turbine:turbine", version.ref = "turbine" }
unified-push = { module = "com.github.UnifiedPush:android-connector", version.ref = "unified-push" }
xmlwriter = { module = "org.pageseeder.xmlwriter:pso-xmlwriter", version.ref = "xmlwriter" }
# Tool libraries
betterparse = { module = "com.github.h0tk3y.betterParse:better-parse", version.ref = "betterparse" }
clikt = { module = "com.github.ajalt.clikt:clikt", version.ref = "clikt" }
icu4j = { module = "com.ibm.icu:icu4j", version.ref = "icu4j"}
kotlin-logging-jvm = { module = "io.github.oshai:kotlin-logging-jvm", version.ref = "kotlin-logging-jvm" }
logback = { module = "ch.qos.logback:logback-classic", version.ref = "logback" }
# build-logic dependencies
android-gradlePlugin = { module = "com.android.tools.build:gradle", version.ref = "agp" }
kotlin-gradlePlugin = { module = "org.jetbrains.kotlin:kotlin-gradle-plugin", version.ref = "kotlin" }
ksp-gradlePlugin = { module = "com.google.devtools.ksp:com.google.devtools.ksp.gradle.plugin", version.ref = "ksp" }
[bundles]
aboutlibraries = ["aboutlibraries-core", "aboutlibraries-legacy-ui"]
acra = ["acra-dialog", "acra-mail"]
androidx = ["androidx-core-ktx", "androidx-appcompat", "androidx-fragment-ktx", "androidx-browser", "androidx-swiperefreshlayout",
"androidx-recyclerview", "androidx-exifinterface", "androidx-cardview", "androidx-preference-ktx", "androidx-sharetarget",
"androidx-emoji2-core", "androidx-emoji2-views-core", "androidx-emoji2-view-helper", "androidx-lifecycle-viewmodel-ktx",
"androidx-lifecycle-livedata-ktx", "androidx-lifecycle-common-java8", "androidx-lifecycle-reactivestreams-ktx",
"androidx-constraintlayout", "androidx-paging-runtime-ktx", "androidx-viewpager2", "androidx-work-runtime-ktx",
"androidx-core-splashscreen", "androidx-activity", "androidx-media3-exoplayer", "androidx-media3-exoplayer-dash",
"androidx-media3-exoplayer-hls", "androidx-media3-exoplayer-rtsp", "androidx-media3-datasource-okhttp", "androidx-media3-ui",
"androidx-transition",
"android-material"]
filemojicompat = ["filemojicompat-core", "filemojicompat-ui", "filemojicompat-defaults"]
glide = ["glide-core", "glide-okhttp3-integration", "glide-animation-plugin"]
lint-api = ["kotlin-stdlib", "lint-api", "lint-checks"]
lint-tests = ["junit", "lint-cli", "lint-tests"]
material-drawer = ["material-drawer-core", "material-drawer-iconics"]
mockito = ["mockito-kotlin", "mockito-inline"]
okhttp = ["okhttp-core", "okhttp-logging-interceptor", "okhttp-tls"]
retrofit = ["retrofit-core", "retrofit-converter-moshi"]
room = ["androidx-room-ktx", "androidx-room-paging"]
xmldiff = ["diffx", "xmlwriter"]