Android多Flavor环境下HomeViewModel导入路径不一致问题求助
解决不同Flavor下ViewModel导入路径不一致的问题
根本原因是core和foss两个Flavor下的HomeViewModel包结构不统一:core的类在viewmodels根包,foss的类在com.blazecode.tsviewer.viewmodels带前缀的包,导致编译时类路径解析不同,必须用不同的导入语句。
解决方案:统一包结构
将core Flavor下的HomeViewModel文件,移动到与foss一致的包路径中:
- 原core路径:
src/core/java/viewmodels/HomeViewModel.kt - 修改后路径:
src/core/java/com/blazecode/tsviewer/viewmodels/HomeViewModel.kt
完成后,两个Flavor的HomeViewModel全限定包名都为com.blazecode.tsviewer.viewmodels,此时不管切换哪个Flavor,都可以统一使用:
import com.blazecode.tsviewer.viewmodels.HomeViewModel
可选优化:简化导入(按需使用)
如果觉得全路径导入繁琐,可以在HomeScreen文件顶部添加包别名:
import com.blazecode.tsviewer.viewmodels as vm
之后使用ViewModel时可以简写为vm.HomeViewModel。
关于现有配置的说明
你当前的sourceSets配置无需修改,只要确保两个Flavor的Java目录下包结构统一,Gradle会自动正确加载对应Flavor的类文件。
内容的提问来源于stack exchange,提问作者BlazeCodeDev
相关产品推荐
相关产品推荐

