Android R8 minify:多次定义的类型

Android R8 minify:多次定义的类型,android,android-room,android-r8,Android,Android Room,Android R8,在构建签名版本APK时,我遇到以下错误: .gradle/caches/transforms-2/files-2.1/532a317ccd54c8ae4f622faeb8b534a9/jetified-wordup-core-0.2.1-runtime.jar:de/codereddev/wordup/database/WordDao_Impl$5.class, Type de.codereddev.wordup.database.WordDao_Impl$5 is defined multip

在构建签名版本APK时,我遇到以下错误:

.gradle/caches/transforms-2/files-2.1/532a317ccd54c8ae4f622faeb8b534a9/jetified-wordup-core-0.2.1-runtime.jar:de/codereddev/wordup/database/WordDao_Impl$5.class,
Type de.codereddev.wordup.database.WordDao_Impl$5 is defined multiple times:
/home/codered_dev/.gradle/caches/transforms-2/files-2.1/532a317ccd54c8ae4f622faeb8b534a9/jetified-wordup-core-0.2.1-runtime.jar:de/codereddev/wordup/database/WordDao_Impl$5.class,
/home/codered_dev/MySoundboardApp/app/build/intermediates/javac/release/classes/de/codereddev/wordup/database/WordDao_Impl$5.class
这个房间刀的定义来自我自己创造的一个房间

查看
.jar
文件,我可以找到以下内容:

这只会在发布时发生。我仍然可以构建和运行调试,没有任何问题

不幸的是,我找不到错误。希望这里的任何人都能给我一个提示

我首先假设这可能是因为库包含房间数据库的标准定义,而我使用库的应用程序包含自己的自定义定义,其中包含相同的DAO。因此注释处理器可能会处理DAO两次。但我无法正确地检查这个


如果知道这一点很重要:我也在使用Koin进行依赖注入。

不幸的是,我不知道确切原因,但我通过从库中删除Room kaptCompiler使库正常工作,而只是将其放在使用库的应用程序中。

如果不同模块使用相同的包,则可能会发生这种情况,例如,库和使用库的应用程序都使用
org.foo.bar
作为包。如果使用不同的软件包,错误就会消失。

您好,我在R8团队工作,有一个问题。您上面引用的消息(
Type de.codereddev.wordup.database.WordDao_Impl$5被多次定义:/home/codered_dev/.gradle/caches/transforms-2/files-2.1/532a317ccd54c8ae4f622faeb8b534a9/jetified-wordup-core-0.2.1-runtime.jar:de/codereddev/wordup/database/WordDao_Impl$5.class,
)以
结尾。应该有一个对第二个类的引用,其中也有定义。你能再次检查错误消息中是否有第二个类引用吗?@sgjesse我已经编辑了扩展错误消息的帖子。更新显示类
de.codereddev.wordup.database.WordDao_Impl$5
在1)依赖项
jetified-wordup-core-0.2.1-runtime
和应用程序代码本身中
app/build/intermediates/javac/release/classes/de/codereddev/wordup/database/WordDao_Impl$5.class
。对于R8,不能有重复的类。很可能您不需要定义两次DAO。这可能是因为在框架中有一个
RoomDatabase
(RD)定义包含DAO的getter,并且应用程序有自己的RD定义,其中也包含DAO的getter?否则这就没有意义了,因为应用程序中没有DAO类的定义。