Android应用模拟器安装失败:SAVED_STATE_REGISTRY_OWNER_KEY异常排查
解决CreationExtras缺少SAVED_STATE_REGISTRY_OWNER_KEY崩溃问题
核心修复步骤
1. 统一Hilt与AndroidX Hilt依赖版本
当前使用的Hilt版本为2.45,但androidx.hilt:hilt-compiler版本是1.0.0,二者版本不兼容会导致SavedState相关参数传递失败。修改build.gradle(Module:app)中的依赖:
dependencies { // 保持Hilt版本一致 implementation("com.google.dagger:hilt-android:2.45") kapt("com.google.dagger:hilt-android-compiler:2.45") // 升级androidx.hilt到匹配版本 kapt("androidx.hilt:hilt-compiler:1.1.0") }
2. 确保Fragment正确获取ViewModel
从错误栈看,崩溃发生在RegisterFragment获取ViewModel时,必须使用Hilt支持的viewModels()委托,避免手动创建ViewModelProvider:
// 在RegisterFragment.kt中声明ViewModel private val viewModel: RegisterViewModel by viewModels()
3. 升级Navigation依赖版本
当前使用的Navigation 2.4.2与Hilt 2.45存在兼容性问题,升级到2.5.0+版本可解决SavedStateRegistryOwner传递异常:
dependencies { implementation("androidx.navigation:navigation-fragment-ktx:2.5.0") }
4. 清理重建项目
- 执行
File -> Invalidate Caches... -> Invalidate and Restart - 运行
Build -> Clean Project后再执行Rebuild Project
错误原因
该崩溃是因为ViewModel初始化时无法获取SAVED_STATE_REGISTRY_OWNER_KEY对应的实例,通常由以下情况引发:
- Hilt与AndroidX Hilt版本不匹配,导致HiltViewModelFactory无法正确处理SavedState参数
- Navigation版本过旧,无法在Fragment导航流程中正确传递SavedStateRegistryOwner
- Fragment获取ViewModel的方式不符合Hilt规范
内容的提问来源于stack exchange,提问作者Nisa Kirani
相关产品推荐
相关产品推荐

