Support Coil 3.0.0-rc01
Closed this issue · 14 comments
Describe the bug
16:43:44.578 W java.lang.NoSuchMethodError: No static method Dimension(I)Lcoil3/size/Dimension$Pixels; in class Lcoil3/size/DimensionKt; or its super classes (declaration of 'coil3.size.DimensionKt' appears in /data/app/~~i8NVsQU7VCKUQ47h6PorRw==/com.x.x.x.debug-FNxlFgCYc1GHtCnjOj9OOw==/base.apk)
16:43:44.578 W at com.github.panpf.zoomimage.compose.coil.internal.BaseZoomAsyncImageKt.toSizeOrNull-BRTryo0(BaseZoomAsyncImage.kt:193)
16:43:44.578 W at com.github.panpf.zoomimage.compose.coil.internal.BaseZoomAsyncImageKt.access$toSizeOrNull-BRTryo0(BaseZoomAsyncImage.kt:1)
16:43:44.578 W at com.github.panpf.zoomimage.compose.coil.internal.ConstraintsSizeResolver$size$$inlined$mapNotNull$1$2.emit(Emitters.kt:220)
16:43:44.578 W at kotlinx.coroutines.flow.StateFlowImpl.collect(StateFlow.kt:401)
16:43:44.578 W at com.github.panpf.zoomimage.compose.coil.internal.ConstraintsSizeResolver$size$$inlined$mapNotNull$1.collect(SafeCollector.common.kt:112)
16:43:44.578 W at kotlinx.coroutines.flow.FlowKt__ReduceKt.first(Reduce.kt:194)
16:43:44.578 W at kotlinx.coroutines.flow.FlowKt.first(Unknown Source:1)
16:43:44.578 W at com.github.panpf.zoomimage.compose.coil.internal.ConstraintsSizeResolver.size(BaseZoomAsyncImage.kt:156)
16:43:44.579 W at coil3.RealImageLoader.execute(RealImageLoader.kt:130)
16:43:44.579 W at coil3.RealImageLoader.execute(RealImageLoader.kt:90)
16:43:44.579 W at coil3.compose.AsyncImagePainter$onRemembered$1$2$1.invokeSuspend(AsyncImagePainter.kt:244)
16:43:44.579 W at coil3.compose.AsyncImagePainter$onRemembered$1$2$1.invoke(Unknown Source:8)
16:43:44.579 W at coil3.compose.AsyncImagePainter$onRemembered$1$2$1.invoke(Unknown Source:4)
16:43:44.579 W at kotlinx.coroutines.flow.FlowKt__MergeKt$mapLatest$1.invokeSuspend(Merge.kt:213)
16:43:44.579 W at kotlinx.coroutines.flow.FlowKt__MergeKt$mapLatest$1.invoke(Unknown Source:13)
16:43:44.579 W at kotlinx.coroutines.flow.FlowKt__MergeKt$mapLatest$1.invoke(Unknown Source:4)
16:43:44.579 W at kotlinx.coroutines.flow.internal.ChannelFlowTransformLatest$flowCollect$3$1$2.invokeSuspend(Merge.kt:30)
16:43:44.579 W at kotlinx.coroutines.flow.internal.ChannelFlowTransformLatest$flowCollect$3$1$2.invoke(Unknown Source:8)
16:43:44.579 W at kotlinx.coroutines.flow.internal.ChannelFlowTransformLatest$flowCollect$3$1$2.invoke(Unknown Source:4)
16:43:44.579 W at kotlinx.coroutines.intrinsics.UndispatchedKt.startCoroutineUndispatched(Undispatched.kt:20)
16:43:44.579 W at kotlinx.coroutines.CoroutineStart.invoke(CoroutineStart.kt:360)
16:43:44.579 W at kotlinx.coroutines.AbstractCoroutine.start(AbstractCoroutine.kt:124)
16:43:44.579 W at kotlinx.coroutines.BuildersKt__Builders_commonKt.launch(Builders.common.kt:52)
16:43:44.579 W at kotlinx.coroutines.BuildersKt.launch(Unknown Source:1)
16:43:44.579 W at kotlinx.coroutines.BuildersKt__Builders_commonKt.launch$default(Builders.common.kt:43)
16:43:44.579 W at kotlinx.coroutines.BuildersKt.launch$default(Unknown Source:1)
16:43:44.579 W at kotlinx.coroutines.flow.internal.ChannelFlowTransformLatest$flowCollect$3$1.emit(Merge.kt:29)
16:43:44.579 W at kotlinx.coroutines.flow.FlowKt__ChannelsKt.emitAllImpl$FlowKt__ChannelsKt(Channels.kt:33)
16:43:44.579 W at kotlinx.coroutines.flow.FlowKt__ChannelsKt.access$emitAllImpl$FlowKt__ChannelsKt(Channels.kt:1)
16:43:44.579 W at kotlinx.coroutines.flow.FlowKt__ChannelsKt$emitAllImpl$1.invokeSuspend(Unknown Source:14)
16:43:44.579 W at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
16:43:44.579 W at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:101)
16:43:44.580 W at kotlinx.coroutines.EventLoop.processUnconfinedEvent(EventLoop.common.kt:65)
16:43:44.580 W at kotlinx.coroutines.DispatchedTaskKt.resumeUnconfined(DispatchedTask.kt:231)
16:43:44.580 W at kotlinx.coroutines.DispatchedTaskKt.dispatch(DispatchedTask.kt:149)
16:43:44.580 W at kotlinx.coroutines.CancellableContinuationImpl.dispatchResume(CancellableContinuationImpl.kt:470)
16:43:44.580 W at kotlinx.coroutines.CancellableContinuationImpl.resumeImpl$kotlinx_coroutines_core(CancellableContinuationImpl.kt:504)
16:43:44.580 W at kotlinx.coroutines.CancellableContinuationImpl.resumeImpl$kotlinx_coroutines_core$default(CancellableContinuationImpl.kt:493)
16:43:44.580 W at kotlinx.coroutines.CancellableContinuationImpl.resumeWith(CancellableContinuationImpl.kt:359)
16:43:44.580 W at kotlinx.coroutines.flow.StateFlowSlot.makePending(StateFlow.kt:290)
16:43:44.580 W at kotlinx.coroutines.flow.StateFlowImpl.updateState(StateFlow.kt:354)
16:43:44.580 W at kotlinx.coroutines.flow.StateFlowImpl.setValue(StateFlow.kt:321)
16:43:44.580 W at coil3.compose.AsyncImagePainterKt.rememberAsyncImagePainter-GSdzBsE(AsyncImagePainter.kt:158)
16:43:44.580 W at coil3.compose.AsyncImagePainterKt.rememberAsyncImagePainter-0YpotYA(AsyncImagePainter.kt:131)
16:43:44.580 W at com.github.panpf.zoomimage.compose.coil.internal.BaseZoomAsyncImageKt.BaseZoomAsyncImage-3HmZ8SU(BaseZoomAsyncImage.kt:88)
16:43:44.580 W at com.github.panpf.zoomimage.CoilZoomAsyncImageKt.CoilZoomAsyncImage-s_Z8080(CoilZoomAsyncImage.kt:235)
16:43:44.580 W at com.github.panpf.zoomimage.CoilZoomAsyncImageKt.CoilZoomAsyncImage-XSgcHvQ(CoilZoomAsyncImage.kt:144)
16:43:44.580 W at com.github.panpf.zoomimage.SingletonCoilZoomAsyncImageKt.CoilZoomAsyncImage-nmK0i78(SingletonCoilZoomAsyncImage.kt:119)
16:43:44.580 W at com.pixezia.wallpaper.wallhub.features.wallpaper.ui.WallpaperDetailsScreenKt.WallpaperDetailsScreen(WallpaperDetailsScreen.kt:50)
16:43:44.580 W at com.pixezia.wallpaper.wallhub.features.wallpaper.ui.ComposableSingletons$WallpaperDetailsContentKt$lambda-1$1.invoke(WallpaperDetailsContent.kt:16)
16:43:44.581 W at com.pixezia.wallpaper.wallhub.features.wallpaper.ui.ComposableSingletons$WallpaperDetailsContentKt$lambda-1$1.invoke(WallpaperDetailsContent.kt:12)
16:43:44.581 W at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:139)
16:43:44.581 W at androidx.compose.runtime.internal.ComposableLambdaImpl$invoke$2.invoke(ComposableLambda.jvm.kt:146)
16:43:44.581 W at androidx.compose.runtime.internal.ComposableLambdaImpl$invoke$2.invoke(ComposableLambda.jvm.kt:145)
16:43:44.581 W at androidx.compose.runtime.RecomposeScopeImpl.compose(RecomposeScopeImpl.kt:192)
16:43:44.581 W at androidx.compose.runtime.ComposerImpl.recomposeToGroupEnd(Composer.kt:2825)
16:43:44.581 W at androidx.compose.runtime.ComposerImpl.skipCurrentGroup(Composer.kt:3116)
16:43:44.581 W at androidx.compose.runtime.ComposerImpl.doCompose(Composer.kt:3607)
16:43:44.581 W at androidx.compose.runtime.ComposerImpl.recompose$runtime_release(Composer.kt:3552)
16:43:44.581 W at androidx.compose.runtime.CompositionImpl.recompose(Composition.kt:948)
16:43:44.581 W at androidx.compose.runtime.Recomposer.performRecompose(Recomposer.kt:1206)
16:43:44.582 W at androidx.compose.runtime.Recomposer.access$performRecompose(Recomposer.kt:132)
16:43:44.582 W at androidx.compose.runtime.Recomposer$runRecomposeAndApplyChanges$2$1.invoke(Recomposer.kt:616)
16:43:44.582 W at androidx.compose.runtime.Recomposer$runRecomposeAndApplyChanges$2$1.invoke(Recomposer.kt:585)
16:43:44.582 W at androidx.compose.ui.platform.AndroidUiFrameClock$withFrameNanos$2$callback$1.doFrame(AndroidUiFrameClock.android.kt:41)
16:43:44.582 W at androidx.compose.ui.platform.AndroidUiDispatcher.performFrameDispatch(AndroidUiDispatcher.android.kt:109)
16:43:44.582 W at androidx.compose.ui.platform.AndroidUiDispatcher.access$performFrameDispatch(AndroidUiDispatcher.android.kt:41)
16:43:44.582 W at androidx.compose.ui.platform.AndroidUiDispatcher$dispatchCallback$1.doFrame(AndroidUiDispatcher.android.kt:69)
16:43:44.582 W at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1337)
16:43:44.582 W at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1348)
16:43:44.582 W at android.view.Choreographer.doCallbacks(Choreographer.java:952)
16:43:44.582 W at android.view.Choreographer.doFrame(Choreographer.java:878)
16:43:44.582 W at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:1322)
16:43:44.582 W at android.os.Handler.handleCallback(Handler.java:958)
16:43:44.582 W at android.os.Handler.dispatchMessage(Handler.java:99)
16:43:44.582 W at android.os.Looper.loopOnce(Looper.java:205)
16:43:44.582 W at android.os.Looper.loop(Looper.java:294)
16:43:44.582 W at android.app.ActivityThread.main(ActivityThread.java:8177)
16:43:44.582 W at java.lang.reflect.Method.invoke(Native Method)
16:43:44.582 W at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:552)
16:43:44.582 W at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:971)
Affected platforms
- Android, iOS, Desltop
Affected components
Select of the components below:
- CoilAsyncZoomImage
Versions
- zoomimage version*: 1.1.0-beta01
- Kotlin version*: 2.1.0-Beta1
- Compose version(s)* (Jetpack/Multiplatform): 1.7.0
- JDK version(Only Desktop): 17
- coil version: 3.0.0-rc01
Running Devices
Please accurately describe the device Model, OS version, and CPU Architecture
- Pixel 8 Pro
Sample code
val coilZoomState =
rememberCoilZoomState(logLevel = com.github.panpf.zoomimage.util.Logger.Level.Verbose)
CoilZoomAsyncImage(
zoomState = coilZoomState,
model = imageUrl,
contentDescription = null,
modifier = Modifier.matchParentSize(),
filterQuality = FilterQuality.High,
contentScale = ContentScale.Crop,
onError = {
it.result.throwable.printStackTrace()
}
)
Expected behavior
Coil 3.0.0-rc01 should be supported, currently can't use it
also ktor 3.0.0 is now stable
It's already in the plan, so stay tuned
It's already in the plan, so stay tuned
Thanks for the reply, hate to be the one who say this but is there any estimate when it'll be done?
We're nearing a release and would like to test if some things break before pushing out in the open.
If there is a snapshot, we'd be glad to test it btw
Sorry that we can't adapt to the new version immediately. It will take at least two weeks.
Because there are too many things to do recently, and there are other problems that need to be fixed at the same time.
You can first depend on the zoomimage-core module, then copy the coil3 related code to your project and fix the problem (it should only require a small amount of modification)
Sorry that we can't adapt to the new version immediately. It will take at least two weeks.
Because there are too many things to do recently, and there are other problems that need to be fixed at the same time.
You can first depend on the zoomimage-core module, then copy the coil3 related code to your project and fix the problem (it should only require a small amount of modification)
Do you take PRs?
Yes, PRs are welcome
Yes, PRs are welcome
Couldn't sync the project
Could not find io.github.panpf.sketch4:sketch-animated-gif:4.0.0-beta01-SNAPSHOT.
Could not find io.github.panpf.sketch4:sketch-compose-resources:4.0.0-beta01-SNAPSHOT.
Could not find io.github.panpf.sketch4:sketch-extensions-compose:4.0.0-beta01-SNAPSHOT.
Don't use the dev branch, use the main branch
When can we merge this?
We are about to start working on this issue, this is the last issue for this version. Expect a new version this week
We are about to start working on this issue, this is the last issue for this version. Expect a new version this week
Should i close the PR then?
This feature has been added in v1.1.0-rc01.