迁移至androidx.lifecycle 2.8.0库时遭遇编译错误求助
关于Lifecycle 2.7.0升级到2.8.0的编译错误问题
项目依赖变更背景
- 初始依赖配置:
implementation 'androidx.lifecycle:lifecycle-extensions:2.2.0' implementation 'androidx.lifecycle:lifecycle-viewmodel-ktx:2.7.0' annotationProcessor 'androidx.lifecycle:lifecycle-common-java8:2.7.0'
- 替换废弃库后,2.7.0版本可正常编译的配置:
implementation 'androidx.lifecycle:lifecycle-process:2.7.0' implementation 'androidx.lifecycle:lifecycle-viewmodel-ktx:2.7.0' annotationProcessor 'androidx.lifecycle:lifecycle-common-java8:2.7.0'
升级2.8.0遇到的编译错误
升级所有Lifecycle库到2.8.0版本后,编译器报错:
ViewModelProvider(androidx.lifecycle.viewmodel.ViewModelProviderImpl) has private access in 'androidx.lifecycle.ViewModelProvider
出错代码行:
SearchListViewModel viewModel = new ViewModelProvider(this, viewModelFactory).get(SearchListViewModel.class);
问题原因
Lifecycle 2.8.0版本中,ViewModelProvider的部分构造方法访问权限被意外设置为私有。这是一个官方已记录的bug:ViewModel 2.8.0:ViewModelProvider的构造方法拥有私有访问权限,该问题导致Java代码中直接通过new ViewModelProvider(...)实例化对象的方式无法通过编译。
内容的提问来源于stack exchange,提问作者isabsent
相关产品推荐
相关产品推荐

