android R8 minify:多次定义类型

pkln4tw6  于 12个月前  发布在  Android
关注(0)|答案(3)|浏览(133)

当建立一个签名的释放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

字符串
这个Room DAO定义来自我自己创建的library
查看.jar文件,可以发现:


的数据
这只会发生在发布时,我仍然可以构建和运行调试,没有任何问题。
很不幸我找不到错误。希望这里的任何人能给我一些提示。
我首先假设这可能是由于库包含Room数据库的标准定义,而我使用库的应用程序包含自己的自定义定义,这些自定义定义包含相同的DAO。因此注解处理器可能会处理DAO两次。但我无法正确检查这一点。
如果需要知道的话:我也在使用Koin进行依赖注入。

anauzrmj

anauzrmj1#

不幸的是,我不知道确切的原因,但我得到了图书馆的工作,从图书馆中删除房间kaptalker,而不是只有它在应用程序中使用的图书馆。

vsikbqxv

vsikbqxv2#

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

ipakzgxi

ipakzgxi3#

我解决了这个问题:
在我的lib-base中,我有一个WordDao(baseDatabase),

abstract fun dao(): WordDao

字符串
但是在我的module-word(wordDatabase)中,

abstract fun dao(): WordDao


所以,在我删除module-word中的abstract fun dao(): WordDao之后,我解决了这个问题

相关问题