Android Studio升级Gradle7.4之后Hilt报错的解决

996 阅读1分钟

@TOC

升级Android Studio和Gradle版本

升级到 Android Studio Dolphin | 2021.3.1 版本之后,gradle版本的推荐设置是7.4,于是便一同升级了。

Android Studio 提供升级的功能 gradle update upgrade assistant

Hilt版本升级

升级助手会自动帮你把 hilt-android-gradle-plugin 升级到 2.40.1。 此时直接运行项目应该是正常的。 如果编译不通过,可以尝试将Hilt的版本同步到官网的最新版本。 点此查看:dagger.dev/hilt/gradle…

编译通过,但是运行报错 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 无需再持有状态。 详情可自行参考官方文档。