7

构建签名版本 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 定义来自我自己创建的一个库。

查看.jar文件我可以找到这个:

在此处输入图像描述

这仅在发布时发生。我仍然可以毫无问题地构建和运行调试。

不幸的是我找不到错误。希望这里的任何人都可以对我有所提示。

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

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

4

3 回答 3

3

不幸的是,我不完全知道原因,但我通过从库中删除 Room kaptCompiler 来让库正常工作,而只在使用库的应用程序中使用它。

于 2020-08-29T12:13:41.397 回答
1

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

于 2021-04-26T05:05:54.963 回答
0

我解决了这个问题:

在我的lib-base,我有一个WordDao(baseDatabase),

abstract fun dao(): WordDao

但在我的module-word(wordDatabase)中,也有一个

abstract fun dao(): WordDao

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

于 2021-08-05T03:27:53.463 回答