KMP Windows端使用Navigation3打包后运行启动失败
KMP项目Windows打包exe后启动报错
问题描述
基于Navigation3开发的KMP项目,在Android Studio中运行完全正常,执行gradle createDistributable命令无异常,但执行gradle packageReleaseDistributionForCurrentOS打包生成exe安装包并安装后,启动程序时出现报错。
相关代码
First Screen
@Composable fun FirstScreen() { Column( modifier = Modifier.fillMaxSize() ) { Toolbar() } } @OptIn(ExperimentalMaterial3Api::class) @Composable private fun Toolbar() { TopAppBar( title = { Text("First") }, colors = TopAppBarDefaults.topAppBarColors( containerColor = MaterialTheme.colorScheme.primary, titleContentColor = MaterialTheme.colorScheme.onPrimary, navigationIconContentColor = MaterialTheme.colorScheme.onPrimary, actionIconContentColor = MaterialTheme.colorScheme.onPrimary ) ) }
AppNav
@Serializable data object First : NavKey @Composable fun EntryProviderScope<NavKey>.FirstEntry(backStack: NavBackStack<NavKey>) { entry<First> { FirstScreen() } }
NavDisplay
@Composable fun NavDisplay(backStack: NavBackStack<NavKey>) { val animationSpec = tween<IntOffset>(500) NavDisplay( backStack = backStack, onBack = { backStack.removeLastOrNull() }, entryDecorators = listOf( rememberSaveableStateHolderNavEntryDecorator(), rememberViewModelStoreNavEntryDecorator() ), entryProvider = entryProvider { FirstEntry(backStack) }, transitionSpec = { slideInHorizontally( initialOffsetX = { it }, animationSpec = animationSpec ) togetherWith slideOutHorizontally( targetOffsetX = { -it }, animationSpec = animationSpec ) }, popTransitionSpec = { slideInHorizontally( initialOffsetX = { -it }, animationSpec = animationSpec ) togetherWith slideOutHorizontally( targetOffsetX = { it }, animationSpec = animationSpec ) }, predictivePopTransitionSpec = { slideInHorizontally( initialOffsetX = { -it }, animationSpec = animationSpec ) togetherWith slideOutHorizontally( targetOffsetX = { it }, animationSpec = animationSpec ) } ) }
App
@Composable fun App() = KoinApplication( configuration = KoinConfiguration { modules(appModule) }, content = { MaterialTheme { val backStack = rememberNavBackStack( SavedStateConfiguration { serializersModule = SerializersModule { polymorphic(NavKey::class) { subclass(First::class, First.serializer()) } } }, First ) NavDisplay(backStack) } } )
报错截图

内容的提问来源于stack exchange,提问作者Sam Chen
相关产品推荐
相关产品推荐

