airbnb / lottie-android

Render After Effects animations natively on Android and iOS, Web, and React Native
http://airbnb.io/lottie/
Apache License 2.0
34.92k stars 5.4k forks source link

java.lang.IllegalStateException: Missing values for keyframe. #2480

Closed giangpham96 closed 4 months ago

giangpham96 commented 5 months ago

Describe the bug I have a lottie file that works on https://app.lottiefiles.com/ However, when I play it using Lottie Compose, the app crashes with the following stacktrace I attached the file to this issue

java.lang.IllegalStateException: Missing values for keyframe.
                                                                                                        at com.airbnb.lottie.animation.keyframe.IntegerKeyframeAnimation.getIntValue(IntegerKeyframeAnimation.java:24)
                                                                                                        at com.airbnb.lottie.animation.keyframe.IntegerKeyframeAnimation.getValue(IntegerKeyframeAnimation.java:16)
                                                                                                        at com.airbnb.lottie.animation.keyframe.IntegerKeyframeAnimation.getValue(IntegerKeyframeAnimation.java:8)
                                                                                                        at com.airbnb.lottie.animation.keyframe.BaseKeyframeAnimation.getValue(BaseKeyframeAnimation.java:150)
                                                                                                        at com.airbnb.lottie.model.layer.BaseLayer.draw(BaseLayer.java:251)
                                                                                                        at com.airbnb.lottie.model.layer.CompositionLayer.drawLayer(CompositionLayer.java:130)
                                                                                                        at com.airbnb.lottie.model.layer.BaseLayer.draw(BaseLayer.java:260)
                                                                                                        at com.airbnb.lottie.model.layer.CompositionLayer.drawLayer(CompositionLayer.java:130)
                                                                                                        at com.airbnb.lottie.model.layer.BaseLayer.draw(BaseLayer.java:260)
                                                                                                        at com.airbnb.lottie.LottieDrawable.draw(LottieDrawable.java:737)
                                                                                                        at com.airbnb.lottie.compose.LottieAnimationKt$LottieAnimation$2.invoke(LottieAnimation.kt:130)
                                                                                                        at com.airbnb.lottie.compose.LottieAnimationKt$LottieAnimation$2.invoke(LottieAnimation.kt:99)
                                                                                                        at androidx.compose.ui.draw.DrawBackgroundModifier.draw(DrawModifier.kt:116)
                                                                                                        at androidx.compose.ui.node.LayoutNodeDrawScope.drawDirect-x_KDEd0$ui_release(LayoutNodeDrawScope.kt:105)
                                                                                                        at androidx.compose.ui.node.LayoutNodeDrawScope.draw-x_KDEd0$ui_release(LayoutNodeDrawScope.kt:86)
                                                                                                        at androidx.compose.ui.node.NodeCoordinator.drawContainedDrawModifiers(NodeCoordinator.kt:365)
                                                                                                        at androidx.compose.ui.node.NodeCoordinator.draw(NodeCoordinator.kt:354)
                                                                                                        at androidx.compose.ui.node.LayoutModifierNodeCoordinator.performDraw(LayoutModifierNodeCoordinator.kt:182)
                                                                                                        at androidx.compose.ui.node.NodeCoordinator.drawContainedDrawModifiers(NodeCoordinator.kt:362)
                                                                                                        at androidx.compose.ui.node.NodeCoordinator.draw(NodeCoordinator.kt:354)
                                                                                                        at androidx.compose.ui.node.LayoutModifierNodeCoordinator.performDraw(LayoutModifierNodeCoordinator.kt:182)
                                                                                                        at androidx.compose.ui.node.NodeCoordinator.drawContainedDrawModifiers(NodeCoordinator.kt:362)
                                                                                                        at androidx.compose.ui.node.NodeCoordinator.draw(NodeCoordinator.kt:354)
                                                                                                        at androidx.compose.ui.node.LayoutModifierNodeCoordinator.performDraw(LayoutModifierNodeCoordinator.kt:182)
                                                                                                        at androidx.compose.ui.node.NodeCoordinator.drawContainedDrawModifiers(NodeCoordinator.kt:362)
                                                                                                        at androidx.compose.ui.node.NodeCoordinator.draw(NodeCoordinator.kt:354)
                                                                                                        at androidx.compose.ui.node.LayoutNode.draw$ui_release(LayoutNode.kt:922)
                                                                                                        at androidx.compose.ui.node.InnerNodeCoordinator.performDraw(InnerNodeCoordinator.kt:174)
                                                                                                        at androidx.compose.ui.node.NodeCoordinator.drawContainedDrawModifiers(NodeCoordinator.kt:362)
                                                                                                        at androidx.compose.ui.node.NodeCoordinator.access$drawContainedDrawModifiers(NodeCoordinator.kt:54)
                                                                                                        at androidx.compose.ui.node.NodeCoordinator$invoke$1.invoke(NodeCoordinator.kt:384)
                                                                                                        at androidx.compose.ui.node.NodeCoordinator$invoke$1.invoke(NodeCoordinator.kt:383)
                                                                                                        at androidx.compose.runtime.snapshots.Snapshot$Companion.observe(Snapshot.kt:2299)
                                                                                                        at androidx.compose.runtime.snapshots.SnapshotStateObserver$ObservedScopeMap.observe(SnapshotStateObserver.kt:467)
                                                                                                        at androidx.compose.runtime.snapshots.SnapshotStateObserver.observeReads(SnapshotStateObserver.kt:230)
                                                                                                        at androidx.compose.ui.node.OwnerSnapshotObserver.observeReads$ui_release(OwnerSnapshotObserver.kt:133)
                                                                                                        at androidx.compose.ui.node.NodeCoordinator.invoke(NodeCoordinator.kt:383)
                                                                                                        at androidx.compose.ui.node.NodeCoordinator.invoke(NodeCoordinator.kt:54)
                                                                                                        at androidx.compose.ui.platform.RenderNodeApi29.record(RenderNodeApi29.android.kt:209)
                                                                                                        at androidx.compose.ui.platform.RenderNodeLayer.updateDisplayList(RenderNodeLayer.android.kt:305)
                                                                                                        at androidx.compose.ui.platform.AndroidComposeView.dispatchDraw(AndroidComposeView.android.kt:1138)
                                                                                                        at android.view.View.draw(View.java:21568)
                                                                                                        at android.view.View.updateDisplayListIfDirty(View.java:20404)
2024-03-14 13:08:11.510 16199-16199 AndroidRuntime          com.wolt.android.master              E      at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4432)
                                                                                                        at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4405)
                                                                                                        at android.view.View.updateDisplayListIfDirty(View.java:20355)
                                                                                                        at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4432)
                                                                                                        at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4405)
                                                                                                        at android.view.View.updateDisplayListIfDirty(View.java:20355)
                                                                                                        at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4432)
                                                                                                        at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4405)
                                                                                                        at android.view.View.updateDisplayListIfDirty(View.java:20355)
                                                                                                        at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4432)
                                                                                                        at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4405)
                                                                                                        at android.view.View.updateDisplayListIfDirty(View.java:20355)
                                                                                                        at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4432)
                                                                                                        at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4405)
                                                                                                        at android.view.View.updateDisplayListIfDirty(View.java:20355)
                                                                                                        at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4432)
                                                                                                        at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4405)
                                                                                                        at android.view.View.updateDisplayListIfDirty(View.java:20355)
                                                                                                        at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4432)
                                                                                                        at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4405)
                                                                                                        at android.view.View.updateDisplayListIfDirty(View.java:20355)
                                                                                                        at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4432)
                                                                                                        at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4405)
                                                                                                        at android.view.View.updateDisplayListIfDirty(View.java:20355)
                                                                                                        at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4432)
                                                                                                        at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4405)
                                                                                                        at android.view.View.updateDisplayListIfDirty(View.java:20355)
                                                                                                        at android.view.ThreadedRenderer.updateViewTreeDisplayList(ThreadedRenderer.java:575)
                                                                                                        at android.view.ThreadedRenderer.updateRootDisplayList(ThreadedRenderer.java:581)
                                                                                                        at android.view.ThreadedRenderer.draw(ThreadedRenderer.java:654)
                                                                                                        at android.view.ViewRootImpl.draw(ViewRootImpl.java:3816)
                                                                                                        at android.view.ViewRootImpl.performDraw(ViewRootImpl.java:3620)
                                                                                                        at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2940)
                                                                                                        at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1811)
                                                                                                        at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:7970)
                                                                                                        at android.view.Choreographer$CallbackRecord.run(Choreographer.java:967)
                                                                                                        at android.view.Choreographer.doCallbacks(Choreographer.java:791)
                                                                                                        at android.view.Choreographer.doFrame(Choreographer.java:726)
                                                                                                        at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:952)
                                                                                                        at android.os.Handler.handleCallback(Handler.java:883)
                                                                                                        at android.os.Handler.dispatchMessage(Handler.java:100)
                                                                                                        at android.os.Looper.loop(Looper.java:214)
                                                                                                        at android.app.ActivityThread.main(ActivityThread.java:7417)
                                                                                                        at java.lang.reflect.Method.invoke(Native Method)
                                                                                                        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492)
                                                                                                        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:980)

What version of Lottie did you test this on? 6.3.0

What version of Android did you test this on? Android 10, API 29

Steps To Reproduce Steps to reproduce the behavior:

  1. Add the following code to a Compose project

           val composition = rememberLottieComposition(LottieCompositionSpec.RawRes(R.raw.existing_account))
    
            LottieAnimation(
                modifier = Modifier
                    .padding(vertical = 2.u())
                    .aspectRatio(1.5f),
                composition = composition.value,
                iterations = LottieConstants.IterateForever
            )
  2. Run the app, navigate to the screen where this LottieAnimation lives

  3. The app crashes existing_account.json