Status Update
Comments
ju...@google.com <ju...@google.com>
ju...@google.com <ju...@google.com> #2
Initial loads in LimitOffsetPagingSource run in transaction but subsequent loads do not because of cost of transaction. Loads rely on count query to return correct LoadResult.
If count query is outdated, i.e. large amount of data deleted, LimitOffsetPagingSource can return i.e. empty/wrong data and incorrect itemsBefore/itemsAfter/prevKey/nextKey. This can happen if outdated PagingSource doesn't get invalidated in time.
al...@google.com <al...@google.com> #3
Branch: androidx-main
commit 6bd2347ff259c28b34789c8569b7a298d2a8fd8d
Author: Clara Fok <clarafok@google.com>
Date: Fri Jul 09 12:53:22 2021
Implement Invalid return type in PagingSource
Added third return type for LoadResult sealed class in PagingSource. It
was added as a support feature to handle race scenarios between data loads
and database invalidations, such as if Room's InvalidationTracker does
not propagate invalidation signal to the PagingSource in time and the
PagingSource continues querying an updated database. This can result in
data being loaded onto a stale PageFetcherSnapshot causing duplicated or
missing data. Related bug regarding race scenario in Room
For example, if data was deleted and items shifted positions,
positionally-keyed paging sources can end up loading duplicated items.
Paging handles this return type by discarding the loaded data and
invalidating the paging source. This will trigger a new paging source to
be generated. This return type is also supported for Paging2 APIs
leveraging PagingSource such as LivePagedList and RxPagedList.
Aside from handling invalid data due to races, this return type can be
leveraged in general where the database or network returns potentially
invalid or stale data that needs to be discarded.
Bug: 192013267
Test: ./gradlew :paging:paging-common:test
Relnote: "A third LoadResult return type LoadResult.Invalid is added to
PagingSource. When a PagingSource.load returns
LoadResult.Invalid, paging will discard the loaded data and
invalidate the PagingSource. This return type is designed to
handle potentially invalid or stale data that can be returned
from the database or network.
For example, if the underlying database gets written into but
the PagingSource does not invalidate in time, it may return
inconsistent results if its implementation depends on the
immutability of the backing dataset it loads from (e.g., LIMIT
OFFSET style db implementations). In this scenario, it is
recommended to check for invalidation after loading and to
return LoadResult.Invalid, which causes Paging to discard any
pending or future load requests to this PagingSource and
invalidate it.
This return type is also supported by Paging2 API that leverages
LivePagedList or RxPagedList. When using a PagingSource with
Paging2's PagedList APIs, the PagedList is immediately detached,
stopping further attempts to load data on this PagedList and
triggers invalidation on the PagingSource.
LoadResult is a sealed class, which means this is a
source-incomptabile change such that use cases directly using
PagingSource.load results will have to handle LoadResult.Invalid
at compile time. For example, Kotlin users leveraging
exhaustive-when to check return type will have to add a check
for Invalid type."
Change-Id: Id6bd3f2544f1ba97a95a0d590353438a95fedf2a
M paging/common/api/current.txt
M paging/common/api/public_plus_experimental_current.txt
M paging/common/api/restricted_current.txt
M paging/common/src/main/kotlin/androidx/paging/PageFetcherSnapshot.kt
M paging/common/src/main/kotlin/androidx/paging/PagedList.kt
M paging/common/src/main/kotlin/androidx/paging/PagingSource.kt
M paging/common/src/test/kotlin/androidx/paging/PageFetcherSnapshotTest.kt
M paging/common/src/test/kotlin/androidx/paging/PageFetcherTest.kt
M paging/common/src/test/kotlin/androidx/paging/PagedListTest.kt
M paging/common/src/test/kotlin/androidx/paging/PagingDataDifferTest.kt
M paging/common/src/test/kotlin/androidx/paging/PagingSourceTest.kt
M paging/integration-tests/testapp/src/main/java/androidx/paging/integration/testapp/v3room/V3RemoteMediator.kt
M paging/integration-tests/testapp/src/main/java/androidx/paging/integration/testapp/v3room/V3RoomViewModel.kt
ti...@google.com <ti...@google.com> #4
Branch: androidx-main
commit 3882ac8364fd905c9935d38c93f84599009226d6
Author: Clara Fok <clarafok@google.com>
Date: Fri Jul 09 14:17:48 2021
Implement LoadResult.Invalid to handle race
For non-initial loads in LimitOffsetPagingSource, loads will run Room
InvalidationTracker's refreshVersionSync to synchronously check if
tables have been invalidated and notify observers. If invalidated,
load will return LoadResult.Invalid.
Paging3 will handle Invalid return type by invalidating the paging
source and closing the page event flow, such that no more loads will be
attempted on this paging source.
Note that refreshVersionSync is a temporary solution for
LimitOffsetPagingSource to check table invalidation. Another solution
that does not require a transaction is in development. Related
Bug: 191806126
Test: ./gradlew :room:integration-tests:room-testapp-kotlin:cC
Test: ./gradlew room:room-paging:cC
Change-Id: I48634ab95949bae608374f5156a4edd0500a74a3
M room/integration-tests/kotlintestapp/src/androidTest/java/androidx/room/integration/kotlintestapp/test/PagingSourceTest.kt
M room/room-paging/build.gradle
M room/room-paging/src/androidTest/kotlin/androidx/room/paging/LimitOffsetPagingSourceTest.kt
M room/room-paging/src/main/kotlin/androidx/room/paging/LimitOffsetPagingSource.kt
ju...@google.com <ju...@google.com> #5
Based on the list of cases at go/androidx-api-guidelines#kotlin-jvm-default, I have a lint check working to add the annotation to applicable interfaces. I think I'll add the check turned off, and then work on adding something similar to Tiem's library group task to determine when the check should run.
ap...@google.com <ap...@google.com> #6
Branch: androidx-main
commit d0c077b3bb9f138d3d8e2b3818bb2fd194ab6c6f
Author: Julia McClellan <juliamcclellan@google.com>
Date: Fri Oct 21 08:07:58 2022
Lint check for adding JvmDefaultWithCompatibility annotation
This doesn't add the check to the issue registry, so it won't run for now--it needs a way to check if a library is using `jvm-default=all` before it can be turned on.
The cases the lint flags are based on the list in go/androidx-api-guidelines#kotlin-jvm-default
Test: added unit tests
Bug: 251463569
Change-Id: Idf47cbae5985c58f26716b64200db768a6399548
M lint-checks/src/main/java/androidx/build/lint/AndroidXIssueRegistry.kt
A lint-checks/src/main/java/androidx/build/lint/MissingJvmDefaultWithCompatibilityDetector.kt
A lint-checks/src/test/java/androidx/build/lint/MissingJvmDefaultWithCompatibilityDetectorTest.kt
M lint-checks/src/test/java/androidx/build/lint/Stubs.kt
ap...@google.com <ap...@google.com> #7
Branch: androidx-main
commit 1f4daf44e9bf883c7d87dd4ef39a5bf954a0a0c9
Author: Julia McClellan <juliamcclellan@google.com>
Date: Thu Nov 03 15:57:36 2022
Add @JvmDefaultWithCompatibility to applicable interfaces
Bug: 251463569
Test: ./gradlew lintDebug` passes when `MissingJvmDefaultWithCompatibilityDetector.ISSUE` is added to the `AndroidXIssueRegistry` and the list of checks to run on test sources in `buildSrc/lint.xml`
Relnote: Adding @JvmDefaultWithCompatibility annotation
Change-Id: I8f2067bb0754a5e9dc70c934403366ca8d319c36
M bluetooth/bluetooth-core/src/main/java/androidx/bluetooth/core/AdvertiseCallback.kt
M bluetooth/bluetooth-core/src/main/java/androidx/bluetooth/core/AdvertisingSetCallback.kt
M bluetooth/bluetooth-core/src/main/java/androidx/bluetooth/core/BluetoothDevice.kt
M bluetooth/bluetooth-core/src/main/java/androidx/bluetooth/core/ScanCallback.kt
M compose/compiler/compiler-daemon/src/main/kotlin/androidx/compose/compiler/daemon/Compiler.kt
M compose/compiler/compiler-hosted/src/main/java/androidx/compose/compiler/plugins/kotlin/BuildMetrics.kt
M compose/compiler/compiler-hosted/src/main/java/androidx/compose/compiler/plugins/kotlin/lower/ComposableFunctionBodyTransformer.kt
M compose/compiler/compiler-hosted/src/main/java/androidx/compose/compiler/plugins/kotlin/lower/decoys/DecoyTransformBase.kt
M compose/material/material/api/public_plus_experimental_current.txt
M compose/material/material/src/androidMain/kotlin/androidx/compose/material/ExposedDropdownMenu.kt
M compose/material/material/src/commonMain/kotlin/androidx/compose/material/TextFieldDefaults.kt
M constraintlayout/constraintlayout-compose/api/current.txt
M constraintlayout/constraintlayout-compose/api/public_plus_experimental_current.txt
M constraintlayout/constraintlayout-compose/api/restricted_current.txt
M constraintlayout/constraintlayout-compose/src/androidMain/kotlin/androidx/constraintlayout/compose/ConstraintScopeCommon.kt
M constraintlayout/constraintlayout-compose/src/androidMain/kotlin/androidx/constraintlayout/compose/ConstraintSet.kt
M core/core-performance/api/current.txt
M core/core-performance/api/public_plus_experimental_current.txt
M core/core-performance/api/restricted_current.txt
M core/core-performance/src/main/java/androidx/core/performance/DevicePerformance.kt
M core/uwb/uwb/api/current.txt
M core/uwb/uwb/api/public_plus_experimental_current.txt
M core/uwb/uwb/api/restricted_current.txt
M core/uwb/uwb/src/main/java/androidx/core/uwb/UwbManager.kt
M datastore/datastore-rxjava2/api/current.txt
M datastore/datastore-rxjava2/api/public_plus_experimental_current.txt
M datastore/datastore-rxjava2/api/restricted_current.txt
M datastore/datastore-rxjava2/src/main/java/androidx/datastore/rxjava2/RxSharedPreferencesMigration.kt
M datastore/datastore-rxjava3/api/current.txt
M datastore/datastore-rxjava3/api/public_plus_experimental_current.txt
M datastore/datastore-rxjava3/api/restricted_current.txt
M datastore/datastore-rxjava3/src/main/java/androidx/datastore/rxjava3/RxSharedPreferencesMigration.kt
M glance/glance-appwidget/api/current.txt
M glance/glance-appwidget/api/public_plus_experimental_current.txt
M glance/glance-appwidget/api/restricted_current.txt
M glance/glance-appwidget/src/androidMain/kotlin/androidx/glance/appwidget/lazy/LazyList.kt
M glance/glance-appwidget/src/androidMain/kotlin/androidx/glance/appwidget/lazy/LazyVerticalGrid.kt
M glance/glance-wear-tiles/api/current.txt
M glance/glance-wear-tiles/api/public_plus_experimental_current.txt
M glance/glance-wear-tiles/api/restricted_current.txt
M glance/glance-wear-tiles/src/androidMain/kotlin/androidx/glance/wear/tiles/curved/CurvedRow.kt
M glance/glance-wear-tiles/src/androidMain/kotlin/androidx/glance/wear/tiles/curved/GlanceCurvedModifier.kt
M glance/glance/api/current.txt
M glance/glance/api/public_plus_experimental_current.txt
M glance/glance/api/restricted_current.txt
M glance/glance/src/androidMain/kotlin/androidx/glance/GlanceModifier.kt
M glance/glance/src/androidMain/kotlin/androidx/glance/session/SessionManager.kt
M graphics/graphics-core/api/current.txt
M graphics/graphics-core/api/public_plus_experimental_current.txt
M graphics/graphics-core/api/restricted_current.txt
M graphics/graphics-core/src/main/java/androidx/graphics/lowlatency/GLFrontBufferedRenderer.kt
M graphics/graphics-core/src/main/java/androidx/graphics/lowlatency/ParentRenderLayer.kt
M graphics/graphics-core/src/main/java/androidx/graphics/opengl/GLRenderer.kt
M graphics/graphics-core/src/main/java/androidx/graphics/opengl/egl/EGLSpec.kt
M graphics/graphics-core/src/main/java/androidx/graphics/surface/SurfaceControlImpl.kt
M health/connect/connect-client/api/current.txt
M health/connect/connect-client/api/public_plus_experimental_current.txt
M health/connect/connect-client/api/restricted_current.txt
M health/connect/connect-client/src/main/java/androidx/health/connect/client/HealthConnectClient.kt
M health/connect/connect-client/src/main/java/androidx/health/connect/client/PermissionController.kt
M health/health-services-client/api/1.0.0-beta02.txt
M health/health-services-client/api/current.txt
M health/health-services-client/api/public_plus_experimental_1.0.0-beta02.txt
M health/health-services-client/api/public_plus_experimental_current.txt
M health/health-services-client/api/restricted_1.0.0-beta02.txt
M health/health-services-client/api/restricted_current.txt
M health/health-services-client/src/main/java/androidx/health/services/client/ExerciseClient.kt
M health/health-services-client/src/main/java/androidx/health/services/client/MeasureCallback.kt
M health/health-services-client/src/main/java/androidx/health/services/client/PassiveListenerCallback.kt
M health/health-services-client/src/main/java/androidx/health/services/client/data/Availability.kt
M paging/paging-common/api/current.txt
M paging/paging-common/api/public_plus_experimental_current.txt
M paging/paging-common/api/restricted_current.txt
M paging/paging-common/src/main/kotlin/androidx/paging/Logger.kt
M privacysandbox/tools/tools-core/src/main/java/androidx/privacysandbox/tools/core/generator/poet/AidlFileSpec.kt
M resourceinspection/resourceinspection-processor/src/main/kotlin/androidx/resourceinspection/processor/Models.kt
M room/integration-tests/kotlintestapp/src/androidTest/java/androidx/room/integration/kotlintestapp/dao/BooksDao.kt
M room/integration-tests/kotlintestapp/src/androidTest/java/androidx/room/integration/kotlintestapp/dao/DerivedDao.kt
M testutils/testutils-paparazzi/src/main/kotlin/androidx/testutils/paparazzi/ImageDiffer.kt
M wear/compose/compose-foundation/api/current.txt
M wear/compose/compose-foundation/api/public_plus_experimental_current.txt
M wear/compose/compose-foundation/api/restricted_current.txt
M wear/compose/compose-foundation/src/commonMain/kotlin/androidx/wear/compose/foundation/CurvedModifier.kt
M wear/watchface/watchface-complications-data/api/current.txt
M wear/watchface/watchface-complications-data/api/public_plus_experimental_current.txt
M wear/watchface/watchface-complications-data/api/restricted_current.txt
M wear/watchface/watchface-complications-data/src/main/java/androidx/wear/watchface/complications/data/Text.kt
M wear/watchface/watchface-editor/api/current.txt
M wear/watchface/watchface-editor/api/public_plus_experimental_current.txt
M wear/watchface/watchface-editor/api/restricted_current.txt
M wear/watchface/watchface-editor/src/main/java/androidx/wear/watchface/editor/EditorSession.kt
M work/work-runtime/src/main/java/androidx/work/impl/model/SystemIdInfoDao.kt
M work/work-runtime/src/main/java/androidx/work/impl/model/WorkTagDao.kt
ap...@google.com <ap...@google.com> #8
Branch: androidx-main
commit 7a48ff1c1ab5cdedde649c1d3502551cfbd06cb3
Author: Julia McClellan <juliamcclellan@google.com>
Date: Thu Nov 03 15:57:20 2022
Update JvmDefaultWithCompatibility lint check with excluded projects
These projects had individually added `jvm-default=all` previously (removed from the individual projects and added for all projects in aosp/2287413). Since this check is only supposed to be run once, this is just a hardcoded list.
Bug: 251463569
Test: presubmit
Change-Id: I0a7d16116768d3c12ee5b7ed2101fecc8a674340
M lint-checks/src/main/java/androidx/build/lint/MissingJvmDefaultWithCompatibilityDetector.kt
ap...@google.com <ap...@google.com> #9
Branch: androidx-main
commit 2fc19c9900ddded3b0bd23d13921035cb2c5a8ef
Author: Julia McClellan <juliamcclellan@google.com>
Date: Thu Nov 03 15:57:08 2022
Add jvm-default=all to all AndroidX projects
Also remove it from each project where it was already applied, as they should get the argument from the main project.
This specifically excludes camera-camera2-pipe due to
Bug: 251463569
Test: presubmit
Change-Id: Iefa4368246fccede6e666d96012e36b5064b2248
M buildSrc/private/src/main/kotlin/androidx/build/AndroidXImplPlugin.kt
M compose/animation/animation-core/build.gradle
M compose/animation/animation-graphics/build.gradle
M compose/animation/animation-tooling-internal/build.gradle
M compose/animation/animation/build.gradle
M compose/foundation/foundation-layout/build.gradle
M compose/foundation/foundation/build.gradle
M compose/material/material-ripple/build.gradle
M compose/material3/material3-window-size-class/build.gradle
M compose/material3/material3/build.gradle
M compose/material3/material3/integration-tests/material3-catalog/build.gradle
M compose/runtime/runtime-livedata/build.gradle
M compose/runtime/runtime-rxjava2/build.gradle
M compose/runtime/runtime-rxjava3/build.gradle
M compose/runtime/runtime-saveable/build.gradle
M compose/runtime/runtime-tracing/build.gradle
M compose/runtime/runtime/build.gradle
M compose/test-utils/build.gradle
M compose/ui/ui-geometry/build.gradle
M compose/ui/ui-graphics/build.gradle
M compose/ui/ui-inspection/build.gradle
M compose/ui/ui-test-junit4/build.gradle
M compose/ui/ui-test-manifest/build.gradle
M compose/ui/ui-test/build.gradle
M compose/ui/ui-text-google-fonts/build.gradle
M compose/ui/ui-text/build.gradle
M compose/ui/ui-tooling-data/build.gradle
M compose/ui/ui-tooling-preview/build.gradle
M compose/ui/ui-tooling/build.gradle
M compose/ui/ui-unit/build.gradle
M compose/ui/ui-util/build.gradle
M compose/ui/ui-viewbinding/build.gradle
M compose/ui/ui/build.gradle
M credentials/credentials/build.gradle
M lifecycle/lifecycle-common/build.gradle
M lifecycle/lifecycle-viewmodel/build.gradle
A navigation/navigation-benchmark/lint-baseline.xml
M room/integration-tests/kotlintestapp/src/androidTest/java/androidx/room/integration/kotlintestapp/dao/BooksDao.kt
M room/room-common/build.gradle
M room/room-compiler-processing/build.gradle
M room/room-compiler/build.gradle
M room/room-ktx/build.gradle
M room/room-migration/build.gradle
M room/room-runtime/build.gradle
M room/room-testing/build.gradle
M sqlite/integration-tests/inspection-room-testapp/build.gradle
M sqlite/integration-tests/inspection-sqldelight-testapp/build.gradle
M sqlite/sqlite-framework/build.gradle
M sqlite/sqlite-inspection/build.gradle
M sqlite/sqlite-ktx/build.gradle
M sqlite/sqlite/build.gradle
M tv/tv-foundation/build.gradle
M tv/tv-material/build.gradle
M wear/compose/compose-material/build.gradle
M wear/watchface/watchface-client/build.gradle
M wear/watchface/watchface-complications-data-source/build.gradle
M wear/watchface/watchface/build.gradle
M window/window/build.gradle
ju...@google.com <ju...@google.com> #10
jvm-default=all
is now set for all projects except camera-camera2-pipe
, camera-camera2-pipe-testing
, and camera-camera2-pipe-integration
because we couldn't find a workaround for camera-camera2-pipe
exception after
ju...@google.com <ju...@google.com> #11
The following release(s) address this bug.It is possible this bug has only been partially addressed:
androidx.compose.animation:animation:1.4.0-alpha03
androidx.compose.animation:animation-core:1.4.0-alpha03
androidx.compose.animation:animation-graphics:1.4.0-alpha03
androidx.compose.foundation:foundation:1.4.0-alpha03
androidx.compose.foundation:foundation-layout:1.4.0-alpha03
androidx.compose.material:material:1.4.0-alpha03
androidx.compose.material:material-ripple:1.4.0-alpha03
androidx.compose.material3:material3:1.1.0-alpha03
androidx.compose.material3:material3-window-size-class:1.1.0-alpha03
androidx.compose.runtime:runtime:1.4.0-alpha03
androidx.compose.runtime:runtime-livedata:1.4.0-alpha03
androidx.compose.runtime:runtime-rxjava2:1.4.0-alpha03
androidx.compose.runtime:runtime-rxjava3:1.4.0-alpha03
androidx.compose.runtime:runtime-saveable:1.4.0-alpha03
androidx.compose.ui:ui:1.4.0-alpha03
androidx.compose.ui:ui-geometry:1.4.0-alpha03
androidx.compose.ui:ui-graphics:1.4.0-alpha03
androidx.compose.ui:ui-test:1.4.0-alpha03
androidx.compose.ui:ui-test-junit4:1.4.0-alpha03
androidx.compose.ui:ui-test-manifest:1.4.0-alpha03
androidx.compose.ui:ui-text:1.4.0-alpha03
androidx.compose.ui:ui-text-google-fonts:1.4.0-alpha03
androidx.compose.ui:ui-tooling:1.4.0-alpha03
androidx.compose.ui:ui-tooling-data:1.4.0-alpha03
androidx.compose.ui:ui-tooling-preview:1.4.0-alpha03
androidx.compose.ui:ui-unit:1.4.0-alpha03
androidx.compose.ui:ui-util:1.4.0-alpha03
androidx.compose.ui:ui-viewbinding:1.4.0-alpha03
androidx.core.uwb:uwb:1.0.0-alpha04
androidx.health.connect:connect-client:1.0.0-alpha08
androidx.privacysandbox.tools:tools-core:1.0.0-alpha02
androidx.tv:tv-foundation:1.0.0-alpha03
androidx.wear.watchface:watchface:1.2.0-alpha05
androidx.wear.watchface:watchface-client:1.2.0-alpha05
androidx.wear.watchface:watchface-complications-data:1.2.0-alpha05
androidx.wear.watchface:watchface-complications-data-source:1.2.0-alpha05
androidx.wear.watchface:watchface-editor:1.2.0-alpha05
na...@google.com <na...@google.com> #12
The following release(s) address this bug.It is possible this bug has only been partially addressed:
androidx.health:health-services-client:1.0.0-beta02
androidx.lifecycle:lifecycle-common:2.6.0-alpha04
androidx.lifecycle:lifecycle-viewmodel:2.6.0-alpha04
pr...@google.com <pr...@google.com> #13
The following release(s) address this bug.It is possible this bug has only been partially addressed:
androidx.compose.runtime:runtime-tracing:1.0.0-alpha02
androidx.paging:paging-common:3.2.0-alpha04
na...@google.com <na...@google.com> #14
The following release(s) address this bug.It is possible this bug has only been partially addressed:
androidx.window:window:1.1.0-alpha06
pr...@google.com <pr...@google.com> #15
The following release(s) address this bug.It is possible this bug has only been partially addressed:
androidx.datastore:datastore-rxjava2:1.1.0-alpha02
androidx.datastore:datastore-rxjava3:1.1.0-alpha02
androidx.graphics:graphics-core:1.0.0-alpha03
androidx.room:room-common:2.6.0-alpha01
androidx.room:room-compiler:2.6.0-alpha01
androidx.room:room-compiler-processing:2.6.0-alpha01
androidx.room:room-ktx:2.6.0-alpha01
androidx.room:room-migration:2.6.0-alpha01
androidx.room:room-runtime:2.6.0-alpha01
androidx.room:room-testing:2.6.0-alpha01
androidx.sqlite:sqlite:2.4.0-alpha01
androidx.sqlite:sqlite-framework:2.4.0-alpha01
androidx.sqlite:sqlite-ktx:2.4.0-alpha01
na...@google.com <na...@google.com> #16
The following release(s) address this bug.It is possible this bug has only been partially addressed:
androidx.glance:glance:1.0.0-beta01
androidx.glance:glance-appwidget:1.0.0-beta01
ap...@google.com <ap...@google.com> #17
Branch: androidx-main
commit b536469eba96d3045cf26ee40bf87a4b1d579dbe
Author: Clara Fok <clarafok@google.com>
Date: Fri Jun 30 11:57:20 2023
Remove @JvmDefaultWithCompatibility from Logger.kt
Annotation was added in
But Logger is only used internally and we want to move this file to commonMain hence removing it.
Test: ./gradlew buildOnServer
Bug: 288623117
Relnote: "Remove @JvmDefaultWithCompatibility annotation"
Change-Id: I9b67c2e081a15e18797b68f5ce2224858e358a1d
M paging/paging-common/api/current.txt
M paging/paging-common/api/restricted_current.txt
M paging/paging-common/src/jvmMain/kotlin/androidx/paging/Logger.kt
na...@google.com <na...@google.com> #18
The following release(s) address this bug.It is possible this bug has only been partially addressed:
androidx.paging:paging-common:3.3.0-alpha01
Description
We should ensure that all libraries are using
jvm-default=all
. Moving to this, however, will require manually inspecting and updating a lot of code -- see cl/479305122 for WIP guidance.The initial migration could be handled by a one-time lint check/fix:
But I don't think lint can normally access the Kotlin compiler arguments. We'd want to pass this in from the build system like we do for group associations.
There are also ongoing maintenance concerns, e.g. ensuring that "existing interfaces with default methods in stable API surfaces are annotated with
@JvmDefaultWithCompatibility
to preserve binary compatibility." We will want a lint check and fix for this.Starting at
P1
since Metalava doesn't check for default interface compatibility and we are likely to hit issues here in production.