【发布时间】:2020-12-10 09:23:03
【问题描述】:
我正在尝试将大型应用程序移动到视图绑定。我们在很多领域都在使用 dagger.android,所以我猜 View Binding 和 dagger 表现不佳。这是我得到的错误:
Type net.myapp.base.abstracts.vb.BaseFragmentVB_MembersInjector is defined multiple times:
Users/anshsachdeva/Desktop/android/myapp-android/feature/search/build/intermediates/runtime_library_classes_jar/stagingDebug/classes.jar:net/myapp/base/abstracts/vb/BaseFragmentVB_MembersInjector.class, /
Users/anshsachdeva/Desktop/android/myapp-android/feature/flashcard/build/intermediates/runtime_library_classes_jar/stagingDebug/classes.jar:net/myapp/base/abstracts/vb/BaseFragmentVB_MembersInjector.class
一些上下文:
该应用程序使用经典的干净架构,其中所有子活动、片段等都从基类扩展。该项目还有多个功能模块,如app、base、feature/search、feature/flashcard、domain 等。基类驻留在base 模块中,而从它们扩展的类驻留在它们的关联模块中,例如feature/search。
为了支持视图绑定,我添加了一些中间抽象类,它们将充当 Viewbinding 的持有者:将膨胀的视图传递给父级,同时处理视图绑定实例的生命周期,并同时提供对子级的安全访问。我只将它们保留在基类模块中。
现在一切正常,子类能够访问基本视图绑定类,但是当我尝试构建项目时,会发生此错误。我不确定为什么会这样?
(PS:我在几个分支上工作。视图绑定代码在其中一个分支中。上周我制作了这段代码,构建并运行它,它正在工作。然后我切换了分支并开始处理其他事情. 这周,我回到同一个分支,代码没有构建)
【问题讨论】:
-
您是否尝试过删除构建文件夹?可能是您的其他分支生成的某些文件发生冲突,应该删除
-
@BasilePerrenoud 我尝试在项目上运行 clean,但没有帮助。实际上,每个模块都在生成自己的构建文件夹,我猜测在 clean 运行时会删除该文件夹。让我尝试手动清理它们
-
如果它与以前的代码完全一样,那一定是你的环境的问题吧?您的任何依赖项是否使用了可能已更新的非特定版本(如
1.+)?任何可能发生变化的本地库?
标签: android kotlin dagger-2 dagger android-viewbinding