`MissingResourceException` after updating to v1.6.10 and. Kotlin 2.0.0
Describe the bug
After I updated to Compose Multiplatform v1.6.10 (from v1.6.2) and Kotlin v2.0.0, my test flight builds started to crash. I have tried building the project locally and it's working fine with debug and release builds after the update. But when it's released to TestFlight from GH Action, it fails with the following error. I haven't had this issue before. My project is open source, here is the link to the workflow I am using to build and deploy to Test Flight.
Affected platforms
- iOS
Versions
- Compose Multiplatform version: 1.6.10
- Kotlin version: 2.0.0
- OS version(s) (required for Desktop and iOS issues): 17.5
- OS architecture (x86 or arm64): arm64
- Device (model or simulator for iOS issues): iPhone 15 Pro
Additional context
0 Twine 0x102c994c0 kfun:org.jetbrains.compose.resources.MissingResourceException#<init>(kotlin.String){} + 188 (ResourceReader.kt:5)
1 Twine 0x102c99b64 kfun:org.jetbrains.compose.resources.object-2.readData#internal + 44 (ResourceReader.ios.kt:28)
2 Twine 0x102c99b64 kfun:org.jetbrains.compose.resources.object-2.read#internal + 1468 (ResourceReader.ios.kt:10)
3 Twine 0x103187744 kfun:org.jetbrains.compose.resources.ResourceReader#read#suspend(kotlin.String;kotlin.coroutines.Continuation<kotlin.ByteArray>){}kotlin.Any-trampoline + 212 (ResourceReader.kt:26)
4 Twine 0x102c9c200 kfun:org.jetbrains.compose.resources.$Font$lambda$3COROUTINE$0.invokeSuspend#internal + 2340 (FontResources.skiko.kt:37)
5 Twine 0x102c9d210 kfun:org.jetbrains.compose.resources.Font$lambda$3#internal + 168 (FontResources.skiko.kt:35)
6 Twine 0x102c9d210 kfun:org.jetbrains.compose.resources.$Font$lambda$3$FUNCTION_REFERENCE$3.invoke#internal + 240 (FontResources.skiko.kt:35)
7 Twine 0x10301f868 kfun:kotlin.coroutines.SuspendFunction1#invoke#suspend(1:0;kotlin.coroutines.Continuation<1:1>){}kotlin.Any?-trampoline + 204 ([K][Suspend]Functions:1)
8 Twine 0x102c95d5c kfun:org.jetbrains.compose.resources.rememberResourceState$lambda$0#internal + 12 (ResourceState.blocking.kt:46)
9 Twine 0x102c95d5c kfun:org.jetbrains.compose.resources.$rememberResourceState$lambda$0$FUNCTION_REFERENCE$0.invoke#internal + 56 (ResourceState.blocking.kt:46)
10 Twine 0x10301f6b0 kfun:kotlin.Function2#invoke(1:0;1:1){}1:2-trampoline + 204 ([K][Suspend]Functions:1)
11 Twine 0x1026208fc <inlined-out:startCoroutineUninterceptedOrReturn> + 300 (IntrinsicsNative.kt:72)
12 Twine 0x1026208fc <inlined-out:<anonymous>> + 300 (IntrinsicsNative.kt:186)
13 Twine 0x1026208fc kfun:kotlin.coroutines.intrinsics.object-3.invokeSuspend#internal + 448 (IntrinsicsNative.kt:254)
14 Twine 0x10261f46c kfun:kotlin.coroutines.native.internal.BaseContinuationImpl#invokeSuspend(kotlin.Result<kotlin.Any?>){}kotlin.Any?-trampoline + 28 (ContinuationImpl.kt:50)
15 Twine 0x10261f46c <inlined-out:<anonymous>> + 44 (ContinuationImpl.kt:30)
16 Twine 0x10261f46c <inlined-out:with> + 44 (Standard.kt:70)
17 Twine 0x10261f46c kfun:kotlin.coroutines.native.internal.BaseContinuationImpl#resumeWith(kotlin.Result<kotlin.Any?>){} + 172 (ContinuationImpl.kt:26)
18 Twine 0x10273ddfc <inlined-out:<anonymous>> + 256 (DispatchedTask.kt:0)
19 Twine 0x10273ddfc <inlined-out:withContinuationContext> + 256 (CoroutineContext.kt:44)
20 Twine 0x10273ddfc kfun:kotlinx.coroutines.DispatchedTask#run(){} + 452 (DispatchedTask.kt:86)
21 Twine 0x10270bc5c <inlined-out:<anonymous>> + 8 (EventLoop.common.kt:277)
22 Twine 0x10270bc5c <inlined-out:<anonymous>> + 8 (Dispatchers.kt:104)
23 Twine 0x10270bc5c <inlined-out:autoreleasepool> + 16 (ObjectiveCUtils.kt:13)
24 Twine 0x10270bc5c kfun:kotlinx.coroutines#platformAutoreleasePool(kotlin.Function0<kotlin.Unit>){} + 16 (Dispatchers.kt:104)
25 Twine 0x10270bc5c kfun:kotlinx.coroutines.EventLoopImplBase#processNextEvent(){}kotlin.Long + 956 (EventLoop.common.kt:277)
26 Twine 0x10274a508 kfun:kotlinx.coroutines.EventLoop#processNextEvent(){}kotlin.Long-trampoline + 20 (EventLoop.common.kt:49)
27 Twine 0x10274a508 kfun:kotlinx.coroutines.BlockingCoroutine.joinBlocking#internal + 128 (Builders.kt:129)
28 Twine 0x10274a508 kfun:kotlinx.coroutines#runBlocking(kotlin.coroutines.CoroutineContext;kotlin.coroutines.SuspendFunction1<kotlinx.coroutines.CoroutineScope,0:0>){0§<kotlin.Any?>}0:0 + 1048 (Builders.kt:68)
29 Twine 0x102c9b88c kfun:kotlinx.coroutines#runBlocking$default(kotlin.coroutines.CoroutineContext?;kotlin.coroutines.SuspendFunction1<kotlinx.coroutines.CoroutineScope,0:0>;kotlin.Int){0§<kotlin.Any?>}0:0 + 16 (Builders.kt:45)
30 Twine 0x102c9b88c <inlined-out:<anonymous>> + 48 (ResourceState.blocking.kt:46)
31 Twine 0x102c9b88c <inlined-out:<anonymous>> + 104 (Composer.kt:1119)
32 Twine 0x102c9b88c <inlined-out:let> + 104 (Standard.kt:112)
33 Twine 0x102c9b88c <inlined-out:cache> + 104 (Composer.kt:1117)
34 Twine 0x102c9b88c kfun:org.jetbrains.compose.resources#rememberResourceState(kotlin.Any;kotlin.Any;kotlin.Any;kotlin.Function0<0:0>;kotlin.coroutines.SuspendFunction1<org.jetbrains.compose.resources.ResourceEnvironm... + 104 (ResourceState.blocking.kt:44)
35 Twine 0x102c9b88c kfun:org.jetbrains.compose.resources#Font(org.jetbrains.compose.resources.FontResource;androidx.compose.ui.text.font.FontWeight?;androidx.compose.ui.text.font.FontStyle;androidx.compose.runtime.Com... + 1808 (FontResources.skiko.kt:35)
36 Twine 0x1030106b8 kfun:dev.sasikanth.rss.reader.ui.<get-GolosFontFamily>#internal + 304 (AppTheme.kt:69)
37 Twine 0x1030106b8 kfun:dev.sasikanth.rss.reader.ui#AppTheme(dev.sasikanth.rss.reader.ui.AppColorScheme?;kotlin.Function2<androidx.compose.runtime.Composer,kotlin.Int,kotlin.Unit>;androidx.compose.runtime.Composer?;k... + 976 (AppTheme.kt:41)
38 Twine 0x102f3ea90 kfun:dev.sasikanth.rss.reader.components#DynamicContentTheme(dev.sasikanth.rss.reader.components.DynamicColorState;kotlin.Function2<androidx.compose.runtime.Composer,kotlin.Int,kotlin.Unit>;android... + 1128 (DynamicContentTheme.kt:94)
39 Twine 0x102f25180 kfun:dev.sasikanth.rss.reader.app.App$lambda$4#internal + 228 (App.kt:76)
40 Twine 0x102f25180 kfun:dev.sasikanth.rss.reader.app.$App$lambda$4$FUNCTION_REFERENCE$1.invoke#internal + 256 (App.kt:75)
41 Twine 0x102f25180 kfun:dev.sasikanth.rss.reader.app.$App$lambda$4$FUNCTION_REFERENCE$1.$<bridge-UNNNB>invoke(androidx.compose.runtime.Composer;kotlin.Int){}#internal + 316 (App.kt:75)
42 Twine 0x10301f6b0 kfun:kotlin.Function2#invoke(1:0;1:1){}1:2-trampoline + 204 ([K][Suspend]Functions:1)
43 Twine 0x1027db30c kfun:androidx.compose.runtime.internal.ComposableLambdaImpl#invoke(androidx.compose.runtime.Composer;kotlin.Int){}kotlin.Any? + 272 (ComposableLambda.jb.kt:107)
44 Twine 0x1027e0474 kfun:androidx.compose.runtime.internal.ComposableLambdaImpl#$<bridge-NNNNB>invoke(androidx.compose.runtime.Composer;kotlin.Int){}kotlin.Any?(androidx.compose.runtime.Composer;kotlin.Any?){}kotlin.Any? + 64 (ComposableLambda.jb.kt:33)
45 Twine 0x10301f6b0 kfun:kotlin.Function2#invoke(1:0;1:1){}1:2-trampoline + 204 ([K][Suspend]Functions:1)
46 Twine 0x10277b754 kfun:androidx.compose.runtime#CompositionLocalProvider(kotlin.Array<out|androidx.compose.runtime.ProvidedValue<*>>...;kotlin.Function2<androidx.compose.runtime.Composer,kotlin.Int,kotlin.Unit>;andr... + 496 (CompositionLocal.kt:228)
47 Twine 0x102f24940 kfun:dev.sasikanth.rss.reader.app#App(dev.sasikanth.rss.reader.app.AppPresenter;dev.sasikanth.rss.reader.share.ShareHandler;dev.sasikanth.rss.reader.platform.LinkHandler;coil3.ImageLoader;androidx.... + 6524 (App.kt:70)
48 Twine 0x102ef5eb4 kfun:dev.sasikanth.rss.reader.di.InjectHomeViewControllerComponent.<get-homeViewControllerFactory>$lambda$22$lambda$21#internal + 364 (InjectHomeViewControllerComponent.kt:73)
49 Twine 0x102ef5eb4 kfun:dev.sasikanth.rss.reader.di.InjectHomeViewControllerComponent.$<get-homeViewControllerFactory>$lambda$22$lambda$21$FUNCTION_REFERENCE$22.invoke#internal + 400 (InjectHomeViewControllerComponent.kt:72)
50 Twine 0x102ef5eb4 kfun:dev.sasikanth.rss.reader.di.InjectHomeViewControllerComponent.$<get-homeViewControllerFactory>$lambda$22$lambda$21$FUNCTION_REFERENCE$22.$<bridge-UNNNB>invoke(androidx.compose.runtime.Composer... + 464 (InjectHomeViewControllerComponent.kt:72)
51 Twine 0x10301f6b0 kfun:kotlin.Function2#invoke(1:0;1:1){}1:2-trampoline + 204 ([K][Suspend]Functions:1)
52 Twine 0x1027db30c kfun:androidx.compose.runtime.internal.ComposableLambdaImpl#invoke(androidx.compose.runtime.Composer;kotlin.Int){}kotlin.Any? + 272 (ComposableLambda.jb.kt:107)
53 Twine 0x1027e0474 kfun:androidx.compose.runtime.internal.ComposableLambdaImpl#$<bridge-NNNNB>invoke(androidx.compose.runtime.Composer;kotlin.Int){}kotlin.Any?(androidx.compose.runtime.Composer;kotlin.Any?){}kotlin.Any? + 64 (ComposableLambda.jb.kt:33)
54 Twine 0x10301f6b0 kfun:kotlin.Function2#invoke(1:0;1:1){}1:2-trampoline + 204 ([K][Suspend]Functions:1)
55 Twine 0x103013d70 kfun:dev.sasikanth.rss.reader.HomeViewController$lambda$2$lambda$1#internal + 160 (HomeViewController.kt:41)
56 Twine 0x103013d70 kfun:dev.sasikanth.rss.reader.$HomeViewController$lambda$2$lambda$1$FUNCTION_REFERENCE$2.invoke#internal + 184 (HomeViewController.kt:40)
57 Twine 0x103013d70 kfun:dev.sasikanth.rss.reader.$HomeViewController$lambda$2$lambda$1$FUNCTION_REFERENCE$2.$<bridge-UNNNB>invoke(androidx.compose.runtime.Composer;kotlin.Int){}#internal + 244 (HomeViewController.kt:40)
58 Twine 0x10301f6b0 kfun:kotlin.Function2#invoke(1:0;1:1){}1:2-trampoline + 204 ([K][Suspend]Functions:1)
59 Twine 0x1027db30c kfun:androidx.compose.runtime.internal.ComposableLambdaImpl#invoke(androidx.compose.runtime.Composer;kotlin.Int){}kotlin.Any? + 272 (ComposableLambda.jb.kt:107)
60 Twine 0x1027e0474 kfun:androidx.compose.runtime.internal.ComposableLambdaImpl#$<bridge-NNNNB>invoke(androidx.compose.runtime.Composer;kotlin.Int){}kotlin.Any?(androidx.compose.runtime.Composer;kotlin.Any?){}kotlin.Any? + 64 (ComposableLambda.jb.kt:33)
61 Twine 0x10301f6b0 kfun:kotlin.Function2#invoke(1:0;1:1){}1:2-trampoline + 204 ([K][Suspend]Functions:1)
62 Twine 0x102beed40 <inlined-out:<anonymous>> + 48 (PredictiveBackGestureOverlay.kt:99)
63 Twine 0x102beed40 <inlined-out:<anonymous>> + 48 (Box.kt:74)
64 Twine 0x102beed40 <inlined-out:ReusableComposeNode> + 48 (Composables.kt:466)
65 Twine 0x102beed40 <inlined-out:Layout> + 48 (Layout.kt:82)
66 Twine 0x102beed40 <inlined-out:Box> + 48 (Box.kt:73)
67 Twine 0x102beed40 kfun:com.arkivanov.decompose.extensions.compose.stack.animation.predictiveback#PredictiveBackGestureOverlay(com.arkivanov.essenty.backhandler.BackDispatcher;kotlin.Function4<kotlin.Float,com.arkiva... + 3624 (PredictiveBackGestureOverlay.kt:73)
68 Twine 0x103013c28 kfun:dev.sasikanth.rss.reader.HomeViewController$lambda$2#internal + 416 (HomeViewController.kt:36)
69 Twine 0x103013c28 kfun:dev.sasikanth.rss.reader.$HomeViewController$lambda$2$FUNCTION_REFERENCE$1.invoke#internal + 436 (HomeViewController.kt:35)
70 Twine 0x103013c28 kfun:dev.sasikanth.rss.reader.$HomeViewController$lambda$2$FUNCTION_REFERENCE$1.$<bridge-UNNNB>invoke(androidx.compose.runtime.Composer;kotlin.Int){}#internal + 500 (HomeViewController.kt:35)
71 Twine 0x10301f6b0 kfun:kotlin.Function2#invoke(1:0;1:1){}1:2-trampoline + 204 ([K][Suspend]Functions:1)
72 Twine 0x1027db30c kfun:androidx.compose.runtime.internal.ComposableLambdaImpl#invoke(androidx.compose.runtime.Composer;kotlin.Int){}kotlin.Any? + 272 (ComposableLambda.jb.kt:107)
73 Twine 0x1027e0474 kfun:androidx.compose.runtime.internal.ComposableLambdaImpl#$<bridge-NNNNB>invoke(androidx.compose.runtime.Composer;kotlin.Int){}kotlin.Any?(androidx.compose.runtime.Composer;kotlin.Any?){}kotlin.Any? + 64 (ComposableLambda.jb.kt:33)
74 Twine 0x10301f6b0 kfun:kotlin.Function2#invoke(1:0;1:1){}1:2-trampoline + 204 ([K][Suspend]Functions:1)
75 Twine 0x10277b754 kfun:androidx.compose.runtime#CompositionLocalProvider(kotlin.Array<out|androidx.compose.runtime.ProvidedValue<*>>...;kotlin.Function2<androidx.compose.runtime.Composer,kotlin.Int,kotlin.Unit>;andr... + 496 (CompositionLocal.kt:228)
76 Twine 0x102ac1b8c <inlined-out:<anonymous>> + 780 (ComposeContainer.uikit.kt:441)
77 Twine 0x102ac1b8c <inlined-out:with> + 780 (Standard.kt:70)
78 Twine 0x102ac1b8c kfun:androidx.compose.ui.window#ProvideContainerCompositionLocals(androidx.compose.ui.window.ComposeContainer;kotlin.Function2<androidx.compose.runtime.Composer,kotlin.Int,kotlin.Unit>;androidx.com... + 1040 (ComposeContainer.uikit.kt:440)
79 Twine 0x102ac1440 kfun:androidx.compose.ui.window.ComposeContainer.createMediator$lambda$1#internal + 212 (ComposeContainer.uikit.kt:350)
80 Twine 0x102ac1440 kfun:androidx.compose.ui.window.ComposeContainer.$createMediator$lambda$1$FUNCTION_REFERENCE$3.invoke#internal + 232 (ComposeContainer.uikit.kt:349)
81 Twine 0x102ac1440 kfun:androidx.compose.ui.window.ComposeContainer.$createMediator$lambda$1$FUNCTION_REFERENCE$3.$<bridge-UNNNB>invoke(androidx.compose.runtime.Composer;kotlin.Int){}#internal + 288 (ComposeContainer.uikit.kt:349)
82 Twine 0x10301f6b0 kfun:kotlin.Function2#invoke(1:0;1:1){}1:2-trampoline + 204 ([K][Suspend]Functions:1)
83 Twine 0x1027db30c kfun:androidx.compose.runtime.internal.ComposableLambdaImpl#invoke(androidx.compose.runtime.Composer;kotlin.Int){}kotlin.Any? + 272 (ComposableLambda.jb.kt:107)
84 Twine 0x1027e0474 kfun:androidx.compose.runtime.internal.ComposableLambdaImpl#$<bridge-NNNNB>invoke(androidx.compose.runtime.Composer;kotlin.Int){}kotlin.Any?(androidx.compose.runtime.Composer;kotlin.Any?){}kotlin.Any? + 64 (ComposableLambda.jb.kt:33)
85 Twine 0x10301f6b0 kfun:kotlin.Function2#invoke(1:0;1:1){}1:2-trampoline + 204 ([K][Suspend]Functions:1)
86 Twine 0x102a5d95c <inlined-out:ReusableComposeNode> + 432 (Composables.kt:466)
87 Twine 0x102a5d95c <inlined-out:Layout> + 732 (Layout.kt:82)
88 Twine 0x102a5d95c kfun:androidx.compose.ui.layout#OverlayLayout(androidx.compose.ui.Modifier;kotlin.Function2<androidx.compose.runtime.Composer,kotlin.Int,kotlin.Unit>;androidx.compose.runtime.Composer?;kotlin.Int){} + 1220 (OverlayLayout.skiko.kt:29)
89 Twine 0x102a5e148 kfun:androidx.compose.ui.node#TrackInteropContainer__at__androidx.compose.ui.node.InteropContainer<0:0>(kotlin.Function2<androidx.compose.runtime.Composer,kotlin.Int,kotlin.Unit>;androidx.compose.r... + 504 (InteropContainer.kt:67)
90 Twine 0x102aaf428 kfun:androidx.compose.ui.scene.ComposeSceneMediator.setContent$lambda$31$lambda$30$lambda$29#internal + 212 (ComposeSceneMediator.uikit.kt:465)
91 Twine 0x102aaf428 kfun:androidx.compose.ui.scene.ComposeSceneMediator.$setContent$lambda$31$lambda$30$lambda$29$FUNCTION_REFERENCE$57.invoke#internal + 232 (ComposeSceneMediator.uikit.kt:464)
92 Twine 0x102aaf428 kfun:androidx.compose.ui.scene.ComposeSceneMediator.$setContent$lambda$31$lambda$30$lambda$29$FUNCTION_REFERENCE$57.$<bridge-UNNNB>invoke(androidx.compose.runtime.Composer;kotlin.Int){}#internal + 292 (ComposeSceneMediator.uikit.kt:464)
93 Twine 0x10301f6b0 kfun:kotlin.Function2#invoke(1:0;1:1){}1:2-trampoline + 204 ([K][Suspend]Functions:1)
94 Twine 0x1027db30c kfun:androidx.compose.runtime.internal.ComposableLambdaImpl#invoke(androidx.compose.runtime.Composer;kotlin.Int){}kotlin.Any? + 272 (ComposableLambda.jb.kt:107)
95 Twine 0x1027e0474 kfun:androidx.compose.runtime.internal.ComposableLambdaImpl#$<bridge-NNNNB>invoke(androidx.compose.runtime.Composer;kotlin.Int){}kotlin.Any?(androidx.compose.runtime.Composer;kotlin.Any?){}kotlin.Any? + 64 (ComposableLambda.jb.kt:33)
96 Twine 0x10301f6b0 kfun:kotlin.Function2#invoke(1:0;1:1){}1:2-trampoline + 204 ([K][Suspend]Functions:1)
97 Twine 0x10277b754 kfun:androidx.compose.runtime#CompositionLocalProvider(kotlin.Array<out|androidx.compose.runtime.ProvidedValue<*>>...;kotlin.Function2<androidx.compose.runtime.Composer,kotlin.Int,kotlin.Unit>;andr... + 496 (CompositionLocal.kt:228)
98 Twine 0x102aa15c8 kfun:androidx.compose.ui.scene.ComposeSceneMediator.ProvideComposeSceneMediatorCompositionLocals#internal + 1016 (ComposeSceneMediator.uikit.kt:491)
99 Twine 0x102aaf61c kfun:androidx.compose.ui.scene.ComposeSceneMediator.setContent$lambda$31$lambda$30#internal + 332 (ComposeSceneMediator.uikit.kt:464)
100 Twine 0x102aaf61c kfun:androidx.compose.ui.scene.ComposeSceneMediator.$setContent$lambda$31$lambda$30$FUNCTION_REFERENCE$58.invoke#internal + 356 (ComposeSceneMediator.uikit.kt:453)
101 Twine 0x102aaf61c kfun:androidx.compose.ui.scene.ComposeSceneMediator.$setContent$lambda$31$lambda$30$FUNCTION_REFERENCE$58.$<bridge-UNNNB>invoke(androidx.compose.runtime.Composer;kotlin.Int){}#internal + 420 (ComposeSceneMediator.uikit.kt:453)
102 Twine 0x10301f6b0 kfun:kotlin.Function2#invoke(1:0;1:1){}1:2-trampoline + 204 ([K][Suspend]Functions:1)
103 Twine 0x1027db30c kfun:androidx.compose.runtime.internal.ComposableLambdaImpl#invoke(androidx.compose.runtime.Composer;kotlin.Int){}kotlin.Any? + 272 (ComposableLambda.jb.kt:107)
104 Twine 0x1027de9c8 kfun:androidx.compose.runtime.internal.ComposableLambdaImpl.invoke$invoke#internal + 52 (ComposableLambda.jb.kt:108)
105 Twine 0x1027de9c8 kfun:androidx.compose.runtime.internal.ComposableLambdaImpl.$invoke$FUNCTION_REFERENCE$0.invoke#internal + 68 (ComposableLambda.jb.kt:108)
106 Twine 0x1027de9c8 kfun:androidx.compose.runtime.internal.ComposableLambdaImpl.$invoke$FUNCTION_REFERENCE$0.$<bridge-UNNNB>invoke(androidx.compose.runtime.Composer;kotlin.Int){}#internal + 120 (ComposableLambda.jb.kt:108)
107 Twine 0x10301f6b0 kfun:kotlin.Function2#invoke(1:0;1:1){}1:2-trampoline + 204 ([K][Suspend]Functions:1)
108 Twine 0x10276980c kfun:androidx.compose.runtime.RecomposeScopeImpl#compose(androidx.compose.runtime.Composer){} + 28 (RecomposeScopeImpl.kt:192)
109 Twine 0x10276980c kfun:androidx.compose.runtime.ComposerImpl.recomposeToGroupEnd#internal + 1428 (Composer.kt:2557)
110 Twine 0x10276b584 kfun:androidx.compose.runtime.ComposerImpl#skipCurrentGroup(){} + 376 (Composer.kt:2828)
111 Twine 0x10276f118 <inlined-out:<anonymous>> + 252 (Composer.kt:3315)
112 Twine 0x10276f118 kfun:androidx.compose.runtime#observeDerivedStateRecalculations(androidx.compose.runtime.DerivedStateObserver;kotlin.Function0<0:0>){0§<kotlin.Any?>} + 276 (DerivedState.kt:392)
113 Twine 0x10276f118 <inlined-out:<anonymous>> + 1060 (Composer.kt:3300)
114 Twine 0x10276f118 <inlined-out:trace> + 1064 (Trace.kt:48)
115 Twine 0x10276f118 kfun:androidx.compose.runtime.ComposerImpl.doCompose#internal + 1208 (Composer.kt:3277)
116 Twine 0x102778254 kfun:androidx.compose.runtime.ComposerImpl#recompose(androidx.compose.runtime.collection.IdentityArrayMap<androidx.compose.runtime.RecomposeScopeImpl,androidx.compose.runtime.collection.IdentityArr... + 88 (Composer.kt:3266)
117 Twine 0x102778254 <inlined-out:<anonymous>> + 164 (Composition.kt:940)
118 Twine 0x102778254 <inlined-out:guardInvalidationsLocked> + 176 (Composition.kt:1039)
119 Twine 0x102778254 <inlined-out:<anonymous>> + 176 (Composition.kt:933)
120 Twine 0x102778254 <inlined-out:trackAbandonedValues> + 176 (Composition.kt:1207)
121 Twine 0x102778254 <inlined-out:guardChanges> + 176 (Composition.kt:1048)
122 Twine 0x102778254 <inlined-out:<anonymous>> + 196 (Composition.kt:932)
123 Twine 0x102778254 <inlined-out:synchronized> + 204 (Synchronized.kt:175)
124 Twine 0x102778254 <inlined-out:synchronized> + 204 (Synchronization.kt:33)
125 Twine 0x102778254 kfun:androidx.compose.runtime.CompositionImpl#recompose(){}kotlin.Boolean + 340 (Composition.kt:930)
126 Twine 0x102787d7c kfun:androidx.compose.runtime.ControlledComposition#recompose(){}kotlin.Boolean-trampoline + 188 (Composition.kt:231)
127 Twine 0x102787d7c <inlined-out:<anonymous>> + 488 (Recomposer.kt:1155)
128 Twine 0x102787d7c <inlined-out:enter> + 524 (Snapshot.kt:132)
129 Twine 0x102787d7c <inlined-out:composing> + 640 (Recomposer.kt:1224)
130 Twine 0x102787d7c kfun:androidx.compose.runtime.Recomposer.performRecompose#internal + 960 (Recomposer.kt:1147)
131 Twine 0x102787d7c <inlined-out:<anonymous>> + 984 (Recomposer.kt:583)
132 Twine 0x102787d7c <inlined-out:fastForEach> + 1052 (ListUtils.kt:36)
133 Twine 0x102787d7c <inlined-out:<anonymous>> + 1500 (Recomposer.kt:581)
134 Twine 0x102787d7c <inlined-out:trace> + 1504 (Trace.kt:48)
135 Twine 0x102787d7c kfun:androidx.compose.runtime.Recomposer.runRecomposeAndApplyChanges$lambda$4$lambda$3#internal + 1784 (Recomposer.kt:565)
136 Twine 0x102787d7c kfun:androidx.compose.runtime.Recomposer.$runRecomposeAndApplyChanges$lambda$4$lambda$3$FUNCTION_REFERENCE$12.invoke#internal + 1860 (Recomposer.kt:551)
137 Twine 0x102787d7c kfun:androidx.compose.runtime.Recomposer.$runRecomposeAndApplyChanges$lambda$4$lambda$3$FUNCTION_REFERENCE$12.$<bridge-UNNB>invoke(kotlin.Long){}#internal + 1920 (Recomposer.kt:551)
138 Twine 0x10301cdc8 kfun:kotlin.Function1#invoke(1:0){}1:1-trampoline + 204 ([K][Suspend]Functions:1)
139 Twine 0x10275e478 <inlined-out:<anonymous>> + 32 (BroadcastFrameClock.kt:42)
140 Twine 0x10275e478 <inlined-out:runCatching> + 44 (Result.kt:157)
141 Twine 0x10275e478 kfun:androidx.compose.runtime.BroadcastFrameClock.FrameAwaiter.resume#internal + 68 (BroadcastFrameClock.kt:42)
142 Twine 0x10275e478 <inlined-out:<anonymous>> + 164 (BroadcastFrameClock.kt:71)
143 Twine 0x10275e478 <inlined-out:synchronized> + 168 (Synchronized.kt:175)
144 Twine 0x10275e478 <inlined-out:synchronized> + 168 (Synchronization.kt:33)
145 Twine 0x10275e478 kfun:androidx.compose.runtime.BroadcastFrameClock#sendFrame(kotlin.Long){} + 276 (BroadcastFrameClock.kt:62)
146 Twine 0x102a6d774 <inlined-out:<anonymous>> + 412 (BaseComposeScene.skiko.kt:160)
147 Twine 0x102a6d774 <inlined-out:performSnapshotChangesSynchronously> + 412 (SnapshotInvalidationTracker.skiko.kt:94)
148 Twine 0x102a6d774 <inlined-out:<anonymous>> + 476 (BaseComposeScene.skiko.kt:89)
149 Twine 0x102a6d774 <inlined-out:trace> + 1392 (Trace.uikit.kt:52)
150 Twine 0x102a6d774 <inlined-out:postponeInvalidation> + 1392 (BaseComposeScene.skiko.kt:81)
151 Twine 0x102a6d774 kfun:androidx.compose.ui.scene.BaseComposeScene#render(androidx.compose.ui.graphics.Canvas;kotlin.Long){} + 1560 (BaseComposeScene.skiko.kt:152)
152 Twine 0x102aaf81c kfun:androidx.compose.ui.scene.ComposeScene#render(androidx.compose.ui.graphics.Canvas;kotlin.Long){}-trampoline + 208 (ComposeScene.skiko.kt:167)
153 Twine 0x102aaf81c <inlined-out:<anonymous>> + 256 (ComposeSceneMediator.uikit.kt:174)
154 Twine 0x102aaf81c <inlined-out:withSceneOffset> + 320 (ComposeSceneMediator.uikit.kt:182)
155 Twine 0x102aaf81c kfun:androidx.compose.ui.scene.RenderingUIViewDelegateImpl.onRender#internal + 428 (ComposeSceneMediator.uikit.kt:173)
156 Twine 0x102aced3c kfun:androidx.compose.ui.window.MetalRedrawerCallbacks#render(org.jetbrains.skia.Canvas;kotlin.Double){}-trampoline + 196 (MetalRedrawer.uikit.kt:114)
157 Twine 0x102aced3c <inlined-out:<anonymous>> + 524 (MetalRedrawer.uikit.kt:308)
158 Twine 0x102aced3c <inlined-out:also> + 524 (Standard.kt:98)
159 Twine 0x102aced3c <inlined-out:<anonymous>> + 576 (MetalRedrawer.uikit.kt:306)
160 Twine 0x102aced3c <inlined-out:trace> + 592 (Trace.uikit.kt:52)
161 Twine 0x102aced3c <inlined-out:<anonymous>> + 612 (MetalRedrawer.uikit.kt:298)
162 Twine 0x102aced3c <inlined-out:autoreleasepool> + 612 (ObjectiveCUtils.kt:13)
163 Twine 0x102aced3c <inlined-out:<anonymous>> + 2008 (MetalRedrawer.uikit.kt:288)
164 Twine 0x102aced3c <inlined-out:trace> + 2092 (Trace.uikit.kt:52)
165 Twine 0x102aced3c kfun:androidx.compose.ui.window.MetalRedrawer.draw#internal + 2600 (MetalRedrawer.uikit.kt:283)
166 Twine 0x102ad8bf4 kfun:androidx.compose.ui.window.MetalRedrawer#drawSynchronously(){} + 104 (MetalRedrawer.uikit.kt:280)
167 Twine 0x102ad8bf4 kfun:androidx.compose.ui.window.RenderingUIView.updateMetalLayerSize#internal + 3160 (RenderingUIView.uikit.kt:139)
168 Twine 0x102ad7ef0 kfun:androidx.compose.ui.window.RenderingUIView#objc:layoutSubviews + 312 (RenderingUIView.uikit.kt:117)
169 Twine 0x1034c3c48 _6f72672e6a6574627261696e732e636f6d706f73652e75693a75692f6f70742f6275696c644167656e742f776f726b2f386132303736303934356430616562612f636f6d706f73652f75692f75692f7372632f75696b69744d61696e2f6b6f746c69... + 204
170 UIKitCore 0x19945aa4c -[UIView(CALayerDelegate) layoutSublayersOfLayer:] + 1528 (UIView.m:20054)
171 QuartzCore 0x1988b93b4 CA::Layer::layout_if_needed(CA::Transaction*) + 504 (CALayer.mm:10816)
172 QuartzCore 0x1988b8f38 CA::Layer::layout_and_display_if_needed(CA::Transaction*) + 148 (CALayer.mm:2598)
173 QuartzCore 0x1989140e0 CA::Context::commit_transaction(CA::Transaction*, double, double*) + 464 (CAContextInternal.mm:2760)
174 QuartzCore 0x198889028 CA::Transaction::commit() + 648 (CATransactionInternal.mm:432)
175 UIKitCore 0x19960f678 __34-[UIApplication _firstCommitBlock]_block_invoke_2 + 36 (UIApplication.m:12191)
176 CoreFoundation 0x19722ec9c __CFRUNLOOP_IS_CALLING_OUT_TO_A_BLOCK__ + 28 (CFRunLoop.c:1805)
177 CoreFoundation 0x19721cdec __CFRunLoopDoBlocks + 356 (CFRunLoop.c:1847)
178 CoreFoundation 0x19721c498 __CFRunLoopRun + 848 (CFRunLoop.c:2957)
179 CoreFoundation 0x19721bcd8 CFRunLoopRunSpecific + 608 (CFRunLoop.c:3420)
180 GraphicsServices 0x1dc0cc1a8 GSEventRunModal + 164 (GSEvent.c:2196)
181 UIKitCore 0x19985490c -[UIApplication _run] + 888 (UIApplication.m:3713)
182 UIKitCore 0x1999089d0 UIApplicationMain + 340 (UIApplication.m:5303)
183 SwiftUI 0x19b40c148 closure #1 in KitRendererCommon(_:) + 168 (UIKitApp.swift:51)
184 SwiftUI 0x19b3b8714 runApp<A>(_:) + 152 (UIKitApp.swift:14)
185 SwiftUI 0x19b3c44d0 static App.main() + 132 (App.swift:114)
186 Twine 0x1026105a4 static iOSApp.$main() + 28 (iOSApp.swift:0)
187 Twine 0x1026105a4 main + 40
188 dyld 0x1ba8cde4c start + 2240 (dyldMain.cpp:1298)
It seems the same or similar as https://github.com/JetBrains/compose-multiplatform/issues/4736
@mazunin-v-jb, could you try to reproduce it in the attached project? Vlad can help.
FYI IPA also gets uploaded to GH Action, which can be used for debugging the issue.
It's worth noting that this is probably an iOS-only bug. Everything works fine on Android.
Reproduced with Kotlin 2.0.0, on iOS 17.2 (Physical & Simulated), Gradle 8.8-rc-1, Android Studio Koala.
Issue disappears as soon as I downgrade Kotlin to 2.0.0-RC3
https://github.com/JetBrains/compose-multiplatform/issues/4846#issuecomment-2128785786 same issue, Kotlin 2.0.0 does not work, but on 2.0.0-RC3 all good
When I upgrade to Compose 1.6.10 or above, this script is removed from the iOS project file. Maybe that's what's causing the issue.
This seems unrelated to Kotlin 2.x, I got this going from Compose 1.6.0 to 1.6.11. Even after clearing build folder, syncing, cleaning iOS project. Seems like a compose plugin bug not copying/importing the resources correctly
Yeah just reverted the removal of "Copy Pods Resources" from the XCProject file and all working great.
I have the same issue. Reverting the "Copy Pods Resources" does indeed work but in case you make a fresh clone, the iOS project won't be correctly initialised which would force you to manually copy pod files to that new clone.
Same here, when i downgrade from kotlin 2.0.0 to kotlin 2.0.0-RC3. This revert the change that 2.0.0 do in project.pbxproj
duplicates https://github.com/JetBrains/compose-multiplatform/issues/4720
to fix the issue it before the commit will be published:
- open Xcode project
- build ios app
- close Xcode
- call
pod installagain - open xcworkspace
you have to make sure that your project has the
[CP] Copy Pod Resourcesstep
It was already fixed in master and will be available in the next release
If it is different issue feel free to reopen it again but I need a reproducer
Please check the following ticket on YouTrack for follow-ups to this issue. GitHub issues will be closed in the coming weeks.