目录
- 升级Android Studio和Gradle版本
- Hilt版本升级
- 编译通过,但是运行报错` SAVED_STATE_REGISTRY_OWNER_KEY`
- 总结
升级Android Studio和Gradle版本
升级到 Android Studio Dolphin | 2021.3.1 版本之后,gradle版本的推荐设置是7.4,于是便一同升级了。
Android Studio 提供升级的功能
Hilt版本升级
升级助手会自动帮你把 hilt-android-gradle-plugin
升级到 2.40.1。
此时直接运行项目应该是正常的。
如果编译不通过,可以尝试将Hilt的版本同步到官网的最新版本。
点此查看:https://dagger.dev/hilt/gradle-setup
编译通过,但是运行报错 SAVED_STATE_REGISTRY_OWNER_KEY
如果build没有问题但是一运行就闪退,并且报错如下:
java.lang.IllegalArgumentException: CreationExtras must have a value by SAVED_STATE_REGISTRY_OWNER_KEY
那么问题其实不在hilt版本上了,需要升级的则是以下依赖
implementation "androidx.activity:activity-ktx:1.4.0"
implementation "androidx.fragment:fragment-ktx:1.4.1"
将他们分别升级至1.5.+,报错消失。
implementation "androidx.activity:activity-ktx:1.5.1"
implementation "androidx.fragment:fragment-ktx:1.5.2"
总结
每次升级gradle大概率会遇到hilt的版本问题,需要注意hilt版本和gradle版本的对应更新。
但是这次反而是因为其他组件没更新导致的问题。
关于 CreationExtras ,lifecycle 2.5.0-alpha01 开始引入了 CreationExtras 的概念,它替代了 Factory 的任务为 VM 初始化所需的参数,Factory 无需再持有状态。
详情可自行参考官方文档。